阻止访问使用AJAX的php脚本

时间:2014-10-20 10:05:20

标签: javascript php ajax

我创建了一个仅由AJAX调用使用的脚本(检查用户和密码并将用户登录)。当我想阻止用户通过他的浏览器直接访问脚本时出现问题,如mywebsite.com/login.php

如果我做的话

if ( isset( $_SESSION['id'] ) ) header( "Location: logged.php" );
else header( "Location: index.php" );

其中logged.php用于登录用户,这将在AJAX调用完成时执行,因此在进行AJAX调用时它将重定向到索引。如果我删除“其他”'部分,他们可以直接访问它。

2 个答案:

答案 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
}