Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Безопасность!
 
 автор: TuX   (15.07.2005 в 15:23)   письмо автору
 
 

Пример: В одну страницу допустим index.php инклудится другой файл test.html . Имя включамого файла и путь к нему содержаться в переменной.
Примерно так:

index.php?news_link=test.html


Как проверить, что было введено после index.php?news_link=?
Например если у меня будет лежать в корне файл .htaccess, то поправив адрес таким образом:

index.php?news_link=.htaccess

Выведется содержимое данного файла.
Как избавиться от этой бяки?

   
 
 автор: XPraptor   (15.07.2005 в 15:29)   письмо автору
 
   для: TuX   (15.07.2005 в 15:23)
 


if(isset($_GET["news_link"]) && !empty($_GET["news_link"]))
{
    print "введено: " . $_GET["news_link"];
}else{
    print "ничего не введено!";
}

   
 
 автор: TuX   (15.07.2005 в 15:43)   письмо автору
 
   для: XPraptor   (15.07.2005 в 15:29)
 

дык а как это применить? У меня же каждый раз при клике по ссылкам будет срабатывать
только первое условие, я ведь передаю переменную как-никак каждый раз.

   
 
 автор: Loki   (15.07.2005 в 17:04)   письмо автору
 
   для: TuX   (15.07.2005 в 15:43)
 

Можно пойти другим путем: создать массив с именами страниц:

<?
$p
[0]="index.htm";
$p[1]="about.htm";
....
if(!
array_key_exists($id,$p)) $id 0//если элемента с введенным индексом не существует, то используем страницу по умолчанию. 
print "Выбрана страница ".$p[$id];
?>

А адрес будет вида:

index.php?id=1

   
 
 автор: Akira   (15.07.2005 в 17:45)   письмо автору
 
   для: Loki   (15.07.2005 в 17:04)
 

Согласен, но тогда теряеться логический элемент. Ведь текстовое название запомнить легче.

   
 
 автор: Loki   (15.07.2005 в 18:17)   письмо автору
 
   для: Akira   (15.07.2005 в 17:45)
 

можно сделать ассоциированный массив.
просто массив с числовыми индексами проще потом использовать в целях навигации.

   
 
 автор: Akira   (15.07.2005 в 20:11)   письмо автору
 
   для: Loki   (15.07.2005 в 18:17)
 

да, но предеться каждую страницу добавлять в массив, а это означает, что надо редактировать скрипт. С другой стороный, ваш способ намного удобнее :)

   
 
 автор: Loki   (15.07.2005 в 23:33)   письмо автору
 
   для: Akira   (15.07.2005 в 20:11)
 

Не совсем так: карта сайта выносится в один файл, который подключается ко всем файлам. Массив можно сделать многомерным, чтобы от содержал, например, заголовок окна, название подключаемой страницы, названия ссылок для меню и названия ссылок для дополнительных меню навигации. В общем, если напрячь фантазию, то можно найти в этом способе кучу преимуществ, а недостаток по прежнему один: надо все эти пункты добавлять вместе с новой страницей. Так что, если новые страницы на сайте - частое явление, то нужно как-то оптимизировать этот способ или искать другой:)

   
 
 автор: Akira   (15.07.2005 в 15:50)   письмо автору
 
   для: TuX   (15.07.2005 в 15:23)
 


substr($_GET["news_link"],0,strpos($_GET["news_link"],".")); /* То, что перед "." */
substr($_GET["news_link"],strpos($_GET["news_link"],".")); /* То, что после "." */

Т.е. для index.php?news_link=.htaccess будет в первом случае пусто, во втором htaccess, отсюда

<?php 
$link
substr($_GET["news_link"],0,strpos($_GET["news_link"],"."));
if(empty(
$link))
{
    echo 
"Неправельный запрос";    
    exit;
}

?>

Только, что проверил. Все работает. Если этот код вставить в "шапку" то при не правельном запросе не выдаст не чего кроме "Неправельный запрос"

   
 
 автор: Artem S.   (16.07.2005 в 07:17)   письмо автору
 
   для: TuX   (15.07.2005 в 15:23)
 

Так лучше не делать (это ответ на первый пост)
Я чаще делаю так.

<?
$mode 
$_GET['mode'];

switch(
$mode)
{
case 
'index' : include "index.php"; break;
case 
'news' : include "news.php"; break;
case 
'download' : include "download.php"; break;
default : 
header("location: index.php");
}
?>

1. Указывается не сам файл.
2. Отработаны все варианты.

   
 
 автор: TuX   (16.07.2005 в 19:44)   письмо автору
 
   для: Artem S.   (16.07.2005 в 07:17)
 

Данный код


<?php
$link
substr($_GET["news_link"],0,strpos($_GET["news_link"],"."));
if(empty(
$link))
{
    echo 
"Неправильный запрос";    
    exit;
}
 
?>

почему-то не работает при таком запросе


http://www.xxxxxx.ru/page.php?news_link=/home/xxxxxx/public_html/page.php


Выводится полный код страницы page.php

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования