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

Форум PHP

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

 

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

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

тема: Как запретить выполнения файла php?
 
 автор: Полный Чайник   (25.01.2006 в 19:06)   письмо автору
 
 

нужно чтобы файл можно было выполнить только из другого файла командой

include "dir/file.php"

но так чтобы он невыполнялся если указана непосредственная ссылка на него.

   
 
 автор: Unkind™   (25.01.2006 в 19:45)   письмо автору
 
   для: Полный Чайник   (25.01.2006 в 19:06)
 

Мне кажется, что тут лучше так сделать:

$mode=ok
include "dir/file.php?mode=go"

Файл file.php

<?php
if($mode != "ok")
{
echo 
"Ошибка!";
exit();
}
?>
<!-- Содержимое файла -->

   
 
 автор: DDK   (25.01.2006 в 19:54)   письмо автору
 
   для: Полный Чайник   (25.01.2006 в 19:06)
 

Самым надёжным вариантом, думаю, будет использование сессии.

   
 
 автор: Unkind™   (25.01.2006 в 20:06)   письмо автору
 
   для: DDK   (25.01.2006 в 19:54)
 

Вот я пока не силен в этом...Ну расскажите, как их применить в данном случае...=)

   
 
 автор: DDK   (25.01.2006 в 20:41)   письмо автору
 
   для: Unkind™   (25.01.2006 в 20:06)
 

parent_file.php

<?
session_start
();
$_SESSION['opener_exists'] = 1;
header("Location: target_file.php");
?>

target_file.php

<?
session_start
();
if(isset(
$_SESSION['opener_exists'])) {
    unset(
$_SESSION['opener_exists']);
} else {
    
header("HTTP/1.0 403 Access Forbidden");
    exit;
}
... 
// сам код скрипта
?>

   
 
 автор: Ziq   (25.01.2006 в 20:56)   письмо автору
 
   для: Unkind™   (25.01.2006 в 20:06)
 

В "Самоучителе PHP5" был такой пример

function gettime()
{
  $part_time = explode(' ',microtime());
  $real_time = $part_time[1].substr($part_time[0],1);
  return $real_time;
}

$start_time = gettime(); 
$stop_time = gettime();
$time = bcsub($stop_time,$start_time,4);  //  Время выполнения скрипта
echo $time;

   
 
 автор: DDK   (25.01.2006 в 21:01)   письмо автору
 
   для: Ziq   (25.01.2006 в 20:56)
 

Апшиплись дверью, ага ;-))

   
 
 автор: Ziq   (25.01.2006 в 20:57)   письмо автору
 
   для: Unkind™   (25.01.2006 в 20:06)
 

Я бы сделал так


<?
$secret
=1;
include 
"file.php";
?>


file.php

<?
if($secret==1)
{
  
//  Какой-то код
}
else
{
  exit(
"Вы не имеете прав, для просмотра этого файла");
}
?>

   
 
 автор: Unkind™   (25.01.2006 в 21:02)   письмо автору
 
   для: Ziq   (25.01.2006 в 20:57)
 

Извините, но в моем посту такой же код...Практически...У меня, вроде чуть лучше..=)

   
 
 автор: DDK   (25.01.2006 в 21:07)   письмо автору
 
   для: Unkind™   (25.01.2006 в 21:02)
 

Ну, если говорить о цветочках, то ваш код не имеет смысла, т.к. стоит только вызвать родительский файл с указанной строкой запроса ;-)

   
 
 автор: cheops   (26.01.2006 в 00:31)   письмо автору
 
   для: Ziq   (25.01.2006 в 20:57)
 

Только вместо перемнной использовать константу иначе при включённой директиве register_globals такую защиту можно легко обойти.

   
 
 автор: DDK   (25.01.2006 в 21:05)   письмо автору
 
   для: Полный Чайник   (25.01.2006 в 19:06)
 

А вообще, уважаемые, маимся мы тут с вами дурью ;-) Это делается методом создания файла .htaccess в директории со скрываемым файлом очень простого содержания:

<Files targetfile.php> 
  deny from all 
</Files>

:)

   
 
 автор: Полный Чайник   (26.01.2006 в 10:38)   письмо автору
 
   для: DDK   (25.01.2006 в 21:05)
 

Я не силен в настройках .htaccess поэтому может вы скажете подробно как сделать такой файл в моей ситуации:

корневая директория:
index.php - доступ надо естественно разрешить
config.php - хотелось бы запретить :-)
menu.php - запуск только из index.php
директория \files - тут картинки и всякие файлы доступ надо разрешить
\css - доступ разрешен
\pages - доступ запрещен т.к. тут содержатся страницы вызываемые из index.php - корневой директории
\admin - там файлы:
index.php - разрешить
config.php - запретить
login.php - разрешить
\admin\pag - запретить доступ ко всем файлам все запускаются только из файла login.php

   
 
 автор: DDK   (26.01.2006 в 15:29)   письмо автору
 
   для: Полный Чайник   (26.01.2006 в 10:38)
 

Это просто. Откройте блокнот, вставьте код из мое предыдущего поста, заменив targetfile.php на имя защищаемого файла, и сохраните как файл без имени с расширением htaccess, т.е. имя у файла получится - .htacces (точкаhtaccess) . Потом просто положите этот файл в директорию, где у вас лежит файл, которые нужно защитить.

   
Rambler's Top100
вверх

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