2013-12-14 3 views
0

Я хотел бы запретить пользователям получать доступ непосредственно к скрипту PHP на моем веб-сайте.Запретить прямой доступ к файлу в htaccess?

Этот сценарий должен быть доступен из других сценариев на веб-сайте.

Например, «somepage.php» может вызывать «upload.php», но пользователям не разрешается вводить mywebsite.com/upload.php. К сожалению, я не могу перенести свой сценарий в определенную папку.

+0

Вы уверены, что вы не хотите использовать, если умереть; рутина? Вы бы определили эту константу в других сценариях, которые затем смогут добавить этот другой скрипт. – v010dya

+0

Если возможно, я хотел бы остановить доступ непосредственно из htaccess без изменения сценариев. Если нет, я могу рассмотреть эту возможность в любом случае. – Giorgio

ответ

0

В соответствии с комментарием в моем другом ответе стало ясно, что вопрос действительно задал что-то другое. Так как я чувствую, что другой ответ относится к вопросу, как изначально спросил, я не хочу редактировать этот, но скорее добавлю этот дополнительный ответ.

Этот ответ будет отвечать: Как остановить другой сайт от глубокой привязки страницы, отображаемой в iframe на моем?

Для этого можно использовать сеансы PHP. На главной странице вы должны начать сеанс, этот пользователь сможет просматривать только «внутреннюю» страницу, если сеанс действительно запущен.

Предположим, у вас есть две страницы: index.php и inner.php. Вы поместите в начале index.php:

if (session_status() !== PHP_SESSION_ACTIVE) session_start(); 

В inner.php вы будете иметь:

if (session_status() !== PHP_SESSION_ACTIVE) die("Deep linking detected"); 

И вы определенно не можете ничего подобного сделать из HTAccess или в любом другом месте вне кода самих страниц.

Ссылка: (! Определен (CONSTANT)) http://www.php.net/manual/en/function.session-status.php

+0

Вы правы, Володя, фактически, чтобы решение PHP работало, Я тестировал, если администратор вошел в систему (используя сеансы). Спасибо за разъяснение и новый ответ. – Giorgio

+0

Я рад, что смогу помочь. Но в будущем, пожалуйста, укажите гораздо более четко то, что вы пытаетесь достичь. Иногда лучше всего поставить его в терминах последовательности «Я хочу, чтобы пользователь пришел на страницу 1, у которой есть этот код, и посмотрите на это, но когда они придут и загрузится2, они должны увидеть ошибку, подобную этой». – v010dya

1

Хорошо, вы можете сделать это с помощью следующего:

<Files yourfile.inc.php> 
    order allow,deny 
    deny from all 
</Files> 

Однако, я до сих пор предполагают, что вы делаете, что внутри PHP, чтобы сделать это добавить в свой заголовочный файл:

if (!defined('YOURPROGRAM')) 
{ 
    echo <<<EOT 
You cannot display this file 
EOT; 
    exit(1); 
} 

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

define('YOURPROGRAM', 1); 

Таким образом, ваш код будет доступен на нескольких платформах, включая ngynx и т. д.

Литература: http://htpasswdgenerator.com/apache/htaccess.html и код MediaWiki.

+0

Спасибо, что поделились обоими решениями Володя, я не думал о возможных проблемах, вызванных разными платформами. – Giorgio

+0

Прошу простить вас, но я пробую решение htaccess и блокирует весь доступ к моему файлу php (даже из других скриптов внутри веб-сайта). Как я могу защитить этот файл только от прямого доступа и позволить другим скриптам использовать его? – Giorgio

+0

Как вы к нему обращаетесь? С require_once? – v010dya

Смежные вопросы