Первая проблема: Если НЕ ввести в поле email ничего, то высвечивается ошибка о том, что я не ввел email + Неправильный email. Как сделать так, чтоб высвечивалась только ошибка о том, что не введен email?
Вторая проблема появляется при переходе на страницу реги:
Notice: Undefined index: next in E:\Flash\xampp\htdocs\reg.php on line 14
Notice: Undefined variable: errm in E:\Flash\xampp\htdocs\reg.php on line 66 Notice: Undefined variable: errp in E:\Flash\xampp\htdocs\reg.php on line 68 Notice: Undefined index: email in E:\Flash\xampp\htdocs\reg.php</b> on line 65 Notice: Undefined variable: errr in E:\Flash\xampp\htdocs\reg.php on line 74
Ну и проблема намбер три появляется после неправильно введенной инфы:
Notice: Undefined variable: errm in E:\Flash\xampp\htdocs\reg.php on line 18 Notice: Undefined index: rules in E:\Flash\xampp\htdocs\reg.php on line 26
Вот мой рег.пхп (делал все по инструкции):
Code
<?php session_start(); //стартуем сесию
include "conf.php"; //подключаем файл с параметрами БД
/* Подключаемся к БД, если не получаеться, то выводим ошибку */ $data = mysql_connect($base_name, $base_user, $base_pass); if(!mysql_select_db($db_name,$data)){ echo "<BR>"; echo mysql_error(); die(); } //Прверяем на заполнение полей if ($_POST['next']){ //если нажата кнопка далее, то $error=0; // переменная равна 0 //Проверка на мыло if (!$_POST['email']){ $errm = "Вы не ввели e-mail<br>"; $error=1;} if(!preg_match("/^[_\.0-9a-z-]{1,}@[_\.0-9a-z-]{1,}\.[_\.0-9a-z-]{2,}$/", $_POST ["email"])) {$errm .= "Неправильный e-mail"; $error =1;} $c_e = mysql_num_rows(mysql_query("SELECT id_user FROM users where email='".$_POST ["email"]."'")); {if ($c_e>0) {$errm .= "Данный e-mail уже зарегистрирован в игре"; $error=1;}} //Проверка на пароль if(!$_POST ["pass"]) {$errp = "Необходимо указать Ваш пароль<br>"; $error =1;} if(!preg_match("/^[А-Яа-яЁёa-zA-Z0-9]+$/",$_POST ["pass"])) {$errp .= "Пароль содержит запрещенный символ<br>"; $error =1;} if (strlen ($_POST ["pass"])<6 || strlen ($_POST ["pass"])>25){ $errp .="Длина пароля от 6 до 25 символов<br>"; $error =1;} if ($_POST ["pass"]!= $_POST ["pass2"]){ $errp .="Введёные вами пароли не совпадают!"; $error =1;} //проверка на согласие с правилами if (!$_POST['rules']) {$errr = "Вы не согласны с правилами?<br>"; $error=1;} // Нет ошибок, создаём перса if(!$error) { $ip = $_SERVER['REMOTE_ADDR'];//узнаем ip адрес юзера /* Записываем данные в БД */ mysql_query ("INSERT INTO users (pass, ip, email) values('".md5($_POST ["pass"])."','".$ip."','".addslashes($_POST ["email"])."')") or die("Invalid query: " . mysql_error()); session_register("email");//регестрируем сессию email session_register("ip");//регестрируем сессию ip $_SESSION['user'] = $_POST['email']; //записуем email в глобыльную переменную $_SESSION $_SESSION['ip'] = $_POST['ip'];//записуем ip в глобыльную переменную $_SESSION ?> <script>location.href="goreg.php";</script><!-- Переадресовуем на страничку создания чара --> <?php } } // Выводим ошибочки function err($text){ return "<tr valign='middle' align='left'><td colspan='2'><span class='error'>$text</td></tr>"; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="ru" xml:lang="ru"> <head> <meta http-equiv="content-type" content="text/html; charset=windows-1251" /> <meta name="description" content="Браузерная Флеш игра BTG" /> <meta name="keywords" content="игра, флеш, браузер, BTG, игроки." /> <link rel="stylesheet" href="style.css" type="text/css" /> <title>BTG – браузерная онлайн Flash игра</title> </head> <body> <div id="reg"> <form action="" method="post"> <!-- Создаем таблицу с помощью тега table и размещяем по-центру --> <table align="center"> <!-- Создаем строку с помощью тега tr и разбиваем ее на 2 ячейки с помощью тега td --> <tr><td align="left" width="200">E-mail:</td><td><input type="text" value="<?php echo $_POST['email'] ?>" name="email" class="inup"></td></tr> <?php echo err($errm); ?> <tr><td align="left" width="200">Пароль:</td><td><input type="password" value="" name="pass" class="inup"></td></tr> <?php echo err($errp); ?> <tr><td align="left" width="200">Повторите пароль:</td><td><input type="password" value="" name="pass2" class="inup"></td></tr> <!-- Закрываем таблицу --> </table> <!-- Создаем checkbox с именем rukes --> <span><input type="checkbox" class="inup" name="rules"></span> Я обязуюсь соблюдать <A href="lib/law.php" target=_blank><B>Законы игры Test Game</B></A></p> <?php echo err($errr); ?> <input type="submit" name="next" value="Дальше" class="btn"> </form> </div> </body> </html>
Пол дня сидел за компом, но разобрался сам почти во всем, что было под с пойлером. Осталось только сделать так, чтоб если ничего не введено, то не писало, что введено неправильно и убрать 2 надписи. Первая появляеться при переходе на страницу регистрации, вторая если не согласиться с правилами. Notice: Undefined index: next in E:\Flash\xampp\htdocs\reg.php on line 19 Notice: Undefined index: rules in E:\Flash\xampp\htdocs\reg.php on line 32 Помогите плз)) Вот новый рег.пхп - может кому пригодиться (помню на какой-то странице уже задавали похожий вопрос):
Code
<?php session_start(); //стартуем сесию
include "conf.php"; //подключаем файл с параметрами БД
/* Подключаемся к БД, если не получаеться, то выводим ошибку */ $data = mysql_connect($base_name, $base_user, $base_pass); if(!mysql_select_db($db_name,$data)){ echo "<BR>"; echo mysql_error(); die(); } //Прверяем на заполнение полей $errm = " "; $errp = " "; $errr = " "; $errr = " ";
if ($_POST['next']){ //если нажата кнопка далее, то $error=0; // переменная равна 0 //Проверка на мыло if (!$_POST['email']){ $errm .= "Вы не ввели e-mail<br>"; $error=1;} if(!preg_match("/^[_\.0-9a-z-]{1,}@[_\.0-9a-z-]{1,}\.[_\.0-9a-z-]{2,}$/", $_POST ["email"])) {$errm .= "Неправильный e-mail"; $error =1;} $c_e = mysql_num_rows(mysql_query("SELECT id_user FROM users where email='".$_POST ["email"]."'")); {if ($c_e>0) {$errm .= "Данный e-mail уже зарегистрирован в игре"; $error=1;}} //Проверка на пароль if(!$_POST ["pass"]) {$errp .= "Необходимо указать Ваш пароль<br>"; $error =1;} if(!preg_match("/^[А-Яа-яЁёa-zA-Z0-9]+$/",$_POST ["pass"])) {$errp .= "Пароль содержит запрещенный символ<br>"; $error =1;} if (strlen ($_POST ["pass"])<6 || strlen ($_POST ["pass"])>25){ $errp .="Длина пароля от 6 до 25 символов<br>"; $error =1;} if ($_POST ["pass"]!= $_POST ["pass2"]){ $errp .="Введёные вами пароли не совпадают!"; $error =1;} //проверка на согласие с правилами if (!$_POST['rules']) {$errr .= "Вы не согласны с правилами?<br>"; $error=1;} // Нет ошибок, создаём перса if(!$error) { $ip = $_SERVER['REMOTE_ADDR'];//узнаем ip адрес юзера /* Записываем данные в БД */ mysql_query ("INSERT INTO users (pass, ip, email) values('".md5($_POST ["pass"])."','".$ip."','".addslashes($_POST ["email"])."')") or die("Invalid query: " . mysql_error()); session_register("email");//регестрируем сессию email session_register("ip");//регестрируем сессию ip $_SESSION['user'] = $_POST['email']; //записуем email в глобыльную переменную $_SESSION $_SESSION['ip'] = $_POST['ip'];//записуем ip в глобыльную переменную $_SESSION ?> <script>location.href="goreg.php";</script><!-- Переадресовуем на страничку создания чара --> <?php } } // Выводим ошибочки function err($text){ return "<tr valign='middle' align='left'><td colspan='2'><span class='error'>$text</td></tr>"; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="ru" xml:lang="ru"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta name="description" content="Браузерная Флеш игра BTG" /> <meta name="keywords" content="игра, флеш, браузер, BTG, игроки." /> <link rel="stylesheet" href="style.css" type="text/css" /> <title>BTG – браузерная онлайн Flash игра</title> </head> <body> <div id="reg"> <form action="" method="post"> <!-- Создаем таблицу с помощью тега table и размещяем по-центру --> <table align="center"> <!-- Создаем строку с помощью тега tr и разбиваем ее на 2 ячейки с помощью тега td --> <tr><td align="left" width="200">E-mail:</td><td><input type="text" value="<?php if(isset($_POST['email'])) {echo $_POST['email']; } ?>" name="email" class="inup"></td></tr> <?php echo err($errm); ?> <tr><td align="left" width="200">Пароль:</td><td><input type="password" value="" name="pass" class="inup"></td></tr> <?php echo err($errp); ?> <tr><td align="left" width="200">Повторите пароль:</td><td><input type="password" value="" name="pass2" class="inup"></td></tr> <!-- Закрываем таблицу --> </table> <!-- Создаем checkbox с именем rukes --> <span><input type="checkbox" class="inup" name="rules"></span> Я обязуюсь соблюдать <A href="lib/law.php" target=_blank><B>Законы игры Test Game</B></A></p> <?php echo err($errr); ?> <input type="submit" name="next" value="Дальше" class="btn"> </form> </div> </body> </html>
Сообщение отредактировал Sektoid - Вторник, 05 Июля 2011, 22:38
Таким образом я убрал все остальные надписи, но эти две почему-то не хотят обьявляться. Может их по-другому как-то обьявить надо? Остальные переменные я обьявлял так: $errm = " "; $errp = " "; $errr = " "; $errr = " ";
Ну это совсем уберет ответ о Неправильном мыле. А я хотел сделать только так, чтоб ошибка "Неправильный e-mail" не высвечивалась тогда, когда ничего не введено (потому что будет высвечиваться "Введите мыло"), но высвечивалась если пользователь неправильно ввел мыло. Походу просто надо добавить в эту строку несовпадение не только с теми символами, но и с незаполненым полем, но я не смог найти как это сделать.
Сообщение отредактировал Sektoid - Среда, 06 Июля 2011, 18:33
доброго времени суток, возникла проблемка с переменными, насколько я понимаю, они определены в пхп коде, хтмл говорит что они не определены, помогите разобраться ) речь идёт о $errm $errp $errr
такс, разобрался, осталось разобраться с Notice: Undefined index: rules in C:\apache\localhost\www\reg.php on line 32
Сообщение отредактировал PoZiTiFF - Вторник, 02 Августа 2011, 14:42
PoZiTiFF, Assasin, это не просто переменная. В РНР 5.3 введены E_NOTICE для неустановленных переменных, индексов массивов и свойств объектов. Сам столкнулся с такой проблемой однажды. это индексы какого-то массива
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/a8313309/public_html/reg.php on line 19
В скрипте строчка:
Code
$c_e = mysql_num_rows(mysql_query("SELECT id_user FROM users where email='".$_POST ["email"]."'"));
почему так?
Добавлено (30.12.2011, 00:18) --------------------------------------------- Разобрался! Оказывается мускул придирчив к регистру и таблица "users" и "Users" это 2 разные таблицы! еще возникла проблема кодировок (юзаю иностранный php сервер)... Чуть-чуть погугли на эту тему, нашел пару способов решения этого трабла, но, почему-то, никакой не помог =((((( Видимо мне придется все же ставить Денвер (не нравится он мне почему-то...) или xamnp =((