Здравствуйте, подскажите пожалуйста новичку. Я только недавно начал изучать PHP, хочу сразу уяснить несколько моментов, чтобы в последствии не наделать ошибок. У меня есть несколько вопросов. 1) Если в файле php.ini отключены директивы allow_url_fopen и allow_url_include, то будут ли подгружаться страницы функцией include? Например в такой ситуации, если по нажатию на ссылку, строка адреса приобретает вид: http://www.my_site.ru/index.php?page=mypage а в страничке index.php присутствует такой код: Код (Text): if ($page!=""){ include ("$page.html"); } 2) Можно ли обезопасить свой сайт от PHP-инъекций, добавив такого рода проверку? Код (Text): if ($page!=""){ $page=str_replace("/","",$page); $page=str_replace(".","",$page); if(file_exists($page)) { include ("$page.html"); } } 3) каким ещё методом можно воспользоваться кроме include для построения основной страницы с подгрузкой других? Нигде не могу найти материалов по этой теме =( Я построил index.php приблизительно так: Код (Text): <?php echo "<html><head><title>My Site</title>"; echo "<link rel='stylesheet' type='text/css' href='style.css'/>"; echo "</head>"; echo "<body><div id='container'>"; echo "<div id='header'>"; @ include ("header.html"); echo "</div>"; echo "<div id='navbar'>"; @ include ("navbar.php"); echo "</div>"; echo "<div id='wrapper'>"; echo "<div id='content'>"; if (@$page<>"") { include ("$page.html"); } else { include ("main.html"); } echo "</div></div>"; echo "<div id='navigation'>"; @ include ("menu.php"); echo "</div>"; echo "<div id='news'>"; @ include ("news.php"); echo "</div>"; echo "<div id='footer'>"; @ include ("footer.php"); echo "</div>"; echo "</div></body></html>"; ?> т.е. при помощи include в "див'ы" подгружаются другие отдельные странички... можете прокомментировать данный метод? Заранее Огромнейшее СПАСИБО за ваш ответ. С уважением, Дмитрий.
2. Так лучше вообще не делать, так сказать от греха подальше. Лушче предусмотреть все возможные варианты $page, типа: PHP: <? switch($page) { case "...": // ... } 3. Можно сделать так: HTML: <html> ... <body> ... <? include "" ?> ... <? include "" ?> ... </body> </html> Ну ты понял.
2. Можно так сделать: а) Страницы с контентом на самом деле живут в БД. б) Всякие там гостевые книги живут так: example.com/www/guestbook/index.php Т.е. получаем строчку www.example.com/?page=guestbook Вначале смотрим есть ли у нас такая папка как guestbook и есть ли в ней index.php Если нету, то ищем по БД страничку с таким названием. Ну а если ничего не нашли выдаем 404 или главную 3. Ну как вариант всякие разные шаблонизаторы... Например Smarty
почему они живут в БД? О_о у меня они находятся в корневом каталоге, там же, где и index.php разве так нельзя делать? ааааааа... я запутался... метод со свитчем Код (Text): switch ($page) { case blablabla } мне оч понравился
у меня тут другая беда... я выгрузил все файлы на хостинг, чтобы проверить работоспособность, так вот, при нажатии на ссылку и превращении строки адреса в нечто такое: http://www.mysite.ru/index.php?page=about переменная $page в index.php в любом случае пустая О_о в чём проблема? на моём компе, в localhost всё работает нормально...