[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проверка регистрационных данных.
savelikan
У меня есть страничка регистрации. Она методом POST передает в файл-обработчик.
Почему не работает проверка на существования массива (он всегда существует). В чем проблема и ка ее решить?

PHP
IF (isset($_POST['userlogin'] & $_POST[userlogin] & $_POST[userpass] & $_POST[userpassr] & $_POST[usermail])) 
{echo "Продолжения регистрации ";} 
else 
{ echo "Вы не ввели всех данных";}




Спустя 3 минуты, 11 секунд (13.10.2009 - 22:42) sergeiss написал(а):
А что за аргумент ты передаешь функции isset, ты сам-то понял? Это некое число получается у тебя. А надо - имя переменной.
Если хочешь проверить одновременно несколько переменных, то их перечисли через запятую, чтобы было просто несколько аргументов у функции.

Спустя 6 минут, 19 секунд (13.10.2009 - 22:48) twin написал(а):
& маловато будет

Спустя 17 минут, 19 секунд (13.10.2009 - 23:06) savelikan написал(а):
Цитата (sergeiss @ 13.10.2009 - 21:42)
А что за аргумент ты передаешь функции isset, ты сам-то понял? Это некое число получается у тебя. А надо - имя переменной.
Если хочешь проверить одновременно несколько переменных, то их перечисли через запятую, чтобы было просто несколько аргументов у функции.

Ну я передаю имя пользователя, пароль, логин... А как иначе? ISSET не подходит? Тогда как?

Спустя 6 минут, 26 секунд (13.10.2009 - 23:12) twin написал(а):
&&

Спустя 2 минуты, 35 секунд (13.10.2009 - 23:15) twin написал(а):
Вообще может там запятая имелась ввиду? Или скобки не так? Что за странная конструкция?

Спустя 9 часов, 29 минут, 15 секунд (14.10.2009 - 08:44) sergeiss написал(а):
Цитата (savelikan @ 14.10.2009 - 00:06)
ISSET не подходит? Тогда как?

Я же написал:
Цитата (sergeiss @ 13.10.2009 - 23:42)
Если хочешь проверить одновременно несколько переменных, то их перечисли через запятую, чтобы было просто несколько аргументов у функции.

Это я про isset и говорил, вобщем-то...

Спустя 1 день, 12 часов, 33 минуты, 34 секунды (15.10.2009 - 21:17) savelikan написал(а):
PHP
case "register":
echo 
"<H2>Сторінка реєстрацції нового акаунта</H2>";
echo <<<TEXT
<form method=POST action=$global_user$user_register&action=getregister>
<TABLE border=2>
<TR><TD width=200>Ваш логін:</TD><TD width=300><INPUT type=text name=userlogin size=20 maxlength=10><FONT color=green size=2>Не більше 10 символів!</FONT></TD></TR>
<TR><TD width=200>Ваш пароль:</TD><TD width=300><INPUT type=text name=userpass size=20 maxlength=20><FONT color=green size=2>Не більше 20 символів!</FONT></TD></TR>
<TR><TD width=200>Повторіть пароль*:</TD><TD width=300><INPUT type=text name=userpassr size=20 maxlength=20><FONT color=green size=2>Не більше 20 символів!</FONT></TD></TR>
<TR><TD width=200>Ваш e-mail**:</TD><TD width=300><INPUT type=text name=usermail size=20 maxlength=20><FONT color=green size=2>Не більше 20 символів!</FONT></TD></TR>
<TR><TD COLSPAN=2><INPUT type=checkbox name=agree><FONT color=green size=2>Я згідний з правилами користування і хочу зареєструвати новий акаунт!</FONT>
<BR><INPUT type=submit value='Зареєструватися'></TD></TR></TABLE>
<FONT color=red size=2>Зверніть увагу:</FONT>
<FONT size=2>
<BR>*Паролі повинні співпадати.
<BR>**На Вашу електронну адресу буде відправлений лист. Для подтвердження реєстрації Вам потрібно буде відповісти.
</FONT>
TEXT;
$title "Зареєструвати новий акаунт";
break;

case 
"getregister":
IF (isset(
$_POST['userlogin'], $_POST[userlogin], $_POST[userpass], $_POST[userpassr], $_POST[usermail])) 
 {echo 
"Все данные ";} else { echo "Ошибка";}
$gg str_shuffle($_POST[userlogin]);
echo 
$gg;
break;

Всегда отображает "Все данные "

Спустя 25 минут, 7 секунд (15.10.2009 - 21:42) sergeiss написал(а):
А, вот дело еще в чем smile.gif

В текущем коде у тебя проверяется, были ли переданы значения для определенных полей. Но это - всё текстовые поля!!! Поэтому для них передается даже пустая величина.
Для чекбокс - там да, не передается ничего, если он не выбран был. А текстовый инпут - всегда.
Поэтому. Проверка на наличие этих полей - это тоже правильно. Дабы никакой хакер не подсунул "кривые" данные. Но тебе надо проверить еще и то, что в этих полях что-то было прислано. И сделать это надо внутри блока, проверяющего наличие самих полей.
И примечание по ходу дела: вовсе не обязательно один оператор заключать в фигурные скобки.

Примерно так получится:
PHP
if (isset($_POST['userlogin'], $_POST[userlogin], $_POST[userpass], $_POST[userpassr], $_POST[usermail]))
{
  if( strlen( trim( $_POST['userlogin'] ) ) == 0 )
    echo 'Не указан логин<br>';
  // и далее проверяем все введенные данные, в т.ч. совпадение пароля и его повтора

  echo "Все данные ";

}
 
else 
  echo 
"Ошибка";


Если хотя бы каких-то данных нету, то надо сделать выход из блока анализа, и показ формы заново, с указанием уже введенных данных... А это требует переноса формы сверху вниз, и некоторое изменение логики работы скрипта.

Спустя 43 минуты, 56 секунд (15.10.2009 - 22:26) savelikan написал(а):
СПАСИБ!
Пробовал я написать код отправки письма на почту.
PHP
mail("почта@ukr.net""the subject"$message
            
"From: webmaster@почта.org.ua \r\n" 
            
."X-Mailer: PHP/".phpversion());

Ошибки нету. но и письма тоже нету. Что ето может быть?

Спустя 7 минут, 22 секунды (15.10.2009 - 22:34) Gabriel написал(а):
savelikan
смотри у твина в подписи

Спустя 21 час, 21 минута, 42 секунды (16.10.2009 - 19:55) savelikan написал(а):
Помогло.
А теперь оно сохряняет письмо, а не отправляет.

Спустя 1 час, 32 минуты, 22 секунды (16.10.2009 - 21:28) savelikan написал(а):
Аааа. Вот такой интересный вопрос.
PHP
$db mysql_connect('localhost'sasha123);
        
mysql_select_db('site'$db);
        
$result mysql_query("SELECT* FROM `users`"$db);
        
$check mysql_query("SELECT * FROM users WHERE login = '$login'");
        if (
$check == TRUE) {
        echo 
"<FONT color=red face=verdana>Помилка!</FONT> Користувач з таким логіном вже існує. Оберіть інший логін. <BR>";
        } else {
        
$SQLadd mysql_query ("INSERT INTO `users` ( `login` , `password` , `date` , `email` , `regcode` , `active`) VALUES ('$login', '$password', '$date', '$email', 
        '$regcode', '$activate')"
);
        }

Етод код должен проверять, есть ли такой логин в базе. Если есть - ошибка. Если нет - добавть в базу. Но всегда пишет что уже такая записть есть. Но ее нет. Подскажите, пожалуйста, в чем может быть проблема?

Спустя 23 минуты, 25 секунд (16.10.2009 - 21:51) Kuliev написал(а):
savelikan
PHP
$check = mysql_query("SELECT * FROM users WHERE login = '".$login."'");
        if (mysql_num_rows($check)  >  0) {
        echo "<FONT color=red face=verdana>Помилка!</FONT> Користувач з таким логіном вже існує. Оберіть інший логін. <BR>";
        } else {
        $SQLadd = mysql_query ("INSERT INTO `users` ( `login` , `password` , `date` , `email` , `regcode` , `active`) VALUES ('$login', '$password', '$date', '$email', 
        '$regcode', '$activate')"
);
        }

Спустя 14 минут, 36 секунд (16.10.2009 - 22:06) savelikan написал(а):
Огромное СПАСИБ!
ТАм была ошибка только в етом
PHP
"SELECT * FROM users WHERE login = '".$login."'"
?

Спустя 2 минуты, 35 секунд (16.10.2009 - 22:08) Kuliev написал(а):
savelikan
нет. там еще нет защиты от SQL инъекции

Спустя 24 минуты, 51 секунда (16.10.2009 - 22:33) savelikan написал(а):
СПАСИБ! А где можно побольше узнать об етой инъекции?

Спустя 4 минуты, 53 секунды (16.10.2009 - 22:38) Kuliev написал(а):
savelikan
читай про mysql_real_escape_string()

Спустя 3 минуты, 54 секунды (16.10.2009 - 22:42) savelikan написал(а):
Ммм еще один вопросик.
<script language="JavaScript">
if (test.agr[].checked) {document.getElementById('disp').style.display='';}
</script>
.....
<INPUT type=checkbox id='agr'><FONT color=green size=2>Я согласен с условиями...!</FONT>
<BR><INPUT style='display:none' id=disp type=submit value='Зарегистрироватся'>

Я делаю, чтоб кнопка ЗАРЕГИСТРИРОВАТСЯ отображалась только после согласия с условиями. Она не отображается.

Спустя 1 день, 12 часов, 38 минут (18.10.2009 - 11:20) savelikan написал(а):
И ещё хотелось бы узнать маленькую деталь.
PHP
if(substr(PHP_OS03) == "WIN"
$n "\r\n"
else 
$n "\n"
$to 'savelikan@ukr.net';       
$from 'saveli@i.ua'
$subject 'Реєстрація акаунта на ...'
$subject '=?utf-8?b?'base64_encode($subject) .'?='
$headers 'Content-type: text/plain; charset="utf-8"'$n
$headers .= 'From: <'$from .'>'$n
$headers .= 'MIME-Version: 1.0'$n
$headers .= 'Date: 'date('D, d M Y h:i:s O') . $n
$message 'Для завершення реєстрації перейдіть за посиланням:'
mail($to$subject$message$headers);

Написал я код. Загрузил на сайт. А он ничего не отправляет. Что ето может быть?

Спустя 2 часа, 47 минут, 40 секунд (18.10.2009 - 14:08) twin написал(а):
Это не маленькая деталь... Вот тут написано, какая. smile.gif

Спустя 4 минуты, 48 секунд (18.10.2009 - 14:13) twin написал(а):
А еще может быть отключена miil() на хостинге.
Попробуй это запустить:

PHP
<?php
    
echo function_exists('mail')?'Включено':'Отключено';

Спустя 6 дней, 22 часа, 32 минуты, 11 секунд (25.10.2009 - 13:45) Санек написал(а):
здраствуйте!
У меня есть капча
PHP
<?
$r=rand(1000000,9999999);

for(
$i=0;$i 7;$i++)//разбиваем секретный код на массив чисел
    
$arr[$i]=substr($r,$i,1);

$im=imagecreate(130,40);//создаем картинку
imagecolorallocate($im,255,255,255);
$a=0;
for(
$i=0;$i 7;$i++)//наносим код на картинку
{
    
$color=imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
    
imagestring($im,rand(2,9),$a+=15,rand(0,20),$arr[$i],$color);
}
header("Content-type: image/jpeg");
imagejpeg($im,'',100);//выводим капчу


и форма входа
PHP
<?

        echo 
"
        <TABLE width=100%><TR><TD bgcolor=#4A708B><FONT color=white size=3><B>Увійти на сайт</B></FONT></TD></TR><TR><TD>
            <form method=POST action=$global_user$user_login>
            <TABLE width=300 border=1>
            <TR><TD width=150>Логін</TD><TD><INPUT type=text size=20 name=userlogin></TD></TR>
            <TR><TD width=150>Пароль</TD><TD><INPUT type=text size=20 name=userpass></TD></TR>
            <TR><TD width=150>$r</TD><TD><INPUT type=text size=20></TD></TR>
            <TR><TD colspan=2 align=center><INPUT type=submit value='Увійти'></TD></TR></TABLE>
            </FORM>
        </TABLE>
    "
;


Если написать include ('capcha.php') сверху, то отображается толька капча. Если снизу - Warning: Cannot modify header information - headers already sent by (output started at Z:\home\test1.ru\www\content\user\login.php:13) in Z:\home\test1.ru\www\content\user\capcha.php on line 15.

Про то, что нада открыть сесию я знаю, но хочу разобратся с капчой.

Спустя 36 минут, 25 секунд (25.10.2009 - 14:21) savelikan написал(а):
Собственно меня ето тоже интересует

Спустя 1 день, 5 часов, 10 минут, 9 секунд (26.10.2009 - 19:31) savelikan написал(а):
^^^^^Посоветуйте хоть что-либо^^^^^

Спустя 16 минут, 14 секунд (26.10.2009 - 19:48) Gabriel написал(а):
savelikan
а че каптчю советовать то? TyT

Спустя 4 минуты, 23 секунды (26.10.2009 - 19:52) savelikan написал(а):
Спасибо, но проблема в том, что как только я добавлю
PHP
header("Content-type: image/jpeg");

сразу ошибка
HTML
Cannot modify header information - headers already sent by (output started at Z:\home\test1.ru\www\content\user\login.php:13) in Z:\home\test1.ru\www\content\user\capcha.php on line 15.

Спустя 17 минут, 47 секунд (26.10.2009 - 20:10) Gabriel написал(а):
переведи ошибку и чтай про ob_start


_____________
Одесса - мой город!)))
Быстрый ответ:

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