Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> рандом не работает, защита от автоматической регистрации 
:(
    Опции темы
Orient
Дата 11.4.2006, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 17.7.2004

Репутация: нет
Всего: нет



Здравствуйте

Создаю форму для регистрации, на форме предусмотрен вывод картинки со случайным кодом, для защиты от автоматической регистрации. При попытке регистрации введенные даные пользователя проверяются, и если что-то с ними не так предоставляется возможность на той же форме их изменить, НО! Почему то, случайный код остается прежним! Если обновлять страницу вручную то код нормально рандомится, а если пытаться отсылать данные, то нет. Может кто подскажет в чем тут проблема?
PM MAIL   Вверх
skalex
Дата 11.4.2006, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хороший человек
**


Профиль
Группа: Участник Клуба
Сообщений: 895
Регистрация: 2.4.2004

Репутация: 8
Всего: 23



покажи HTML-код вывода рандомного числа. полагаю, что ты его из $_POST подставляешь ...
PM   Вверх
Orient
Дата 11.4.2006, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 17.7.2004

Репутация: нет
Всего: нет



Вот такой вот код:

Код

<?php
      $Mess = '';
     echo 'IsSetCheck='. isset( $_POST[ 'Check' ] ) .' <br>';

     if ( isset( $_POST[ 'Check' ] ) ) {
          if ( $_SESSION[ 'Code' ] != $_POST[ 'Code' ] ) {
                  $Mess = 'Code is wrong';
          } else {
                 $Mess = 'Code is wrong';
          }
     }


  $im = imagecreatefrompng( 'button1.png' );

  $white = imagecolorallocate($im, 255, 255, 255);
  $black = imagecolorallocate($im, 0, 0, 0);


  $yellow = imagecolorallocatealpha($im, 255, 255, 255, 20 );

  function generate($len) {
      $bukv = array('a','b','G','H','I','J','K','L','M','c','d','r','2','0','1','p','q','O','P','Q','R','S','T','U','V','8','9','3','4','5','s','t','E','F','u','v','w','x','y','z','A','B','C','D','N','e','f','g','h','i','j','6','7','m','n','o','k','l','W','X','Y','Z');
      $pass = '';
      for($i=0;$i<$len;$i++) {
          mt_srand((double)microtime( ) * 9999999999999);
          $randval = mt_rand(0,sizeof($bukv) -1);
          $pass .= $bukv[$randval];
      }
      return $pass;
  }
  $strval =  generate( 6 );

  $_SESSION[ 'Code' ] = $strval;


  imagettftext( $im, 14, 0, 10, 21, $yellow, "arial.ttf", $strval );

  imagepng( $im, 'button2.png' );
  imagedestroy($im);

?>

<html>
      <form name="Check" action="ddate.php" method="post">
          <table>
              <tr>
                  <td><?php echo $Mess; ?></td>
              </tr>
              <tr>
                  <td>picture</td>
                  <td><image src="button2.png"  /></td>
              </tr>
              <tr>
               <td><input name="Code" type="text" value=""></td>
              </tr>
              <tr>
               <td><input type="submit" value="Send"></td>
              </tr>
          </table>
      </form>
</html>

PM MAIL   Вверх
smartov
Дата 11.4.2006, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 7
Всего: 259



У тебя нету генерации рандомного seed-а
Это ж в доке описано. Следовало б вначале php_manual по mt_rand прочесть.
Там даже пример приведен.
Код

<?php
// seed with microseconds
function make_seed()
{
    list($usec, $sec) = explode(' ', microtime());
    return (float) $sec + ((float) $usec * 100000);
}
mt_srand(make_seed());
$randval = mt_rand();
?> 


Это сообщение отредактировал(а) smartov - 11.4.2006, 14:54
PM MAIL   Вверх
Orient
Дата 11.4.2006, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 17.7.2004

Репутация: нет
Всего: нет



Если бы все было так просто. :-( Читал я мануал, и рекомендую Вам обновить Ваши знания smile


Цитата

Замечание: Начиная с PHP 4.2.0, больше нет необходимости инициализировать генератор случайных чисел функциями srand() или mt_srand(), поскольку теперь это происходит автоматически.



Код рандомится, если обновлять страницу, а если отправлять данные страницы нет!
P.S. код вставлял:
Код

<?php
// seed with microseconds
function make_seed()
{
    list($usec, $sec) = explode(' ', microtime());
    return (float) $sec + ((float) $usec * 100000);
}
mt_srand(make_seed());
$randval = mt_rand();
?> 

все тоже самое



Это сообщение отредактировал(а) Orient - 11.4.2006, 15:22
PM MAIL   Вверх
smartov
Дата 11.4.2006, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 7
Всего: 259



Orient,
Цитата(Orient @ 11.4.2006, 14:18 Найти цитируемый пост)
рекомендую Вам обновить Ваши знания

Благодарю. Запямотовал. Читал же уже однажды.

Проверил код у себя - рандом генериться нормально....
То есть добавил в твой код
Код

$strval =  generate( 6 );
echo $strval;

И строка все время разная...

У тебя что-то в PHP поломалось smile
Добавлено @ 15:44
P.S. Хотя картинка у меня не генерится все равно ;) но я думаю это уже проблемы у меня в отсутствии модулей.

Это сообщение отредактировал(а) smartov - 11.4.2006, 15:44
PM MAIL   Вверх
Orient
Дата 11.4.2006, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 17.7.2004

Репутация: нет
Всего: нет



Эх... блин. Сия картина и на моем компе и на компе заказчика. Что ж блин делать
PM MAIL   Вверх
smartov
Дата 11.4.2006, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 7
Всего: 259



Какой версии ПХП?
Он случайно не работает в safe-mode?
PM MAIL   Вверх
Bangladesh
Дата 11.4.2006, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AsBest
***


Профиль
Группа: Завсегдатай
Сообщений: 1089
Регистрация: 4.9.2004
Где: Калининград

Репутация: нет
Всего: 17



как я правильно понял, если код не правильный то должен отобразиться другой рисунок с новым кодом, но он не отображается и сохраняется старый и если эту страницу обновить в ручную (т.е. нажать на refresh в броузере), то выводится новая картинка. если так оно и есть, то видимо у тебя кешируется страница и дело тут не в скрипте. попробуй сделать так:

Код

<html>
 <!--Добавь это-->
            <head>
               <meta http-equiv="Cache-Control" content="no-cache"> 
            </head>
 <!--Добавь это-->

 <table>
 ...
</html>


если это не поможет, то можно сделать так (если код неправильный, то обновить страницу автоматически):

Код

<html>
 <!--Добавь это-->
            <head>
                <?php 
                   if($code_error) echo "<meta http-equiv=\"Refresh\" content=\"0; url=way/of/your/file.html\">"    

                ?> 
            </head>
 <!--Добавь это-->

 <table>
 ...
</html>


Это сообщение отредактировал(а) I, GyoZ - 11.4.2006, 20:45


--------------------
ок
PM MAIL WWW ICQ Skype   Вверх
smartov
Дата 12.4.2006, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 7
Всего: 259



I, GyoZ, и воистину
Как это я сам забыл про это....
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0526 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.