[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Регистрация
nugle
Привет всем, начал писать скрипт регистрации, все проверки работают, но имя не добавляется в ба3у, добовляется только пароль и мэйл, в чём моя ошибка
<?php 
require_once "config/db.php";

$name = $_POST['name'];
$password = $_POST['password'];
$password2 = $_POST['password2'];
$mail = $_POST['e-mail'];
$sub = $_POST['sub'];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Регистрация</title>
</
head>

<
body>
<
form action="reg.php" method="post">
Введите никнейм: <input name="name" type="text" value = "<?php echo $name; ?>"/><br />
Введите пароль: <input name="password" type="text"/><br />
Повторите пароль: <input name="password2" type="text" /><br />
Ведите e-mail: <input name="e-mail" type="text" value = "<?php echo $mail; ?>" /><br />
<
input name="sub" type="submit" /><br />
<?php
if ($sub){
if (!preg_match("/^[a-z0-9_.-]+$/", $name))
exit("Не правильно введен логин");
if (!preg_match("/^[a-z0-9_.-]+@([a-z0-9]+\.)+[a-z]{2}$/", $mail))
exit ("Неправильно введён e-mail");

$sql = "select * from register where name = '".$name."' ";
$result = mysql_query($sql) or die(mysql_error() ."<br/>". $sql);
$myrow = mysql_fetch_assoc($result);

if ($password != $password2) exit("Пароли не совпадают");
elseif ($name = $myrow['name'])
exit ("Такой логин уже существует!");


$sql2 = "insert into register (name,password, mail) values ('".$name."', '".$password."','".$mail."')";
$result2 = mysql_query($sql2) or die(mysql_error() ."<br/>". $sql2);}



?>
</form>
</
body>
</
html>

Работает если вместо $name в БД вставлять $_POST['name']



Спустя 43 минуты, 39 секунд (10.11.2010 - 10:55) Lenarfate написал(а):
1. зачем это
Цитата
$sql = "select * from register where name = '".$name."' ";
$result = mysql_query($sql) or die(mysql_error() ."<br/>". $sql);
$myrow = mysql_fetch_assoc($result);
??
2.
Цитата
Работает если вместо $name в БД вставлять $_POST['name']

естественно, ты же сам ранее переопределил переменную $name
Цитата
$name = $myrow['name']


Спустя 39 минут (10.11.2010 - 11:34) nugle написал(а):
Блин чёт там не прально, как тогда правельнее проверку сделать?

Спустя 4 минуты, 16 секунд (10.11.2010 - 11:38) Lenarfate написал(а):
ну вообще, все не грамотно.
1. переменные лучше объявлять так
$name = !empty($_POST['name']) ? $_POST['name'] : null;

2. проверять хотя бы так
if (!preg_match("/^[a-z0-9_.-]+$/", $name))
print "Не правильно введен логин";

3. проверка на существования логина -почитай мануал по select и on duplicate key update

Спустя 30 минут, 16 секунд (10.11.2010 - 12:09) nugle написал(а):
1.В чём ра3ница
if (!preg_match("/^[a-z0-9_.-]+$/", $name))
print "Не правильно введен логин";

if (!preg_match("/^[a-z0-9_.-]+$/", $name))
echo "Не правильно введен логин";

2.Я собсно не про эту проверку говорил а про
if ($password != $password2) exit("Пароли не совпадают");
elseif ($name = $myrow['name'])
exit ("Такой логин уже существует!");

3.Чем вас не устраивают мои sql 3апросы?

Спустя 3 минуты, 55 секунд (10.11.2010 - 12:13) Lenarfate написал(а):
1. никакой
2. это и есть же проверка на существование такого логина
3. я не говорил, что они меня не устраивают))

Спустя 3 минуты, 30 секунд (10.11.2010 - 12:16) nugle написал(а):
Цитата
2. проверять хотя бы так

if (!preg_match("/^[a-z0-9_.-]+$/", $name))
print "Не правильно введен логин";

Мне вот эта фра3а смутила у меня в место принт echo стоит...))

Спустя 5 минут, 47 секунд (10.11.2010 - 12:22) Lenarfate написал(а):
нет, у тебя стоит exit()

Спустя 2 минуты, 16 секунд (10.11.2010 - 12:24) nugle написал(а):
упс, ну прально же тогда если не будет стоять exit (), программа не выйдет и половину данных вставится в ба3у.3начит нужно нагромо3дить условие, if,elseif.....ток потом exit если что то не пройдёт?

Спустя 4 минуты, 2 секунды (10.11.2010 - 12:28) Lenarfate написал(а):
посмотри здесь http://www.irbis-team.com/15/6/3. самый первый листинг кода

Спустя 2 часа, 3 минуты, 37 секунд (10.11.2010 - 14:32) Sanchopansa написал(а):
Вот твои грабли с именем...
elseif ($name = $myrow['name'])


как тебе уже говорил Lenarfate ты не проверяешь а переопределяешь переменную $name и это условие всегда будет верное.
в ПХП = - оператор присваения
а == - оператор сравнения (равенства)

Спустя 1 час, 46 минут, 39 секунд (10.11.2010 - 16:18) Guest написал(а):
Сам код у тя бажный.

Спустя 6 минут, 33 секунды (10.11.2010 - 16:25) nugle написал(а):
Guest, да я понимаю, вся инфа о тебе мне говорит, что ты великий программист...

Спустя 2 минуты (10.11.2010 - 16:27) Guest написал(а):
nugle, не знаю, о чем те говорит моя инфа, но вот те код для проверки данных

<?php

if (isset ($_POST['sub']))
{
//Инициализируем переменные
$name = !empty ($_POST['name']) ? trim (($_POST['name']) ;
$password = !empty ($_POST['password']) ? trim ($_POST['password']) ;
$password2 = !empty ($_POST['password2']) ? trim ($_POST['password2']) ;
$mail = !empty ($_POST['mail']) ? trim ($_POST['mail']) ;
//Если юзверь не заполнил данные, ругаемся
if (empty ($name))
$error = "Вы не ввели пароль" ;
if (empty ($password))
$error = "Вы не ввели пароль" ;
if (empty ($password2))
$error = "Вы не подтверждение пароля" ;
if (empty ($mail))
$error = "Вы не ввели mail" ;
//Если все заполнено, проверяем дальше
if (empty ($error))
{
if (preg_match ("#[^a-z0-9_-\.]#", $name))
echo "Неверный формат имени" ;
if (!preg_match ("#[a-z0-9_-]+@[a-z0-9-_]+\.[a-z]{2,6}#i", $mail))
echo "Неверный формат e-mail" ;
if (!preg_match ("#[a-z0-9_-]+@[a-z0-9-_]+\.[a-z]{2,6}#i", $mail))
echo "Неверный формат e-mail" ;
}
else
echo $error."<br />" ;
}

Спустя 7 минут, 2 секунды (10.11.2010 - 16:34) vinnie написал(а):
nugle, определяй переменные, вытаскивай из базы инфу и т.д. тока после того, как юзер нажал кнопку, шоб не потреблять ресурсы. вот, иначе зачем...

Спустя 12 минут, 20 секунд (10.11.2010 - 16:46) nugle написал(а):
vinnie, у меня сра3у было, всё вытворять если нажата кнопка....

Спустя 2 минуты, 36 секунд (10.11.2010 - 16:49) vinnie написал(а):
ты переменные определяешь перед нажатием кнопки

Спустя 2 минуты, 1 секунда (10.11.2010 - 16:51) vinnie написал(а):
Вот файл регистрации

Спустя 19 секунд (10.11.2010 - 16:51) nugle написал(а):
Внимательние посмотри там вначале if($sub){И пошло поехало}

Спустя 23 минуты, 59 секунд (10.11.2010 - 17:15) nugle написал(а):
Guest, а у тебя видимо нет, ты каждую ошибку пере3аписываешь, тогда уж массив

Спустя 3 минуты, 51 секунда (10.11.2010 - 17:19) vinnie написал(а):
ну можно в массив поместить ошибка, а потом функцией implode разбить на строки массив. вот и все

Спустя 26 минут, 45 секунд (10.11.2010 - 17:46) nugle написал(а):
Вот он шедевр, может и с нюансами, но всё ок со всеми проверками,берите да поль3уйтесь
<?php 
require_once "config/db.php";

$name = !empty($_POST['name']) ? $_POST['name'] : null;
$password = !empty($_POST['password']) ? $_POST['password'] : null;
$password2 = !empty($_POST['password2']) ? $_POST['password2'] : null;
$mail = !empty($_POST['mail']) ? $_POST['mail'] : null;
$sub = !empty($_POST['sub']) ? $_POST['sub'] : null;
$a = 'yes';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Регистрация</title>
</
head>

<
body>
<
table width="960" height="500" cellpadding="0" cellspacing="0" align="center">
<
tr>
<
td align="center" height="100"><strong>Регистрация</strong></td>
</
tr>
<
tr>
<
td align="left" valign="top">
<
form action="reg.php" method="post">
<?php
$sql = "select * from register where name = '".$name."' ";
$result = mysql_query($sql) or die(mysql_error() ."<br/>". $sql);
$myrow = mysql_fetch_assoc($result); // выборка из БД по введённому имени
?>
Введите никнейм: <input name="name" type="text" value = "<?php echo $name;?>"/>
<?php if (empty($name)) {
echo "Вы не ввели логин";$a = 'no';} elseif (!preg_match("/^[a-z0-9_.-]+$/", $name))
{echo "Не правильно введен логин"; $a = 'no';} // Проверка логина}
elseif ($name == $myrow['name'])
{echo "Такой логин уже существует"; $a = 'no';} ?><br />
Введите пароль: <input name="password" type="text"/>
<?php if (empty($password))
{echo "Вы не ввели пароль"; $a = 'no';}?><br />
Повторите пароль: <input name="password2" type="text" />
<?php if (empty($password2))
{echo "Вы не подтвердили пароль"; $a = 'no'; }
elseif ($password != $password2)
{echo "Пароли не совпадают"; $a = 'no';}?><br />
Ведите e-mail: <input name="mail" type="text" value = "<?php echo $mail; ?>" />
<?php if (empty($mail))
{echo "Вы не ввели e-mail"; $a = 'no';}
elseif (!preg_match("/^[a-z0-9_.-]+@([a-z0-9]+\.)+[a-z]{2}$/", $mail))
{echo "Неправильно введён e-mail"; $a = 'no';} // Проверка e-mail?>
<br />
<
input name="sub" type="submit" /><br />
<?php
// if ($sub){ // Проверка, нажата ли кнопка

if ($a == 'yes') {
$sql2 = "insert into register (name,password, mail) values ('".$name."', '".$password."','".$mail."')";
$result2 = mysql_query($sql2) or die(mysql_error() ."<br/>". $sql2);} // Если всё нормально, вставка в БД
else exit ('Исправьте пожалуйста ошибки');



?>
</form>
</
td>
</
tr>
</
table>
<
p> </p>
</
body>
</
html>

Спустя 1 минута, 31 секунда (10.11.2010 - 17:47) nugle написал(а):
А вот как сделать, нажата кнопка или нет

Спустя 1 минута, 47 секунд (10.11.2010 - 17:49) vinnie написал(а):
)))))а если у меня почтовый адрес com, а не ru?

Спустя 37 секунд (10.11.2010 - 17:50) vinnie написал(а):
в твоем случае так


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

Спустя 1 минута, 26 секунд (10.11.2010 - 17:51) nugle написал(а):
Это понятно , но если поставить в начало кода то не будет выводится форма

Спустя 1 минута, 3 секунды (10.11.2010 - 17:52) nugle написал(а):
vinnie, если ком, то ешь анаком biggrin.gif, а если серьё3но то там ограничении не до трёх а до 6 символов

Спустя 53 секунды (10.11.2010 - 17:53) vinnie написал(а):
не вижу... где оно?

Спустя 59 секунд (10.11.2010 - 17:54) vinnie написал(а):
ну напиши тогда так
[php]
if (!isset ($_POST['ok']))
{
//Здесь выводи свою форму
}
else
{
//а здесь действуй
}

Спустя 53 секунды (10.11.2010 - 17:55) vinnie написал(а):
ну напиши тогда так

if (!isset ($_POST['ok']))
{
//Здесь выводи свою форму
}
else
{
//а здесь действуй
}

Спустя 3 минуты, 35 секунд (10.11.2010 - 17:59) nugle написал(а):
vinnie, ой точно всё у себя исправил до 4 символов после точки...
А по поводу форма потом действуй...Тогда, напротив поля не будет выводится ошибка..
Быстрый ответ:

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