Автор Тема: Что-то не то получается.  (Прочитано 3980 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн myname

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 66
  • +0/-0
  • 0
    • Просмотр профиля
Что-то не то получается.
« : 31 Января 2003, 06:36:36 »
Хочу написать скриптик регистрации юзеров, но не могу никак сделать проверку на наличие уже существующего логина.

if ($HTTP_GET_VARS[\'post\'] && (empty($username) || (empty($email)) || (empty($password)))) {

if (empty($username)) { $error1=\'Не введён логин
\'; } else { $error1=""; }
if (empty($email)) { $error2=\'Не введён e-mail
\'; } else { $error2=""; }
if (empty($password)) { $error3=\'Не введён пароль!
\'; } else { $error3=""; }

} else {

if ($HTTP_GET_VARS[\'post\']) {

include("server.php");

$query = "INSERT INTO account (username, email, password, IP) VALUES (\'$username\', \'$email\', \'$password\', \'$REMOTE_ADDR\')";
$result = mysql_query($query) or die("
error


");
$check=MySQL_Query("SELECT * FROM account WHERE username=\'$username\'");
if (MySQL_Num_Rows($check) !== 0) { $error5=\'Такой пользователь уже зарегистрирован!
\'; } else { $error5=""; }
//if (MySQL_Num_Rows($check) == 0) { echo \'takogo juzera eshjo net\'; }

$save_done=\'Спасибо, Ваши данные записаны.
\';
}

}

?>
------------------------------------------
Все мы люди, а людям свойственно ошибаться

Оффлайн semya

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 307
  • +0/-0
  • 0
    • Просмотр профиля
Что-то не то получается.
« Ответ #1 : 31 Января 2003, 10:01:19 »
страно, ты сначала записываешь нового пользователя, а потом проверяешь его на существование???

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Что-то не то получается.
« Ответ #2 : 31 Января 2003, 12:49:32 »
Вот тебе правильный код
Пользуйся им.
Если PHP меньше версии 4.1, то надо другие имена переменных.<?
if (isset(
$_POST[\'submit\']) {
  foreach($_POST as $key => $value) {
    if (!get_magic_quotes_gpc()) $_POST[$key]=addslashes($_POST[$key]);
    $$key=$_POST[$key]=trim(strip_tags($_POST[$key]));
  }
  include("server.php");
  $error=\'\';
  if (empty($username)) $error=\'<b>Не введён логин</b>
\';
  if (empty($email)) $error.=\'<b>Не введён e-mail</b>
\';
  if (empty($password)) $error.=\'<b>Не введён пароль!</b>
\'; 
  $check=MySQL_Query("SELECT * FROM account WHERE username=\'$username\'") or die(mysql_error());
  if (MySQL_Num_Rows($check) !== 0) $error.=\'<b>Такой пользователь уже зарегистрирован!</b>
\';
  
  if (!$error) {  
    $query = "INSERT INTO account (username, email, password, IP) 
VALUES (\'$username\', \'$email\', \'$password\', \'".$_SERVER[\'REMOTE_ADDR\']."\')";
    mysql_query($query) or die(mysql_error());
    Header("Location: $PHP_SELF"); //Ну, или на страничку со спасибом.
    exit;
  }
}
include \'design_top.php\';
if ($error) {
  echo $error;
  foreach($_POST as $key => $value) $$key=$_POST[$key]=stripslashes(htmlspecialchars($_POST[$key],ENT_QUOTES));
}
?>
<form>
<input type=text name=username value="<? echo $username ?>">
...
<input type=submit name=submit value="Отправить">
</form>
<? include \'design_bottom.php\'; ?>
В этом коде, кроме упрощения, есть еще очень много важных вещей, вообще упущеных тобой.
применять можно не только для этой, но и для любых других форм.
« Последнее редактирование: 31 Января 2003, 13:17:10 от RomikChef »

Оффлайн myname

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 66
  • +0/-0
  • 0
    • Просмотр профиля
Что-то не то получается.
« Ответ #3 : 31 Января 2003, 15:37:33 »
RomikChef Не работает твоя форма, понятия не имею почему.
1) не выводит незаполненные поля
2) не проходит проверку на уже существующий логин
а мне это обязательно надо. Привожу пример полностью всей формы:

if (isset($_POST[\'post\'])) {
  foreach($_POST as $key => $value) {
    if (!get_magic_quotes_gpc()) $_POST[$key]=addslashes($_POST[$key]);
     $$key=$_POST[$key]=trim(strip_tags($_POST[$key]));
  }
  include("server_divx.php");
  $error=\'\';
  if (empty($username)) $error=\'не введён логин
\';
  if (empty($email)) $error.=\'не введён e-mail
\';
  if (empty($password)) $error.=\'не введён пароль!
\';
  $check=MySQL_Query("SELECT * FROM account WHERE username=\'$username\'") or die(mysql_error());
  if (MySQL_Num_Rows($check) !== 0) $error.=\'есть такой пользователь!
\';
 
  if (!$error) {  
    $query = "INSERT INTO account (username, email, password, IP)
VALUES (\'$username\', \'$email\', \'$password\', \'".$_SERVER[\'REMOTE_ADDR\']."\')";
    mysql_query($query) or die(mysql_error());
    Header("Location: $PHP_SELF"); //Ну, или на страничку со спасибом.
    exit;
  }
}
if ($error) {
  echo $error;
  foreach($_POST as $key => $value)  $$key=$_POST[$key]=stripslashes(htmlspecialchars($_POST[$key],ENT_QUOTES));
}
?>



n/a


         
           
         
       

" method="POST">

   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
Ëîãèí:" size="25" maxlength="20" style="font-family: Verdana; font-size: 10;">
Âàø e-mail:" size="25" maxlength="20" style="font-family: Verdana; font-size: 10;">
Ïàðîëü:"size="25" maxlength="20" style="font-family: Verdana; font-size: 10;">
 




         

 


 



------------------------------------------
Все мы люди, а людям свойственно ошибаться

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Что-то не то получается.
« Ответ #4 : 31 Января 2003, 16:55:11 »
Естественно, оно не работает.
1. Зачем тебе лишняя переменная ?post=yes\'; , да еще и гетом?
У тебя есть сабмит. Ему надо поставить имя - submit и проверять его.

2. Вывод ошибки у тебя происходит ДО начала хтмл.
Вставь его куда надо.

3. value надо ПИСАТЬ. Не "", а значение поля.

Я же все это написал.
« Последнее редактирование: 31 Января 2003, 17:38:10 от RomikChef »

Оффлайн nagash

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 341
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.nagash.org
Что-то не то получается.
« Ответ #5 : 03 Февраля 2003, 02:25:27 »

Оффлайн nagash

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 341
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.nagash.org
Что-то не то получается.
« Ответ #6 : 03 Февраля 2003, 02:32:30 »
Цитировать

1. Зачем тебе лишняя переменная ?post=yes\'; , да еще и гетом?
У тебя есть сабмит. Ему надо поставить имя - submit и проверять его.

типа не на милиметр нельзя отойти от твоего скрипта?

2 myname пиши
if (isset($_GET[\'post\'])) {

Цитировать

3. value надо ПИСАТЬ. Не "", а значение поля.

вот никак не пойму а что это значит? =)

Оффлайн myname

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 66
  • +0/-0
  • 0
    • Просмотр профиля
Что-то не то получается.
« Ответ #7 : 03 Февраля 2003, 03:00:26 »
RomikChef Всё равно ничего не работает. Всё сделал в точности как у тебя, но не проходит скрипт проверку и всё тут! Если в форме не ввести данные, то выдаёт в ИЕ такого вида строку ?username=&email=&password=&submit=%CE%F2%EF%F0%E0%E2%E8%F2%FC, а если что-то ввести то выдаёт то же самое, только к строкам добавляет введённые данные: ?username=sss&email=sss&password=sss&submit=%CE%F2%EF%F0%E0%E2%E8%F2%FC

Вот форма ещё раз, выдели плиз цветом или жирным то, где в это ошибки и как их изменить. Спасибо заранее.

if (isset($_POST[\'submit\'])) {
  foreach($_POST as $key => $value) {
    if (!get_magic_quotes_gpc()) $_POST[$key]=addslashes($_POST[$key]);
     $$key=$_POST[$key]=trim(strip_tags($_POST[$key]));
  }
  include("server_divx.php");
  $error=\'\';
  if (empty($username)) $error=\'Не введён логин
\';
  if (empty($email)) $error.=\'Не введён e-mail
\';
  if (empty($password)) $error.=\'Не введён пароль!
\';
  $check=MySQL_Query("SELECT * FROM account WHERE username=\'$username\'") or die(mysql_error());
  if (MySQL_Num_Rows($check) !== 0) $error.=\'Такой пользователь уже зарегистрирован!
\';
 
  if (!$error) {  
    $query = "INSERT INTO account (username, email, password, IP)
VALUES (\'$username\', \'$email\', \'$password\', \'".$_SERVER[\'REMOTE_ADDR\']."\')";
    mysql_query($query) or die(mysql_error());
    Header("Location: $PHP_SELF"); //Ну, или на страничку со спасибом.
    exit;
  }
}
include \'index_files/html_menu.php\';
if ($error) {
  echo $error;
  foreach($_POST as $key => $value)  $$key=$_POST[$key]=stripslashes(htmlspecialchars($_POST[$key],ENT_QUOTES));
}
?>

         
           
         
       



   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
Логин:" size="25" maxlength="20" style="font-family: Verdana; font-size: 10;">
Ваш e-mail:" size="25" maxlength="20" style="font-family: Verdana; font-size: 10;">
Пароль:"size="25" maxlength="20" style="font-family: Verdana; font-size: 10;">
 




         


------------------------------------------
Все мы люди, а людям свойственно ошибаться

Оффлайн nagash

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 341
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.nagash.org
Что-то не то получается.
« Ответ #8 : 03 Февраля 2003, 09:27:55 »
а что его спрашивать он всё равно не заметит =))) за тучностью своих привилегий ему ничего не видно =)))
вместо

напиши

Оффлайн myname

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 66
  • +0/-0
  • 0
    • Просмотр профиля
Что-то не то получается.
« Ответ #9 : 03 Февраля 2003, 20:16:24 »
nagash я сам удивился, что он мне ответил :)
RomikChef спасибо. Работает.
Оффтопик.
------------------------------------------
Все мы люди, а людям свойственно ошибаться

Оффлайн Tronyx

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 826
  • +0/-0
  • 2
    • Просмотр профиля
Что-то не то получается.
« Ответ #10 : 03 Февраля 2003, 22:28:35 »
[closed]
С уважением, Владимир Гончаренко - COPI# 93
Ролевая онлайн игра

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28