Всем доброго времени суток! Недавно начал изучать PHP и столкнулся со следующей проблеммой:
Написал код регистрации для пользователей...а после загрузки на хостинг - а файл вообще не читается. Я так понял дело в коде. Кому не трудно пожалуйста посмотрите:
//Заносим переменные, если они пустые, то удаляем их и выводим ошибку if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} } if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} } if empty($login) or empty ($password) { echo "Вы не ввели логин или пароль"; }
//Проверим, есть ли различные HTML теги, если есть, то удаляем их $login = htmlspecialchars($login); $login = stripslashes($login); $password = htmlspecialchars($password); $password = stripslashes($password);
//Проверяем, есть ли пользователь в базе данных, а если есть, то выводим ошибку $result = mysql_query("SELECT id FROM users WHERE login='$login'",$db); $myrow = mysql_fetch_array($result); if (!empty($myrow['id'])) { echo ("Пользователь с логином $login уже зарегистрировался."); }
//А если такого пользователя нет, то сохраняем $result2 = mysql_query ("INSERT INTO users (login,password) VALUES('$login','$password')");
//Если есть ошибки, то выводим, а если нет, выводим об успешной регистрации if ($result2 == 'TRUE') { echo "Вы успешно зарегистрировались!"; } else { echo "К сожалению вы не зарегистрировались. Возможно вы некорректно ввели логин или пароль."; }
?>
Заранее спс. Кто поможет + в репу получит=)
Сообщение отредактировал dima9595 - Пятница, 30 Ноября 2012, 20:48
dima9595, ищи проблемы в своей базе данных, код полностью (не сказать что профи) рабочий, и следовало бы привести результат выполнения этого скрипта, а то не все экстрасенсы тут.
aalla, на счёт БД...думаю с БД всё норм, так как я использовал другой, похожий скрипт - он работал. Но всё равно посмотрю ещё раз. Kamskii, не помогло.
Добавлено (04.12.2012, 17:19) --------------------------------------------- С БД всё в порядке(((
if empty($login) or empty ($password) { echo "Вы не ввели логин или пароль"; }
Сразу идет проверка на тэги , повторную регистрацию и т.д.. То есть Проверяются переменные, выводится ошибка (Вы не ввели логин или пароль) и скрипт продолжает работать дальше. Нужно воспользоваться ELSE или при возникновении ошибки остановить выполнение дальнейшего скрипта EXIT(); Лично я поле выполнения услови IF (условие){действие;}; то же ставлю ";" Еще можно проверить каким способом передаются переменные а лучше место POST поставить REQUEST. Кстати первые две строки вообще можно убрать. Эти присвоения работают дальше после проверки наличия переданных переменных.
Еще можно проверить подключения к базе db.php. Скорее всего на локальном сервере и на хосте пользователь, пароль, имя базы разные
Можно попробывать изменить код:
Code
$myrow = mysql_fetch_array($result); if (!empty($myrow['id'])) { echo ("Пользователь с логином $login уже зарегистрировался."); }
Тут Если пользователя нет в базе то на строке
Code
$myrow = mysql_fetch_array($result);
Может быть ошибка По этому лучше будет написать
Code
if ($myrow = mysql_fetch_array($result)){ echo ("Пользователь с логином $login уже зарегистрировался."); }else{//весь дальнейший код};
В этом случае избегаем ошибки и не выполняем дальнейший скрипт если пользователь существует, что бы не занести пользователя заново
То же самое в отрезке
Code
$result2 = mysql_query ("INSERT INTO users (login,password) VALUES('$login','$password')");
//Если есть ошибки, то выводим, а если нет, выводим об успешной регистрации if ($result2 == 'TRUE') { echo "Вы успешно зарегистрировались!"; } else { echo "К сожалению вы не зарегистрировались. Возможно вы некорректно ввели логин или пароль."; }
Первая строка может дать ошибку избежать этого можно написав
Code
if ($result2 = mysql_query ("INSERT INTO users (login,password) VALUES('$login','$password')")) { echo "Вы успешно зарегистрировались!"; } else { echo "К сожалению вы не зарегистрировались. Возможно вы некорректно ввели логин или пароль."; } ;
Сообщение отредактировал Stroy562 - Среда, 05 Декабря 2012, 09:34