<?php
include "connect.php"
?>
<html>
<body>
<form action="" method="POST">
<table align="center" cellpadding=4 cellspacing=0 border=0 style="border-collapse:collapse">
<tr><td>Ваш e-mail:</td><td><input name="e-mail" type="text" value=""></td></tr>
<tr><td>Пароль:</td><td><input name="password" type="password" value=""></td></tr>
<tr><td>Ещё раз пароль:</td><td><input name="rpassword" type="password" value=""></td></tr>
<tr><td colspan=2 align="center"><input name="do" type="submit" value="Зарегистрироваться"></td></tr>
</table></form></body></html>
<?php
$email = $_POST['e-mail'];
$password = $_POST['password'];
$rpassword = $_POST['rpassword'];
if($email !='') {
mysql_query("SELECT * FROM users WHERE 'e-mail'='".strtolower($email)."'");
if(mysql_affected_rows()==0) {
if($password !='') {
if($rpassword !='') {
if($password !='' AND $rpassword !='' AND $password === $rpassword) {
$r = @mysql_query("INSERT INTO users VALUES(NULL,'".strtolower($email)."','".md5($pass)."')");
}
else{
echo 'Пароли не совпадают';
}
}
else {
echo 'Введите повторный пароль';
}
}
else {
echo 'Введите пароль';
}
}
else{
echo 'Пользователь с таким e-mail уже зарегистрирован';
}
}
else {
echo 'Введите e-mail';
}
?>
Не идёт проверка на присутствие введенного e-mail в базе данных, то-есть в любом случаи пользователь добавляется в базу данных. Подскажите пожалуйста где в моем коде ошибка и как её исправить.
Спустя 4 минуты, 1 секунда (13.06.2011 - 13:46) nugle написал(а):
koma00
никто не учил как правильно инициализировать переменные, отправленные из формы?
попробуй вывести $email и посмотри есть ли там что-то
никто не учил как правильно инициализировать переменные, отправленные из формы?
$var = !empty($_POST['var']) ? $_POST['var'] : NULL;
попробуй вывести $email и посмотри есть ли там что-то
Спустя 7 минут, 12 секунд (13.06.2011 - 13:53) koma00 написал(а):
Переменные работают правильно.
if(mysql_affected_rows()==0)здесь значение всегда равно 0. Мне нужно это исправить. То-есть в зависимости от присутствия или отсутствия e-mail в базе данных должно выполняться
echo 'Пользователь с таким e-mail уже зарегистрирован'или
if($password !='') {
if($rpassword !='') {
if($password !='' AND $rpassword !='' AND $password === $rpassword) {
$r = @mysql_query("INSERT INTO users VALUES(NULL,'".strtolower($email)."','".md5($pass)."')");
}
else{
echo 'Пароли не совпадают';
}
}
else {
echo 'Введите повторный пароль';
}
}
else {
echo 'Введите пароль';
}
Спустя 3 минуты, 3 секунды (13.06.2011 - 13:56) nugle написал(а):
кодировка какая?
выведи это strtolower($email) и посмотри что там
выведи это strtolower($email) и посмотри что там
Спустя 5 минут, 20 секунд (13.06.2011 - 14:02) koma00 написал(а):
Я ввожу в поле e-mail - koma00@yandex.ru
Через эту функцию strtolower($email) выводиться - koma00@yandex.ru
Через эту функцию strtolower($email) выводиться - koma00@yandex.ru
Спустя 8 минут, 46 секунд (13.06.2011 - 14:10) nugle написал(а):
так попробуй
и сюда отпиши
$query = mysql_query("SELECT * FROM users WHERE 'e-mail'='".strtolower($email)."'");
echo mysql_affected_rows().mysql_num_rows($query);
и сюда отпиши
Спустя 2 минуты, 51 секунда (13.06.2011 - 14:13) koma00 написал(а):
Выводит 10
Спустя 3 минуты, 23 секунды (13.06.2011 - 14:17) nugle написал(а):
поменяй это
на это
mysql_query("SELECT * FROM users WHERE 'e-mail'='".strtolower($email)."'");
if(mysql_affected_rows()==0) {
на это
$result = mysql_query("SELECT * FROM users WHERE 'e-mail'='".strtolower($email)."'");
if(mysql_num_rows($result)==0) {
Спустя 2 минуты, 27 секунд (13.06.2011 - 14:19) koma00 написал(а):
выводит ошибку Warning: mysql_num_rows() expects parameter 1 to be resource, null given in A:\home\localhost\www\reg\index.php on line 46
Спустя 4 минуты, 10 секунд (13.06.2011 - 14:23) nugle написал(а):
вот это
замени на это
и будет счастье
$result = mysql_query("SELECT * FROM users WHERE 'e-mail'='".strtolower($email)."'");
замени на это
$result = mysql_query("SELECT * FROM users WHERE `e-mail`='".strtolower($email)."'");
и будет счастье
Спустя 21 минута, 21 секунда (13.06.2011 - 14:44) koma00 написал(а):
Спасибо всё работает. Скажите пожалуйста в чём заключалась моя ошибка?
Спустя 11 минут, 53 секунды (13.06.2011 - 14:56) nugle написал(а):
koma00
ты писал 'e-mail' и `e-mail`
ты писал 'e-mail' и `e-mail`
Спустя 2 минуты, 10 секунд (13.06.2011 - 14:59) koma00 написал(а):
У меня при переходе на страницу пишет Введите e-mail. Как сделать что бы эта надпись отображалась только после отправки данных через кнопку зарегистрироваться.
Спустя 49 минут, 30 секунд (13.06.2011 - 15:48) nugle написал(а):
koma00
if(!$_POST['do'])
{
// твой скрипт
}
Спустя 1 час, 59 минут, 9 секунд (13.06.2011 - 17:47) koma00 написал(а):
Спасибо. Только
if($_POST['do'])
{
// твой скрипт
}
Спустя 2 часа, 22 минуты, 56 секунд (13.06.2011 - 20:10) koma00 написал(а):
Спасибо