Как предотвратить доступ к странице PHP напрямую?

Ниже приведен фрагмент javascript, который я использую как часть сценария AJAX. Как предотвратить прямой доступ пользователя user_back_end_friends.php? Я не хочу, чтобы люди могли перейти на сайт domain.com/user_back_end_friends.php и посмотреть список друзей.

Код Javascript:

<script type="text/javascript"> $(document).ready(function() { $("#user_friends").tokenInput("/user_back_end_friends.php", { theme: "sometheme", userid: "<?php echo $id; ?>" }); }); </script> 

Это то, что я нашел, но не уверен, как реализовать его с помощью javascript-кода выше:

Я использую это на странице, на которую мне нужно позвонить:

 $included=1;include("user_back_end_friends.php"); 

Когда я должен предотвратить прямой доступ, я использую:

 if(!$included){ die("Error"); } 

Но как мне добавить эту часть, включенную в $, в код javascript?

Solutions Collecting From Web of "Как предотвратить доступ к странице PHP напрямую?"

Нет смысла защищать код javascript, вам нужно защитить только серверный код.

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

Таким образом, вы можете начать свою страницу с:

 session_start(); if (isset($_SESSION['user_id')) { // do stuff with the user ID } else { // display error message? } 

Вы не можете полностью блокировать доступ к этому скрипту по самой природе Интернета.

Вы можете проверить информацию о реферере, подтверждение ввода, вы можете создать переменную сеанса на родительской странице, отмеченной на дочерней странице.

Я сделал следующее. Обратите внимание, что это НЕ самое безопасное, как упоминалось в других ответах, вы не можете полностью блокировать доступ к этому сценарию (предоставляется ссылка на простой обход), но для моих простых целей это очень хорошо работало –

 define('_REFERURL', 'http://www.example.com'); // This is the full URL of your domain that will be calling your PHP script(s) 

Затем создайте функцию, которая проверяет ссылочный URL (который должен быть из вашего домена)

 function allow_user() { if ($_SERVER['HTTP_REFERER'] == _REFERURL) { return true; } else { return false; } } 

Использование:

 if (allow_user()) { // Do things } else { // Alert, direct access attempted } 

Простой проход: http://www.datatrendsoftware.com/spoof.html