最近在学PHP。。做登陆出了个奇怪的问题。。知识有限。。也不知道怎么去百度,所以只能问大家了。。
先是login.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>登陆界面</title>
<script type="text/javascript" language="javascript" src="../Commons/JS/ajax.js"></script>

<script type="text/javascript" language="javascript">
function check(){
var checkform=document.forms[0];
//alert(checkform.username.value);
//alert(checkform.password.value);
if(checkform.username.value==''||checkform.password.value==''){
alert("用户名或密码不能为空!");
}else{
var par="username="+checkform.username.value+"&"+"password="+checkform.password.value;
//alert(par);
sendRequest("post","LoginAction.php","true",test,par,"text");
}
}
function test(result){
//alert(result);
if(result=="OK"){
alert("登陆成功");
location.href="adminManager.php";
}else{
alert(result);
}
}
</script>
</head>
<body>
<form action="LoginAction.php" method="post">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" name="username" /></td>
</tr>
<tr>
<td>密&nbsp;&nbsp;码</td>
<td><input type="password" name="password" /></td>
</tr>
<tr>
<td align="right"><input type="button" value="确认" name="submit" onclick="check()" /></td>
<td align="center"><input type="reset" value="重置" name="reset" /></td>
</tr>
</table>
</form>
</body>
</html>
其中用了ajax.js
var xmlHttp=null;
function creatXMLHTTP(){
//alert("1111111");
if(window.ActiveXobject){
var arrXmlHttpTypes=['Microsoft.XMLHTTP','MSXML2.XMLHTTP.6.0','MSXML2.XMLHTTP.5.0','MSXML2.XMLHTTP.4.0','MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP'];
for(var i=0;i<arrXmlHttpTypes.length;i++){
try{
xmlHttp=new ActiveObject(arrXmlHttpTypes[i]);

break;
}catch(e){

}


}

}else if(window.XMLHttpRequest){
//alert("2222222");
xmlHttp=new XMLHttpRequest();
}

}
function sendRequest(method,Url,flag,functionName,parameter,returnType){
creatXMLHTTP();
if(xmlHttp!=null){
if(method.toLowerCase()=="get"){
xmlHttp.open(method, Url, flag)
//alert("OPEN function");
xmlHttp.onreadystatechange=function(){
processer(returnType,functionName);

};
xmlHttp.send(parameter);
//alert("send function");
}
if(method.toLowerCase()=="post"){
xmlHttp.open(method, Url, flag);
xmlHttp.onreadystatechange=function(){
processer(returnType,functionName);

};
xmlHttp.setRequestHeader("content-type", "application/x-www-form-urlencoded");
xmlHttp.setRequestHeader("If-Modified-Since", "0");
xmlHttp.send(parameter);
}
}else{

alert("您的浏览器不支持XMLHTTP,请升级浏览器或更换浏览器!!");
}
}
function processer(returnType,functionName){
//alert(xmlHttp.readyState);
//alert(xmlHttp.status);
//alert("in processer!!");
var response=functionName;
var result="";
if(xmlHttp.readyState==4){
if(xmlHttp.status==200||xmlHttp.status==0){
if(returnType.toLowerCase()=="text"){
//alert("returntype is text");
result = xmlHttp.responseText;
response(result);
}else if(returnType.toLowerCase()=="xml"){
//alert("returntype is xml");
result = xmlHttp.responseXML;
response(result);
}
}
}

}
然后服务器上面打算这样写两个PHP
LoginAction.php
<?php
require 'User.php';
require 'LoginBean.php';
require '../Commons/noCache.php';


$username=$_POST["username"];
//echo "username=".$username;
$password=$_POST["password"];
$b=new Login();
$msg=$b->checkUser($username,$password);
if($msg=='ok'){
session_start();
$user=new User($username,$password);
$_SESSION["user"]=$user;
}
echo $msg;
?>
LoginBean.php
<?php
require '../Commons/noCache.php';
require '../Commons/Constants.php';
require '../Commons/dataBase/db_mysql.php';
require 'User.php';

Class Login{

public function checkUser($username,$password){
$connDB=new DB(DB_SERVER,DB_SERVER_USERNAME,DB_SERVER_PASSWORD,DB_DATABASE);
$conn=$connDB->connect();
$sql="select * from logininfo where username='$username' and password='$password'";
$result=mysql_query($sql,$conn);
$info=mysql_fetch_row($result);
if($info){
$msg="OK";
}else{
$msg="用户名或密码错误!";
}
return $msg;
}



}
?>
把LoginAction里面的require 'LoginBean.php'和
$b=new Login();
$msg=$b->checkUser($username,$password);
if($msg=='ok'){
session_start();
$user=new User($username,$password);
$_SESSION["user"]=$user;
}
echo $msg;
这段注释掉修改成随便的输出字符串,页面都没问题但是一旦加上。。服务器就返回状态码500请高手回答一下吧

解决方案 »

  1.   

    偶仔细看过来看过去去除了LoginBean.php中的require User.php这句无用的。。然后又把require '../Commons/dataBase/db_mysql.php'; 
    中的db_mysql.php向上提了一个文件夹就好了。。真是奇怪了 
      

  2.   

    500错误比较复杂,一般泛指所有网页打不开错误。先这样操作点击“工具”-》“INTENET选项”-》“高级”---》取消勾选“显示HTTP友好错误信息”刷新一下,看报详细错误,再贴出来!
      

  3.   

    我用ajax接收服务器返回的查看到服务器返回的状态码也是从firebug里面看到的。不知道怎么看错误信息
      

  4.   

    我也是遇到的这个问题哦,不过我的事ASP.NET