[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: 2 аккаунта при регистрации
Godwarlock
Объясните в чем косяк регистрации, раньше создавал регистрации всё нормально работало, а тут аж 2 аккаунта одинаковых создаёт, только id разное. Посмотрите где накосячил, я что-то найти не могу
<?
include "connectiontodatabase.php"; //пчп файл с коннектом к базе
$chas = date("H");
$server_date=date("d.m.Y", mktime($chas-$GSM));
$server_time=date("H:i:s", mktime($chas-$GSM));

$data = mysql_connect($base_name, $base_user, $base_pass);
if(!mysql_select_db($db_name,$data)){
print "Ошибка при подключении к БД<BR>";
echo mysql_error();
die();
}

?>
<HTML>
<?
if(!empty($login)){
$QUERY = mysql_query("SELECT id FROM users WHERE login='$login'");
$CHECK = mysql_fetch_array($QUERY);
if($CHECK){
print "<SPAN CLASS='err'>Ошибка!Имя \"$login\" уже занято! Выберите другое имя.<BR>";
print "<A HREF=\"javascript:history.back()\" CLASS='link'>назад</A>";
die();
}

if(empty($ip))
{
if (getenv('HTTP_X_FORWARDED_FOR'))
{
$ip=getenv('HTTP_X_FORWARDED_FOR');
}
else
{
$ip=getenv('REMOTE_ADDR');
}
}


$login=htmlspecialchars($login);
$login=trim($login);
$email=htmlspecialchars($email);
$password=htmlspecialchars($password);
$password = $password;
$color=htmlspecialchars($color);
$INSERT = "INSERT INTO `users`(login,login_display,password,mail,color) VALUES('$login','$login','$password','$email','$color')";
$SQL = mysql_query($INSERT);
$SQL = mysql_query($INSERT);

if($SQL){
print "<SPAN CLASS='norm'>Регистрация прошла успешно!<BR><font color=2658c9 size=3>Авторизируйтесь с </font><a href='index.php' class='link'><font color=2658c9 size=5><b>главной страницы</b></font></a>.</SPAN>";
}
else{
echo mysql_error();
}
}

else{
?>
<script>
function sub(){
n=document.registration;
if(n.login.value==""){alert('Вы не ввели Ваше Имя!!!');}
else if(n.password.value==""){alert('Вы не ввели Ваш пароль');}
else if(n.password_confirm.value==""){alert('Вы не подтвердили пароль!!!');}
else if(n.password.value!=n.password_confirm.value){alert('Пароли в полях не совпадают!!!');}
else if(n.email.value==""){alert('Вы не ввели Ваш e-mail!!!');}
else if(n.color.value==""){alert('Вы не ввели свой цвет!!!');}
else{
n.submit();
}
}

</script>
<
CENTER>
<
FORM NAME="registration" ACTION="reg.php" CLASS="norm" METHOD="POST">
<
TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0">
<
TR>
<
TD WIDTH="200">
<
b>Имя: <SMALL>(макс. 15 симв.)</SMALL>:</b>
</
TD>
<
TD>
<
INPUT TYPE="text" NAME="login" CLASS="field" SIZE="15" MAXLENGTH="15">
</
TD>
</
TR>
<
TR>
<
TD>
<
b>Пароль <SMALL>(макс. 30 симв.)</SMALL>:</b>
</
TD>
<
TD>
<
INPUT TYPE="password" NAME="password" CLASS="field" SIZE="30" MAXLENGTH="30">
</
TD>
</
TR>
<
TR>
<
TD>
<
b>Подтвердите пароль:</b>
</
TD>
<
TD>
<
INPUT TYPE="password" NAME="password_confirm" CLASS="field" SIZE="30" MAXLENGTH="30">
</
TD>
</
TR>
<
TR>
<
TD>
<
b>E-mail <SMALL>(макс. 50 симв.)</SMALL>:</b>
</
TD>
<
TD>
<
INPUT TYPE="text" NAME="email" CLASS="field" SIZE="30" MAXLENGTH="50">
</
TD>
</
TR>
<
TR>
<
TD>
<
b>Цвет<SMALL>(макс. 15 симв.)</SMALL>:</b>
</
TD>
<
TD>
<
INPUT TYPE="text" NAME="color" CLASS="field" SIZE="30" MAXLENGTH="15">
</
TD>
</
TR>
<
TR>
<
TD>
<
INPUT TYPE="button" onClick="sub()" CLASS="but" VALUE="Зарегистрировать" STYLE="width=382">
</
TD>
</
TR>
</
SPAN>
</
TD>
</
TR>
</
TABLE>
</
TD></TR>
</
TABLE>
</
FORM>
</
CENTER>
</
HTML>

<?
}
?>




Спустя 5 минут, 27 секунд (27.06.2011 - 10:40) XCross написал(а):
$INSERT = "INSERT INTO `users`(login,login_display,password,mail,color) VALUES('$login','$login','$password','$email','$color')";
$SQL = mysql_query($INSERT);
$SQL = mysql_query($INSERT);


А вообще код... не код вообщем... :(

Спустя 1 минута, 43 секунды (27.06.2011 - 10:41) quickxyan написал(а):
ну вот минимум по этому


$SQL = mysql_query($INSERT);
$SQL = mysql_query($INSERT);

Спустя 4 минуты, 6 секунд (27.06.2011 - 10:46) quickxyan написал(а):
было бы неплохо позаменять все переменные отосланные с формы так:
$login - $_POST['login']



if(!empty($login)){


заменить на


if(isset($_POST['login']))

Спустя 11 минут, 50 секунд (27.06.2011 - 10:57) kovaldm написал(а):
Нет. Надо оставить empty() и добавить trim(), потому что если отправить пустую форму, то $_POST['login'] будет существовать, но будет содержать пустую строку.

Спустя 2 минуты, 29 секунд (27.06.2011 - 11:00) XCross написал(а):
Не будет существовать

Спустя 11 минут, 36 секунд (27.06.2011 - 11:11) neadekvat написал(а):
Цитата (kmaks @ 27.06.2011 - 12:00)
Не будет существовать

Будет.

Спустя 6 минут, 6 секунд (27.06.2011 - 11:18) XCross написал(а):
Ну и черт с ней.

Сначала инициализировать тогда, а потом уже empty еспользовать

Спустя 9 часов, 14 минут, 36 секунд (27.06.2011 - 20:32) ИНСИ написал(а):
Цитата
Надо оставить empty() и добавить trim(), потому что если отправить пустую форму, то $_POST['login'] будет существовать, но будет содержать пустую строку

А что мешает сделать такую проверку?
isset($_POST['text']) && $_POST['text'] != ''

Так как quickxyan правильно говорит. Тебе в форме могут передать цифру: 0 и потом epmty не будет работать как надо :)

А на будущее, советую обратить внимание на:
1. Обрамлять в апострофы названия полей и таблиц.
2. Значения вводить в одинарный ковычках
3. Перед тем как занес в БД данные, обрабатывать запросе без htmlspecialchars (используй на выводе) посмотри в сторону mysql_real_escape_string, stripslashes
4. Обрабатывать данные там, где они используются, то есть прямо в запросе

Это так - пожелания которые сразу видны :)

Спустя 36 минут, 20 секунд (27.06.2011 - 21:09) kovaldm написал(а):
Цитата
Тебе в форме могут передать цифру: 0 и потом epmty не будет работать как надо :)

Правда? А мне кажется что все будет работать как надо.
Проверь вот этот код:
    $i = 0;
if(empty($i))
echo 'true';

Спустя 1 час, 59 минут, 18 секунд (27.06.2011 - 23:08) ИНСИ написал(а):
Цитата
Правда? А мне кажется что все будет работать как надо.

И чего вы все любите спорить, ты хоть сам проверял свой код? Попробуй снова запустить или хотя бы так, чтобы тебе было понятнее:
$i = 0;
if(empty($i))
echo 'Пусто';
else
echo 'Заполнено';

Переменная содержит число 0, но проверка вернет false, поэтому будет сообщение: Пусто

Спустя 1 час, 11 минут, 57 секунд (28.06.2011 - 00:20) Godwarlock написал(а):
quickxyan, kmaks спасибо, убрал один и теперь нормально регистрирует)

Спустя 16 часов, 27 минут, 9 секунд (28.06.2011 - 16:47) kovaldm написал(а):
Цитата
Переменная содержит число 0, но проверка вернет false, поэтому будет сообщение: Пусто

Вон ты о чем.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.