Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Сбрасывается переменная после submit, PHP_SELF

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Потерял логику, выручайте чайника
Марик
Отправлено: 16 Октября, 2015 - 15:51:22
Post Id



Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Окт. 2015  


Помог: 0 раз(а)




Ребята, косяк с "самодельной капчой", помогите.
Фишка в том что я ввожу в поле для капчи результат мат. действия, нажимаю submit, Обработчик формы PHP_self, начинаю проверять робот или нет, но после submit капча генерирует уже новое число. а сравнивает его с введенным старым.
Код прилагаю.
Начинаю изучать, где-то я потерял логику или что-то недоучил, подскажите, умные люди...

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?php
  3.                                 $random_img = rand(1, 7);
  4.                                 $random= rand(1, 100);
  5.                                 $capcha_result = $random + $random_img;
  6.                                 if (isset($_POST['submit'])) {
  7.                                        
  8.                                         $form = false;
  9.                                        
  10.                                         $capcha = $_POST['capcha'];
  11.                                        
  12.                                        
  13.                                         if (($capcha != $capcha_result) or (empty($capcha))) {
  14.                                                 echo '<p class="important">Похоже, что вы робот, попробуйте еще раз</p>';
  15.                                                 echo $capcha;
  16.                                                 echo '<p>'.$capcha_result. '</p>';
  17.                                                 $form = true;
  18.                                         }      
  19.                                        
  20.                                         if (isset($order)) {
  21.                                                 echo '<p class="important">Вы не согласились с правилами </p>';
  22.                                                 $form = true;
  23.                                         }
  24.                                        
  25.                                         if  (!(($capcha != $random + $random_img) or (empty($capcha))) and (!isset($order)) ) {
  26.                                                 $kategoria = $_POST['kategoria'];
  27.                                                 $url = $_POST['url'];
  28.                                                 $name = $_POST['name'];
  29.                                                 $description = $_POST['description'];
  30.                                                 $author = $_POST['author'];
  31.                                                 $email = $_POST['email'];
  32.                                                 echo 'Все получилось';
  33.                                         }      
  34.                                 }                      
  35.                                
  36.                                 else    {
  37.                                         $form = true;
  38.                                 }
  39.                                
  40.                                 if ($form) {
  41.                                 ?>     
  42.                                         <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="POST" class="add_site_form">
  43.                                                 <p>Выберите категорию сайта:</br>
  44.                                                 <select size="1" name="kategoria">
  45.                                                         <option value='0'>
  46.                                                         <option value='1'>Аппаратное обеспечение
  47.                                                         <option value='2'>Программное обеспечение
  48.                                                         <option value='3'>Интернет
  49.                                                         <option value='4'>Мобильная связь
  50.                                                         <option value='5'>Сети
  51.                                                         <option value='6'>Безопасность
  52.                                                         <option value='7'>Игры
  53.                                                         <option value='8'>Ремонт и обслуживание
  54.                                                         <option value='9'>Интернет-магазины
  55.                                                         </select>
  56.                                                 <p>Адрес сайта (без http и www)</br><input name='url' type='text'  value='<?php echo $url; ?>'></p>
  57.                                                 <p>Название сайта (не более 40 символов)<br><input name='name' type='text'  value="<?php echo $name; ?>"></p>
  58.                                                 <p>Описание сайта (не более 500 символов)<br><textarea name='description' rows='4' value="<?php echo $description; ?>"></textarea>
  59.                                                 <p>Ваше имя<br><input name='author' type='text'  value="<?php echo $author; ?>"></p>
  60.                                                 <p>Ваш email (не публикуется)<br><input name='email' type='text'  value="<?php echo $email; ?>"></p>
  61.                                                 <p>Я согласен с <a href="order.php">правилами каталога</a> <input type="checkbox" name="order"></p>
  62.                                                 <p>
  63.                                                         Математический результат:
  64.                                                         <?php echo $random; ?> + <img src="images/capcha/<?php echo $random_img; ?>.png">= <input name='capcha' type='text' class="capcha">
  65.                                                 </p>
  66.                                                 <p style="text-align: center;"><input name='submit' type='submit' value='Добавить'></p>
  67.                                         </form>
  68.                                 <?php
  69.                                 }      
  70.  

(Отредактировано автором: 16 Октября, 2015 - 15:54:19)

 
 Top
Panoptik
Отправлено: 16 Октября, 2015 - 16:01:51
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




используйте сессию для хранения текущего значения капчи

алгоритм такой
пользователь зашел на страницу впервый раз
генерируете циферки для капчи
результат записываете в сессию
показываете циферки на странице пользователю

пользователь ввел результат
достаете число из сессии
сравниваете с введенным числом
если все ок - идете дальше
если нет - генерируете новую капчу и снова отображаете пользователю страницу с формой и предзаполненными полями из запроса + новую капчу

если у вас есть функция обновления капчи (через аякс) то нужно всего лишь сгенерировать новое число, записать его в сессию и показать пользователю новые числа


-----
Just do it
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB