Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сравнение чисел
 
 автор: Kaizer131   (14.02.2009 в 13:44)   письмо автору
 
 

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

<?php header("Content-Type: text/html; charset=utf-8"); ?>


<?php $r=rand(1,999999);?>
 if(isset($_POST['registr'])) 

    $err = array();       
if($rand!=$r)
  $err[] = "Числа не совпадают.";      
    # Если нет ошибок, то добавляем в БД нового пользователя 
    if(count($err) == 0) 
    { 
                
    mysql_query(" INSERT INTO `regis`  VALUES ('',NOW(),'$login','$password','$email','$salt')")

        or die(mysql_error()); 
        header("Location: registr.php"); exit(); 
    } 
    else 
    { 
        print "<b>При регистрации произошли следующие ошибки:</b><br>"; 
        foreach($err AS $error) 
        { 
            print $error."<br>"; 
        } 
    } 
}

?>
Введи число<? echo $r?>
<input name="rand"  type="text" /> 








  Ответить  
 
 автор: cheops   (14.02.2009 в 13:47)   письмо автору
 
   для: Kaizer131   (14.02.2009 в 13:44)
 

Так не пойдет - у вас числа каждый раз разные. При первой загрузке данных - генерируется одно число, при отправке данных и повторной загрузки страницы - другое. Сгенерированное при первой загрузке число необходимо помещать в сессию и сравнивать результат с числом из сессии, а не с вновь сгенерированным числом, которое отличается от того, что предлагалось на первой странице.

  Ответить  
 
 автор: Kaizer131   (14.02.2009 в 13:58)   письмо автору
 
   для: cheops   (14.02.2009 в 13:47)
 

Хорошо ,а как это сделать ?

  Ответить  
 
 автор: cheops   (14.02.2009 в 14:26)   письмо автору
 
   для: Kaizer131   (14.02.2009 в 13:58)
 

Примерно так
<?php
  header
("Content-Type: text/html; charset=utf-8");
  
session_start();
?> 

<?php
if(empty($_POST['registr']))
{
  
$_SESSION['r']=rand(1,999999);
}
else
{  
    
$err = array();        
    if(
$_SESSION['r'] != $_POST['rand'])   $err[] = "Числа не совпадают.";       
    
# Если нет ошибок, то добавляем в БД нового пользователя  
    
if(count($err) == 0)  
    {  
                 
    
mysql_query(" INSERT INTO `regis`  VALUES ('',NOW(),'$login','$password','$email','$salt')"

        or die(
mysql_error());  
        
header("Location: registr.php"); exit();  
    }  
    else  
    {  
        print 
"<b>При регистрации произошли следующие ошибки:</b><br>";  
        foreach(
$err AS $error)  
        {  
            print 
$error."<br>";  
        }  
    }  


?> 
Введи число<? echo $_SESSION['r']; ?> 
<input name="rand"  type="text" /> 

  Ответить  
 
 автор: Kaizer131   (14.02.2009 в 14:58)   письмо автору
 
   для: cheops   (14.02.2009 в 14:26)
 

спасибо, попробую :)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования