Доброго времени суток! я пробую писать скрипт регистрации. он пока находится на стадии развития. Моя проблема: когда открываю index.php у меня сразу пишет "спасибо за регистрацию!" (ниже два поля для ввода логина и пароля), хотя я еще ничего не ввел. так вот как сделать так, чтобы этот текст появлялся тогда, когда нужно, а не сразу? код: PHP: <?php Error_Reporting(E_ALL & ~E_NOTICE); // удаление пробелов в начале и конце строки $Array[log] = trim($Array[log]); // шифрование пароля с помощью md5 $md5_password = md5($Array[pswrd]); // установки для соединения с базой $host = "localhost"; $user = "root"; $pass = ""; $db_name = "likser"; $table_name = "user"; // соединяемся с базой $link = mysql_connect ($host, $user, $pass); mysql_select_db ("likser"); $result = mysql_query("INSERT into $table_name values ('','".$Array[log]."', '".$md5_password."')"); // выводим результаты if ($result > 0) { print "<b>Не получилось! Попробуйте еще раз.</b><br>"; } else { print "<b>Спасибо за регистрацию!</b><br>"; } ?>
PHP: $result = mysql_query("INSERT into $table_name values ('','".$Array[log]."', '".$md5_password."')"); // выводим результаты if ($result > 0) { print "<b>Не получилось! Попробуйте еще раз.</b><br>"; } else { print "<b>Спасибо за регистрацию!</b><br>"; } ?> Ты собрался регить одного юзера только или много? mysql_num_rows подсчитывает кол-во строк,а если уже есть несколько строк в таблице, то скрипт,по идее, сразу будет писать,что всё нормально. Лучше делай так: PHP: $result = mysql_query("INSERT into $table_name values ('','".$Array[log]."', '".$md5_password."')"); if ($result == true) { print "<b>Спасибо за регистрацию!</b><br>"; } else { print "<b>Не получилось! Попробуйте еще раз.</b><br>"; } ?> То есть,если данные были успешно добавлены, то всё норм,что-то произошло - ошибка Ну а вообще, делай проверку на "пустоту" полей(формы) и защити форму
мыжики, вы чё? Вообще опупели? 1. mysql_num_rows — количество рядов из выборки (т.е. после SELECT) Количество вставленных/обновлённых рядов — mysql_affected_rows 2. красавцы. Тернарный оператор спасёт мир. likser общая идея. Форма с полями регистрации. Отправляет поля на скрипт проверки-добавления. Проверяешь что все обязательные поля заполнены, данные имеют нужный формат. Если всё в порядке — пишешь в БД, если нет — страница c ошибками. После записи, если данные добавились, редиректишь страницу на сообщение «Вы зарегены» , если что-то пошло не так — страницу с ошибкой
всем большое спасибо... исправил ошибку. теперь у меня другая проблема. я проверяю логин на количество символов и на присутствие знаков (типа @#$^&!"№;%:?* и т.д.). так вот, как мне сделать, чтобы если обнаружилась одна из ошибок, то регистрация прекращалась. пока у меня только пишет ошибки и все равно заносит в базу данные. код: PHP: <?php Error_Reporting(E_ALL & ~E_NOTICE); if (count($_POST)>0): // установки для соединения с базой $host = "localhost"; $user = "root"; $pass = ""; $db_name = "likser"; $table_name = "user"; // проверяем пароли if ($Array[pswrd]!=$Array[pswrd_repeat]) { print "Введенные Вами пароли не совпадают!"; } // проверяем логин на символы if (preg_match("/^[a-zA-Z0-9]+$^/",$_POST['$Array[log]'])) { print "Логин должен содержать только буквы английского алфавита и цифры<br>"; } // проверяем логин на количество символов if (strlen($_POST['Array[log]']) <=3) { print "Логин должен быть не менее трех символов!<br>"; } // убираем лишние пробелы из логина $Array[log] = trim($Array[log]); // шифруем пароль с помощью md5 $Array[pswrd] = md5($_POST['Array[pswrd]']); // соединяемся с базой $link = mysql_connect ($host, $user, $pass); // выбираем базу данных mysql_select_db ("likser"); // производим запрос $result = mysql_query("INSERT into $table_name SET login='".$Array[log]."', password='".$Array[pswrd]."'"); if ($result == true) { print "<b>Спасибо за регистрацию!</b><br>"; } else { print "<b>Не получилось! Попробуйте еще раз.</b><br>"; } endif; HTML: <form action="index.php?registered" method=post> Логин <input type=text name=Array[log]> <br> Пароль <input type=password name=Array[pswrd]><br> Повторите пароль <input type=password name=Array[pswrd_repeat]><br> <input type=submit value=Зарегистрироваться> </form>
PHP: <?php Error_Reporting(E_ALL & ~E_NOTICE); if (count($_POST)>0): // установки для соединения с базой $host = "localhost"; $user = "root"; $pass = ""; $db_name = "likser"; $table_name = "user"; //создаем переменную $r = false; // проверяем пароли if ($Array[pswrd]!=$Array[pswrd_repeat]) { //если ощибка то текст заносим в переменную $r = "Введенные Вами пароли не совпадают!<br>"; } // проверяем логин на символы if (preg_match("/^[a-zA-Z0-9]+$^/",$_POST['$Array[log]'])) { $r .= "Логин должен содержать только буквы английского алфавита и цифры<br>"; } // проверяем логин на количество символов if (strlen($_POST['Array[log]']) <=3) { $r .= "Логин должен быть не менее трех символов!<br>"; } //если переменная осталась false(ошибок следовательно не было) if (!$r) { //проводим регистрацию // убираем лишние пробелы из логина $Array[log] = trim($Array[log]); // шифруем пароль с помощью md5 $Array[pswrd] = md5($_POST['Array[pswrd]']); // соединяемся с базой $link = mysql_connect ($host, $user, $pass); // выбираем базу данных mysql_select_db ("likser"); // производим запрос $result = mysql_query("INSERT into $table_name SET login='".$Array[log]."', password='".$Array[pswrd]."'"); //если есть сообщенее ошибки то выводим его } else { echo $r; } if ($result == true) { print "<b>Спасибо за регистрацию!</b><br>"; } else { print "<b>Не получилось! Попробуйте еще раз.</b><br>"; } endif; А вообще прочитай книгу "PHP в подлинике", после неё таких вопросов задавать не будеш