Я пытаюсь запретить прямой доступ к PHP-файлу, который вызывается для ajax для проверки формы. Код, который у меня есть, работает до тех пор, пока форма не будет проверена, и тогда это не сработает. Я НЕ хочу использовать .htaccess.Запретить прямой доступ к php-файлу, который вызывается в ajax
Текущий код:
<?php
$url = strtolower(basename($_SERVER['PHP_SELF'])); // Gets url (parent that uses the include)
$fil = strtolower(basename(__FILE__)); // gets filename (the included file)
if ($url == $fil){
// if they are the same (file is accessed through url
// redirect to forbidden page
header("HTTP/1.0 403 Forbidden");
exit;
}
// require my configuration
require_once("config.php");
// code to be executed for ajax validation
$username = $_POST['username'];
$conn = mysql_connect(DB_HOST,DB_USER,DB_PASS) or die(mysql_error());
mysql_select_db(DB_NAME,$conn) or die(mysql_error());
$query = mysql_query("SELECT * FROM " . TB_USER . " WHERE username = '{$username}'",$conn) or die(mysql_error());
$result = mysql_num_rows($query);
mysql_close($conn);
if ($result == 0){
echo "true";
}else{
echo "false";
}
?>
Если я получить доступ к файлу непосредственно из URL, он перенаправляет как планировалось, но когда форма проверяемого через AJAX, это ничего не делать, если имя пользователя отсутствует. Вывод первых двух строк кода ($ url, $ fil), а также оператор if делает работу проверки ajax, но страница не запрещена при доступе по URL. Любое предложение о том, что делать дальше?
Это было задано много раз: «Связанное» поле справа от экрана указывало мне на http://stackoverflow.com/questions/1756591/prevent-direct-access-to-file-called-by -ajax-function http://stackoverflow.com/questions/10637951/how-to-block-external-http-requests-securing-ajax-calls?lq=1 http://stackoverflow.com/questions/8278865/prevent -jax-cheating-on-a-web-game? lq = 1 http://stackoverflow.com/questions/7127686/blocking-non-ajax-requests-to-php?lq=1 http://stackoverflow.com/questions/8842053/allow-access-through-ajax-only-not-direct? lq = 1 – IMSoP