*Проверяем поступил ли запрос на переключение страниц*/
if(empty($_GET['page']) || $_GET['page'] <=0) $page=1;
else $page=(int)$_GET['page'];
....
/*Определяем номер выводимой новости в базе*/
$start_pos=($page-1)*$per_page;
/*Составляем SQL запрос на выборку новостей из таблицы news*/
$res = mysql_query("SELECT * FROM news LIMIT $start_pos,$per_page");
и никто не пишет, что это не безопасно, поскольку в строке браузера можно дописать что-то типа DELETE FROM users.
Подскажите как сделать постраничный вывод безопасным?
Спустя 2 минуты, 32 секунды (8.07.2010 - 22:02) linker написал(а):
Вот это вот (int)$_GET['page']; убивает напрочь всякие там DELETE FROM users
$page = 0;короче
if (isset($_GET['page'])) $page = abs((integer)$_GET['page']);
$page = isset($_GET['page'])?abs((integer)$_GET['page']):1;
Спустя 25 минут, 24 секунды (8.07.2010 - 22:27) GrafF(812) написал(а):
а мой код не безопасный?
Спустя 5 минут, 56 секунд (8.07.2010 - 22:33) linker написал(а):
Не боись, безопасный, можешь сам потестировать. Только вместо empty($_GET['page']) используй !isset($_GET['page'])
Спустя 4 минуты, 28 секунд (8.07.2010 - 22:38) GrafF(812) написал(а):
спасибо Вам большое
, а почему нужно использовать !isset ?

Спустя 7 часов, 9 минут, 12 секунд (9.07.2010 - 05:47) sl4mmer написал(а):
linker
кстати тоже стало интересно, почему в данном случае лучше !isset )) ммм... я видимо чего то не знаю (
кстати тоже стало интересно, почему в данном случае лучше !isset )) ммм... я видимо чего то не знаю (
Спустя 1 час, 23 минуты, 42 секунды (9.07.2010 - 07:11) Kuzya написал(а):
Вырезка из документации о empty:
То есть она вернёт true если переменная не установлена, или установлена, но равна 0. А isset показывает есть ли вообще указанная переменная (пусть в ней хоть 0, хоть что)
Returns FALSE if var has a non-empty and non-zero value.
То есть она вернёт true если переменная не установлена, или установлена, но равна 0. А isset показывает есть ли вообще указанная переменная (пусть в ней хоть 0, хоть что)
Спустя 1 час, 25 минут, 10 секунд (9.07.2010 - 08:36) twin написал(а):
Так а чем она тут лучше...
Как раз тут empty() уместнее, так как не пустит 0.
Как раз тут empty() уместнее, так как не пустит 0.
$page = !empty($_GET['page'])?abs((int)$_GET['page']):1;
Спустя 2 часа, 55 минут, 54 секунды (9.07.2010 - 11:32) linker написал(а):
Не подумал про ноль, действительно empty лучше.