<?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>Желаемый ник:</td><td><input name="login" 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
$login = $_POST['login'];
$password = $_POST['password'];
$rpassword = $_POST['rpassword'];
if($login !='') {
mysql_query("SELECT * FROM users WHERE e-mail='".strtolower($login)."'");
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($nick)."','".md5($pass)."')");
}
else{
echo 'Пароли не совпадают';
}
}
else {
echo 'Введите повторный пароль';
}
}
else {
echo 'Введите пароль';
}
}
else{
echo 'Логин занят';
}
}
else {
echo 'Введите логин';
}
?>
Постоянно выводит ЛОГИН ЗАНЯТ. Подскажите в чём заключаеться ошибка и как её исправить.
Спустя 14 минут, 39 секунд (12.06.2011 - 21:58) Mirexzpalich написал(а):
Это
замени на это
mysql_query("SELECT * FROM users WHERE e-mail='".strtolower($login)."'");
if(mysql_affected_rows()==0)
замени на это
$query = mysql_query("SELECT count(*) FROM users WHERE e-mail='".strtolower($login)."'");
if(!mysql_fetch_assoc($query))
Спустя 5 минут, 8 секунд (12.06.2011 - 22:03) koma00 написал(а):
Изменил, теперь пишет
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in A:\home\localhost\www\reg\index.php on line 21
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in A:\home\localhost\www\reg\index.php on line 21
Спустя 8 минут (12.06.2011 - 22:11) Mirexzpalich написал(а):
$query = mysql_query("SELECT count(*) FROM users WHERE e-mail='".strtolower($login)."'");
echo mysql_error();
if(!mysql_num_row($query))
Спустя 2 минуты, 37 секунд (12.06.2011 - 22:14) koma00 написал(а):
Теперь пишет
Unknown column 'e' in 'where clause'
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in A:\home\localhost\www\reg\index.php on line 22
Unknown column 'e' in 'where clause'
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in A:\home\localhost\www\reg\index.php on line 22
Спустя 2 минуты, 15 секунд (12.06.2011 - 22:16) Mirexzpalich написал(а):
А у тебя поле e-mail точно есть? Если есть то запрос такой сделай:
е-mail в кавычках. И вообще, всегда названия таблиц и полей бери в кавычки (где буковка Ё)
А то выходит, что из значение поля е вычетается значение поля mail и это сравнивается с логином.
$query = mysql_query("SELECT count(*) FROM `users` WHERE `e-mail`='".strtolower($login)."'");
е-mail в кавычках. И вообще, всегда названия таблиц и полей бери в кавычки (где буковка Ё)
А то выходит, что из значение поля е вычетается значение поля mail и это сравнивается с логином.
Спустя 3 минуты, 57 секунд (12.06.2011 - 22:20) koma00 написал(а):
Всё равно пишет логин занят
Спустя 8 минут, 22 секунды (12.06.2011 - 22:28) koma00 написал(а):
У меня теперь такой код
На странице выводиться Логин занят
<?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>Желаемый ник:</td><td><input name="login" 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
$login = $_POST['login'];
$password = $_POST['password'];
$rpassword = $_POST['rpassword'];
if($login !='') {
$query = mysql_query("SELECT count(*) FROM `users` WHERE `e-mail`='".strtolower($login)."'");
echo mysql_error();
if(!mysql_fetch_assoc($query)) {
if($password !='') {
if($rpassword !='') {
if($password !='' AND $rpassword !='' AND $password === $rpassword) {
$r = @mysql_query("INSERT INTO users VALUES(NULL,'".strtolower($nick)."','".md5($pass)."')");
}
else{
echo 'Пароли не совпадают';
}
}
else {
echo 'Введите повторный пароль';
}
}
else {
echo 'Введите пароль';
}
}
else{
echo 'Логин занят';
}
}
else {
echo 'Введите логин';
}
?>
На странице выводиться Логин занят
Спустя 10 минут, 19 секунд (12.06.2011 - 22:39) Mirexzpalich написал(а):
Попробуй изменить на свой.... только про кавычки не забудь....
Спустя 17 минут, 4 секунды (12.06.2011 - 22:56) inpost написал(а):
$res = mysql_query("
SELECT `id`
FROM `users`
WHERE `e-mail`='".strtolower($login)."'
LIMIT 1
");
if(!mysql_num_rows($res))
{
echo 'Ошибки нет!';
}
else
{
echo 'такая запись уже есть';
}
Спустя 10 часов, 53 минуты, 23 секунды (13.06.2011 - 09:49) linker написал(а):
inpost
У тебя лажа какая-то.
У тебя лажа какая-то.
$query = mysql_query("SELECT count(*) FROM `users` WHERE `e-mail`='".strtolower($login)."'");
if (!mysql_num_rows($query))
{
if (!empty($password) && !empty($rpassword) && $password === $rpassword)
{
$r = @mysql_query("INSERT INTO users VALUES(NULL,'".strtolower($nick)."','".md5($pass)."')");
}
}
else
echo "Логин занят";
Спустя 16 минут, 44 секунды (13.06.2011 - 10:06) koma00 написал(а):
Mirexzpalich спасибо за помощь. Я изменил свой код так как ты сказал. Теперь у меня такой код
Но теперь у меня другая ошибка. В базу данных не вноситься e-mail. Как мне это исправить?
<?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>Желаемый ник:</td><td><input name="login" 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
$login = $_POST['login'];
$password = $_POST['password'];
$rpassword = $_POST['rpassword'];
if($login !='') {
mysql_query("SELECT * FROM users WHERE 'e-mail'='".strtolower($login)."'");
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($nick)."','".md5($pass)."')");
}
else{
echo 'Пароли не совпадают';
}
}
else {
echo 'Введите повторный пароль';
}
}
else {
echo 'Введите пароль';
}
}
else{
echo 'Логин занят';
}
}
else {
echo 'Введите логин';
}
?>
Но теперь у меня другая ошибка. В базу данных не вноситься e-mail. Как мне это исправить?
Спустя 12 минут, 6 секунд (13.06.2011 - 10:18) neadekvat написал(а):
Цитата (koma00 @ 13.06.2011 - 11:06) |
Но теперь у меня другая ошибка. В базу данных не вноситься e-mail. Как мне это исправить? |
Пост linker'a ты не заметил?
Спустя 7 минут, 6 секунд (13.06.2011 - 10:25) koma00 написал(а):
Спасибо уже понял ошибку. При проверке обнаружил, что не выполняется проверка на использование e-mail, то-есть на один адрес e-mail можно регистрироваться неограниченное количество раз.
Как это исправить?
<?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';
}
?>
Как это исправить?
Спустя 11 минут, 17 секунд (13.06.2011 - 10:36) inpost написал(а):
linker
там только
if(mysql_num_rows($res))
заменить на
if(!mysql_num_rows($res)) ,
или местами поменять условия
обычная опечатка
там только
if(mysql_num_rows($res))
заменить на
if(!mysql_num_rows($res)) ,
или местами поменять условия
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Спустя 14 минут, 29 секунд (13.06.2011 - 10:51) koma00 написал(а):
извините, но у меня в коде нет if(mysql_num_rows($res))
Спустя 4 минуты, 54 секунды (13.06.2011 - 10:56) linker написал(а):
koma00
Ну так напиши. mysql_affected_rows() применяется ТОЛЬКО для запросов: UPDATE, INSERT, DELETE, он не работает для SELECT.
Ну так напиши. mysql_affected_rows() применяется ТОЛЬКО для запросов: UPDATE, INSERT, DELETE, он не работает для SELECT.
Спустя 6 минут, 19 секунд (13.06.2011 - 11:02) koma00 написал(а):
Скажите пожалуйста куда вставить строчку if(mysql_num_rows($res)) в мой код
<?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';
}
?>
Спустя 11 часов, 38 минут, 48 секунд (13.06.2011 - 22:41) linker написал(а):
koma00
Едрить-мадрить. Тебе же написали mysql_affected_rows() не применяется для SELECT-запросов, делай вывод где и что менять.
Едрить-мадрить. Тебе же написали mysql_affected_rows() не применяется для SELECT-запросов, делай вывод где и что менять.