PHP:包含AJAX调用的脚本中的文件

时间:2015-08-10 01:25:12

标签: javascript php ajax file include

我已经做了一些狩猎,我还没有看到任何人问过我的问题。所以,我会问这里。

我对计算机很陌生,特别是对Web开发很陌生。我目前正在建立我的第一个网站。它有一个后端数据库,服务器端脚本,整个shebang。

此外,我正在使用LAMPP本地主机服务器的Linux / Apache / PHP平台上。

预赛讨论,我今天正在编写一个AJAX调用(我的第一个!)并且在前端遇到了一些奇怪的行为。我会发布代码,但我先简要解释一下。

我的代码是用于登录表单,用于验证您的密码和用户名,然后让您继续访问该站点或在屏幕上显示错误消息。我使用JS进行前端错误检查,以阻止从客户端到服务器的任何不必要的数据交换。

当然,你不能相信前端的任何东西,所以我也写了一些PHP来检查后端的错误。为了测试我的后端错误检查的功效,我故意更改后端代码的参数,以便我的输入将被JS接受但被PHP拒绝。

以下是代码:

function serverValidation(x, y){

var z;

if (window.XMLHttpRequest){z=new XMLHttpRequest();}

else{z=new ActiveXObject("Microsoft.XMLHTTP");}

z.onreadystatechange=function(){ 

  if (z.readyState==4 && z.status==200 && z.responseText == "false"){

     $("#submit_error_3").show(); 

     $( "#submit_error_3" ).text("X INVALID ENTRY"); 

     $( "#username, #password").css("border-color", "red");

  }

  if (z.readyState==4 && z.status==200 && z.responseText == "true"){ 

     $("#hidden_form_profile").submit();

  }

}

z.open("POST","login.php",true);

z.setRequestHeader("Content-type","application/x-www-form-

urlencoded"); 

z.send("username=" + x + "&" + "password=" + y);

}

正如您所看到的,我正在使用POST发送类似表单的数据,而我正在接收普通文本。响应是字符串“true”或字符串“false”。如果收到“true”,那么JS就是单向的。如果收到“假”,则JS会转到另一个。

这是后端:

<?php

session_start();

if(!isset($_POST['email']) && isset($_POST['username']) && isset($_POST['password'])){

  $x = trim($_POST['username']);

  $y = $_POST['password'];

  if(validate($x, $y)){$_SESSION["logged_in"] = "true"; echo "true";}

  else{

     echo "false";

  }

}

function validate($x, $y){

if( strlen($x)  < 6 ||  strlen($y)  < 6 ){ 

  return false;

}

return true;

}

?>

这一切都很有效,就像预期一样。

但是,后端没有完成。一旦验证了输入的格式,我就计划进入数据库并匹配用户名和密码以查看输入是否有效。

为此,我在AJAX后端脚本的最顶部包含了一个带有:include "login_info.php";的PHP文件。此文件仅包含数据库服务器地址,数据库名称,用户名和密码的基本变量。

一旦我收录了该文件,保存并刷新,事情变得非常奇怪。

基本上AJAX调用已停止工作。通过使用警告框等进行故障排除,我确定PHP脚本完成了它的工作,但前端脚本不会正确解释数据。

就JS而言,返回的数据是一个字符串,它在预期的情况下采用了值“true”和“false”,但if(z.responseText == "false")(z.responseText == "true")都评估为在所有情况下均为假。

此外,if(z.responseText)在所有情况下始终评估为真。也就是说,当我包含那个额外的文件时,不知何故,JS认为返回的数据是一个具有预期值的字符串,但将其视为一个始终为真的布尔值。

有人可以向我解释当我在后端脚本中包含该文件时发生了什么吗?

0 个答案:

没有答案