Почитайте мой код, пожалуйста.

proWoke

Новичок
Почитайте мой код, пожалуйста.

Вот я не могу понять, почему он всё время выдаёт "Капча должна сожержать только цифры". По моему плану, у меня должна быть проверка поля ввода капчи, если ли в ней лишнии символы или нет ( там только цифры должны быть). А он мне постоянно выдаёт "Капча должна содержать только цифры". Отлаживаю уже полтора часа, ничё не понимаю. Ну должен он работать же так, как я хочу! Ан нет...
PHP:
<?
session_start();
require_once "model.php";
connect_bd ("Localhost", "root", "123", "guestbook");
if ($delid = @$_GET['delete'])
 {	
 delid ($delid);
 }
if (isset ($_POST['knopka']))
 { 
  if (empty($_POST['int']) or empty($_POST['name']) or empty($_POST['textarea']))
   {
   echo "Есть пустые поля"."<br>";	
   } 
   else 
   {
   $search = preg_match ("/\D+/i", $_POST['int']);
   if ($search === "0") 
    {
    if ($_SESSION['count'] == $_POST['int']) 
     {
     $updatename = mysql_real_escape_string($_POST['name']);
     $updatetext = mysql_real_escape_string($_POST['textarea']);
     addindb ($updatename, $updatetext); 
     } 
     else 
     {	
     echo "Капчи не равны";
     } 
    }
    else
    {
    echo "капча должна содержать только цифры"; 
    }
   } 
  }
$datearray = arraydb();
include "view.htm";
?>
 

iceman

говнокодер
$search = preg_match ("/\D+/i", $_POST['int']);
if ($search === "0")


ужс, это что такое???
 

zerkms

TDD infected
Команда форума
это глупая проверка, что в строке есть не цифры )
 

iceman

говнокодер
proWoke
preg_match возвращает число int а не строку string, в условие у тебя проверка еще и на тип...
 

proWoke

Новичок
Автор оригинала: iceman
proWoke
preg_match возвращает число int а не строку string, в условие у тебя проверка еще и на тип...
Ну я понимаю это. Чтобы 0 был наверняка, вроде же нету большой разницы между "===" и "==", просто первое более точно.

-~{}~ 30.09.10 19:23:

Автор оригинала: zerkms
это глупая проверка, что в строке есть не цифры )
А почему глупая? Вмысле в капче вообще это не надо делать или у меня реализация глупая этого?
 

zerkms

TDD infected
Команда форума
Ну я понимаю это. Чтобы 0 был наверняка, вроде же нету большой разницы между "===" и "==", просто первое более точно.
разница огромная. если бы ты её понимал - тогда этого вопроса не было бы.

А почему глупая? Вмысле в капче вообще это не надо делать или у меня реализация глупая этого?
потому что вообще нет смысла проверять. какая разница, по какой причине капча не совпала? главное, что она не совпала.
 

proWoke

Новичок
Автор оригинала: zerkms
разница огромная. если бы ты её понимал - тогда этого вопроса не было бы.


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

zerkms

TDD infected
Команда форума
по поводу == и ===:

var_dump(0 == '0');
var_dump(0 === '0');

Сравни.
 

proWoke

Новичок
Автор оригинала: proWoke
Понятно, ну я больше для себя хотел проверить, для тренировки да и просто задачу такую поставил и сделать хотел.
Ну да, если написать отрицательную цифру "-27", то он тоже говорит что не числовое там значение. В общем глупая затея была.
 

Вурдалак

Продвинутый новичок
Цифра — это значок, закорючка. Из цифр записывают числа. Цифра не может быть отрицательной. Ровно как и положительной.
 

iceman

говнокодер
proWoke
"0" - string
0 - int

"===" сравнивает еще и тип, поэтому у тебя и не срабатывает условие!
 
Сверху