|
|
|
| День добрый граждане.
Возник такой вот вопрос
Обработчик:
<?php
session_start();
$input=@$_POST['input'];
$code=$_SESSION['code'];
if($input === $code){
print'OK!';
echo $_SESSION['code'];
}else{
print'Error<br/>';
echo $_SESSION['code'];
echo $_POST['input'];
}
?>
|
Форма:
<?php
session_start();
$cod = md5(uniqid(rand(),0));
$code=substr($cod,26);
$_SESSION['code']=$code;
print'<form action="form.php" method="post">
<input type="text" name="input"/>
<input type="submit" value="Submit" />
<img src="img.php" alt=""><br/>
</form>';
echo$_SESSION['code'];
?>
|
Картинка:
<?php
session_start();
header("Content-type: image/jpeg");
$im = imagecreate(400, 30);
$white = imagecolorallocate($im, 255, 255, 255);
$black = imagecolorallocate($im, 0, 0, 0);
$code=$_SESSION['code'];
imagettftext($im, 20, 0, 10, 20, $black, "fonts/john.ttf","$code");
imagejpeg($im);
imagedestroy($im);
?>
|
Почему условие не выполняется???
Ведь переменные равны! | |
|
|
|
|
|
|
|
для: nek-v
(20.06.2008 в 11:34)
| |
<?php
session_start();
$input=$_POST['input'];
$code=$_SESSION['code'];
if($input == $code){
print'OK!';
echo $_SESSION['code'];
}else{
print'Error<br/>';
echo $_SESSION['code'];
echo $_POST['input'];
}
?>
|
$a == $b Равно TRUE если $a равно $b.
$a === $b Тождественно равно TRUE если $a равно $b и имеет тот же тип. (Добавлено в PHP 4)
$a != $b Не равно TRUE если $a не равно $b.
$a <> $b Не равно TRUE если $a не равно $b.
$a !== $b Тождественно не равно TRUE если $a не равно $b или в случае, если они разных типов (Добавлено в PHP 4)
$a < $b Меньше TRUE если $a строго меньше $b.
$a > $b Больше TRUE если $a строго больше $b.
$a <= $b Меньше или равно TRUE если $a is меньше или равно $b.
$a >= $b Больше или равно TRUE если $a больше или равно $b.
Операторы сравнения | |
|
|
|
|
|
|
|
для: Zend72
(20.06.2008 в 11:57)
| | Я тоже считаю, что операция тождественного сравнения здесь лишняя.
Но до меня не доходит, почему это может повлиять на результат. Типы переменных-то совпадают... | |
|
|
|
|
|
|
|
для: Trianon
(20.06.2008 в 12:43)
| | Тонкостей не знаю но у него изначально было
Зачем нужен символ @ ? | |
|
|
|
|
|
|
|
для: Zend72
(20.06.2008 в 12:46)
| | >Тонкостей не знаю но у него изначально было
>$input=@$_POST['input'];
>Зачем нужен символ @ ?
Например, чтоб не было ругани, когда скрипт вызван не из формы, а через GET.
Так или иначе @ никак не повлияет на тип значения, если это значение пришло из формы. | |
|
|
|
|
|
|
|
для: nek-v
(20.06.2008 в 11:34)
| | Зачем
сделай так
| |
|
|
|
|
|
|
|
для: mihdan
(20.06.2008 в 11:57)
| | пробовал и так, не помогает... | |
|
|
|
|
|
|
|
для: nek-v
(20.06.2008 в 14:05)
| | Надо смотреть на значения более точно.
замените
print'Error<br/>';
echo $_SESSION['code'];
echo $_POST['input'];
|
на
print 'Error';
echo "<br/>Session code: ". base64_encode($code);
echo "<br/>Input code: ". base64_encode($input);
|
| |
|
|
|
|
|
|
|
для: Trianon
(20.06.2008 в 14:16)
| | Спасибо граждане! Отыскал я проблему. Все дело в кривизне рук при настройке php на локалхосте. | |
|
|
|
|
|
|
|
для: nek-v
(20.06.2008 в 14:27)
| | Возможно кто либо еще сталкнется с подобной проблемой... Не могли бы вы описать решение которое нашли: что конкретно в настройке PHP на localhost было неверно? | |
|
|
|
|
|
|
|
для: Zend72
(20.06.2008 в 15:08)
| | Блок настроек сессий.
А именно тот код что я дал это каркас, там много чего еше есть.
у меня конфликтовали настройки php и session_save_path() | |
|
|
|