isset($_GET('id')) выдаёт истину, если в запросе есть id=чему-то там.
А вообще, с точки зрения безопасности
include с непроверенной переменной из запроса - жуткая дыра.
Через id можно заинклюдить что хочешь.
Количество допустимых id должно быть ограничено и через if проверять и направлять на конкретную страницу
Или хотябы проверять, что $_GET['id'] цифра, а не что-нибудь вроде "http://lomaster.com/crack"Код:<?php if (!isset($_GET['id'])) { include ("1.htm"); } else { if($_GET['id']=1){ include("1.htm"); } if($_GET['id']=2){ include("2.htm"); } ........ } ?>
Некрасиво, длинно, но смысл есть.
Крайний раз редактировалось Mirnyi; 19.03.2010 в 17:53.
А можно я тоже кааапельку повыпендриваюсь?
Код:if (isset ($_GET['id']) and preg_match ("/^\d$/",$_GET['id'])){ include($_GET['id'].".htm"); } else { include("1.htm"); }
"Прежде чем открыть огонь - оглянись!"
А.В. Ворожейкин "Сильнее смерти", стр 9.
"<...>не нужны маркеры противника парням в военном небе Великой Отечественной.
Послюнявили химический карандаш. Пунктиром отметили маршрут на карте. И вперёд!"
© DEDA
1680 x 1050 && i7 2600 (3.4Ghz) && 8 gb DDR3 (1600 Mhz) && gtx 580 && win 7 x64
"Прежде чем открыть огонь - оглянись!"
А.В. Ворожейкин "Сильнее смерти", стр 9.
"<...>не нужны маркеры противника парням в военном небе Великой Отечественной.
Послюнявили химический карандаш. Пунктиром отметили маршрут на карте. И вперёд!"
© DEDA
1680 x 1050 && i7 2600 (3.4Ghz) && 8 gb DDR3 (1600 Mhz) && gtx 580 && win 7 x64
отвал говоришь?
А если нужны цифры только от 3 до 5 и во входящих данных - мусор?
Код:if (preg_match ("/^[\D]*/([3-5]{1}).*$/",$_GET['id'],$id) ){ include($id[1].".htm"); } else { include("1.htm"); }
---------- Добавлено в 19:24 ---------- Предыдущее сообщение было написано в 19:21 ----------
скорее всего 0.htm вряд ли стоит учитывать.
Код:if (preg_match ("/^[\D]*/([1-9][0-9]?).*$/",$_GET['id'],$id) ){ include($id[1].".htm"); } else { include("1.htm"); }
"Прежде чем открыть огонь - оглянись!"
А.В. Ворожейкин "Сильнее смерти", стр 9.
"<...>не нужны маркеры противника парням в военном небе Великой Отечественной.
Послюнявили химический карандаш. Пунктиром отметили маршрут на карте. И вперёд!"
© DEDA
1680 x 1050 && i7 2600 (3.4Ghz) && 8 gb DDR3 (1600 Mhz) && gtx 580 && win 7 x64
И тогда функция вернёт истину на любой набор символов хоть с одной цифрой (если я не ошибаюсь)
Вот за то и не люблю регулярные, что можно написать такого, что сам потом не разберёшь.
Но, конечно, это только отмазка, чтобы мозг не ломать "китайской грамотой".
Если знать их хорошо и функции которые с ними работают, то инструмент мощнейший.