|
|
|
| Вообще как-то грустно.
Получаем пост $_POST['standard'] = 0;
<?
$_POST['standard'] = $_POST['standard'] != '' ? (int)$_POST['standard'] : ''; // прошло получили (int)$_POST['standard']
|
<?
if($_POST['standard'] != '') $query .= "and `standard` = {$_POST['standard']} "; // не прошло с таким же постом равным 0.
|
получилось только if($_POST['standard'] !== '') $query .= "and `standard` = {$_POST['standard']} ";
но оно же не в тему тут.
Как это? | |
|
|
|
|
|
|
|
для: sl1p
(30.12.2008 в 20:06)
| | в тему. только я бы написал так.
<?
if($_POST['standard'] == '') $_POST['standard'] = false;
//...
if($_POST['standard'] !== false) $query .= " and `standard` = ".intval($_POST['standard']);
|
| |
|
|
|
|
|
|
|
для: Trianon
(30.12.2008 в 20:19)
| | а как-же Notice ?))
и где проверка if (isset($_POST['standard'])) ?
// отрицательное значение тоже пройдёт ,
И вопрос может-ли что-то получиться , если сравненивать отрицательное число со значениями unsigned ? | |
|
|
|
|
|
|
|
для: xx77
(30.12.2008 в 21:07)
| | в коде проверка выполнялась на пустоту поля, а не на отсутствие данных.
Я не вправе постулировать иное. | |
|
|
|
|
|
|
|
для: Trianon
(30.12.2008 в 21:09)
| | не успел вовремя добавить вопрос в предидущее сообщение.
Вобщем так всё понятно если там и там числа со знаком просто не найдёт ,если такого нет.
Но возможна-ли какая-нибудь ошибка или наоборот совпадение если unsigned ? Достаточно-ли intval() ? | |
|
|
|
|
|
|
|
для: xx77
(30.12.2008 в 21:30)
| | Достаточно-ли intval() ?
Достаточно. | |
|
|
|
|
|
|
|
для: AcidTrash
(30.12.2008 в 21:37)
| | Всмысле хотите сказать достаточная защита от инъекции ?
Мне не это интересно , мне всегда как-то кажется не совсем оптимальным intval .
в этом случае сначала из строки получается число (signed) , чтобы опять стать строкой , которую mysql сделает снова числом по непонятной мне логике. И просто хотел поинтересоваться каким образом запишутся байты этого int | |
|
|
|
|
|
|
|
для: xx77
(30.12.2008 в 21:53)
| | Всмысле хотите сказать достаточная защита от инъекции ?
Да, другое не пропустит.
этом случае сначала из строки получается число (signed) , чтобы опять стать строкой , которую mysql сделает снова числом по непонятной мне логике
Нет.
И просто хотел поинтересоваться каким образом запишутся байты этого int
И сообственно зачем? | |
|
|
|
|
|
|
|
для: AcidTrash
(30.12.2008 в 22:06)
| | Просто было интересно.
Вообщето разобрался ,
похоже имеет значение применять-ли intval() ,
только при значениях unsigned больше максимального int.
поскольку intval(0x80000001) !== 0x80000001
, а mysql сама приводит числа к типу который у сравниваемого столбца
, если небыло минуса
и даже принимает такие 0x80000001 цифры. | |
|
|
|
|
|
|
|
для: xx77
(30.12.2008 в 21:07)
| | >и где проверка if (isset($_POST['standard'])) ?
это аякс, я жсом собираю все поля и поэтому оно всегда сет :) | |
|
|
|