我创建了一个仅由AJAX调用使用的脚本(检查用户和密码并将用户登录)。当我想阻止用户通过他的浏览器直接访问脚本时出现问题,如mywebsite.com/login.php
。
如果我做的话
if ( isset( $_SESSION['id'] ) ) header( "Location: logged.php" );
else header( "Location: index.php" );
其中logged.php
用于登录用户,这将在AJAX调用完成时执行,因此在进行AJAX调用时它将重定向到索引。如果我删除“其他”'部分,他们可以直接访问它。
答案 0 :(得分:1)
如果我正确理解了您的问题,您可以在Ajax Call中添加额外的POST var并执行类似的操作
if( $_POST["call"] == true ){
//do ajax stuff
}else{
if( isset( $_SESSION['id'] ) ){
header( "Location: logged.php" );
}else{
header( "Location: index.php" );
}
}
答案 1 :(得分:1)
检查请求HEADER
/* AJAX check */
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
} else {
// NO AJAX CALL
// die("NOT ALLOWED") ... or what ever
}