Есть такая проблема: Динамический сайт. Верхняя шапка, нижняя, левое меню и середина где будет отображаться вся информация. В левой менюшке есть несколько ссылок все они ведут на "середину", т.е. нажимаем на одну ссылку появляется один контент, нажимаем на другую соответсвенно другой. Но есть одно но... Допустим я нажал на первую ссылку вывелась информация, при нажатии второй ссылки, тоже выводится информация, но она почему то добавляется к первой инфе а не обновляет ее. Подскажите кто нибудь в чем проблема ?
Проблема только в том, что она существует Чтобы кто нибудь смог тебе помочь надо посмотреть, какой код выполняется у тебя при нажатии на ссылку.
index.php <html> <body> <p> </p> <div>Основной контент !!! <?php if (isset($_GET['page'])) { include($_GET['page'].'.php'); } ?> </div> Menu: <a href="?page=home">Home</a> <a href="?page=about">About Me</a> </body> </html> Home.php <p>home</p> about.php <p>about me</p> Здесь эта тема рассматривалась, но такой конкретно проблемы там не было, в принципе коды взяты оттуда. Нужно сделать так что бы "основной контент!" (div) обновлялся, а он почему то просто добавляет ссылки. [/code]
Вполне возможно у тебя идет кэширование Добавь к каждому файлу PHP: <?php if(!headers_sent()){ header( 'Expires: Mon, 26 Jul 1997 05:00:00 GMT' ); header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); header( 'Cache-Control: no-store, no-cache, must-revalidate' ); header( 'Cache-Control: post-check=0, pre-check=0', false ); header( 'Pragma: no-cache' ); } ?> И обнови каждую страницу
Слушай, у меня все работает. :? Попробуй так, может быть ты имел в виду это, раз ты новичек: index.php <html> <body> <p> </p> <div> <?php if (isset($_GET['page'])) { include($_GET['page'].'.php'); } else { echo "Основной контент !!!"; } ?> </div> Menu: <a href="?page=home">Home</a> <a href="?page=about">About Me</a> </body> </html>
Понимаешь - разницы между твоим кодом и новым практически нет. И мне это не понятно почему у тебя все заработало. Когда ты создавал index.php, home.php, about.php.php – мало ли что ты там до этого написал. Поэтому и требовалось обновление страниц вручную. А это код нужен чтобы обновление происходило автоматом (не кэшировалось)
ErvinR. в том, что этот скрипт будет инклудить все что ему скажут. Можно сделать так чтобы он заинклудил что-нибудь нехорошее. Так что передавать имена PHP файлов ГЕТом - не лучшая идея.
ErvinR., безопасностью совсем не занимаетесь Эта часть кода должна выглядить по крайней мере так: PHP: <? if (isset($_GET['page'])) { $page = str_replace('/','',$_GET['page']).'.php'; if (file_exists($page)) { include($page); } else { $log = fopen("hackattempts.txt","a+"); /*В файле hackattempts.txt будут записаны все попытки нехороших инклудов*/ fwrite($log, $_SERVER['REMOTE_ADDR'].' - '.date('d.m.y H:i:s')."\r\n"); fclose($log); die ('Обнаружена попытка взлома, ваш IP отправлен администратору'); } } ?>
То есть этот код надо размещать на каждой страничке, я правильно понимаю ? а возможно сделать так что бы , его не писать везде а разместить код на заглавной страничке или это не реально. Пордон если вопрос звучит глупо, но все мы были новичками
Где можно об этом поподробней почитать ? у меня книга "PHP5 самоучитель" от Колисниченко Д.Н., но там об этом мало говориться и направлена на профессионалов, может что то есть для чайников ?
Если у тебя доступ к файлам будет происходить только через index.php то достаточно только на главном разместить. Но если к этим файлам будут обращаться непосредственно через адресную строку браузера то этот код нужен на всех файлах.
Обсуждалось это уже, и причём давно http://php.ru/forum/viewtopic.php?t=8 Sh0t У тебя велосипед какой-то с квадратными колёсами...
Если ErvinR. Выбрал такой метод работы с файлами думаю то что предложил Sh0t вполне хватит для ErvinR. Единственное я не понял этого - для чего он Код (Text): $page = str_replace('/','',$_GET['page']).'.php';
Наоборот надо с самого начала выбирать правильный путь (для начала можно выбирать пути по проще, но нельзя выбирать рабочие но неправильные пути, если привыкнеш будет трудно отвыкнуть)
Пример index.php?page=../../../../../../../../etc/passwd Надеюсь понятно Прошу вас указать недостатки в предложенном мною коде прежде чем делать такие заявления