PHP会话未设置

ben*_*ben 7 php ajax session

我有一个代码,它通过AJAX登录,然后将数据传递到.php文件,以检查它与SQL.对于一个测试,用户名和密码是我 - 但是即使这从检查回来它没有登录我,似乎会话没有被设置.

log.php

<script type="text/javascript">
$(document).ready(function()
{
$("#login_form").submit(function()
{
    //remove all the class add the messagebox classes and start fading
                $("#msgbox").removeClass().addClass('messagebox').text('Validating....').fadeIn(1000);
    //check the username exists or not from ajax
    $.post("ejaxlog.php",{    username:$('#username').val(),password:$('#password').val(),rand:Math.random() } ,function(data)
    {
      if($.trim(data)=='yes') //if correct login detail
      {
        $("#msgbox").fadeTo(200,0.1,function()  //start fading the messagebox
        { 
          //add message and change the class of the box and start fading
          $(this).html('Logging in.....').addClass('messageboxok').fadeTo(900,1,
          function()
          { 
             //redirect to secure page
             document.location='http://www.google.com';
          });

        });
      }
      else 
      {
        $("#msgbox").fadeTo(200,0.1,function() //start fading the messagebox
        { 
          //add message and change the class of the box and start fading
          $(this).html('Your login detail   sucks...').addClass('messageboxerror').fadeTo(900,1);
        });     
      }

    });
    return false; //not to post the  form physically
});
//now call the ajax also focus move from 
$("#password").blur(function()
{
    $("#login_form").trigger('submit');
});
   });
  </script>

  <link type="text/css" href="formboxes.css" rel="stylesheet">

  </head>

  <body>
   <?
  echo $_SESSION['u_name'];?>
  <form method="post" action="" id="login_form">
 <div align="center">

 <div >
  User Name : <input name="username" type="text" id="username" value="" maxlength="20" />

 </div>
 <div style="margin-top:5px" >
  Password :
  &nbsp;&nbsp;
 <input name="password" type="password" id="password" value="" maxlength="20" />

 </div>
 <div class="buttondiv">
 <input name="Submit" type="submit" id="submit" value="Login" style="margin-left:-10px; height:23px"  /> <span id="msgbox" style="display:none"></span>

</div>

  </div>
</form>
Run Code Online (Sandbox Code Playgroud)

然后它通过下一个代码检查MySQL,它是否成功它回应"我"在我的HTTP头中看到的(是的必须是正确的)但它并没有将我重定向到日志中指定的"eindex.php". php文件.

 <?php
session_start();
require("../mcfrdb.php");
 // Included database once using the require method
?>

  <?php


$username = mysql_real_escape_string(stripslashes($_POST['username']));
$pass = mysql_real_escape_string(stripslashes($_POST['password'])); 


$result = mysql_query("SELECT user, pass FROM mcfruse WHERE user='$username'")or die(mysql_error());
$row=mysql_fetch_array($result); 

 if(mysql_num_rows($result)>0)
{

    if(strcmp($row['pass'],$pass)==0)
    {
            echo "yes";
            $_SESSION['name']=$username;
    }
    else
            echo "no";
}
else
    echo "no"; 
Run Code Online (Sandbox Code Playgroud)

使用firebug时我的HTML说

所以yes是echo'ed,这意味着它通过了正确的pwd并且它验证了,但它仍然说"登录详细信息很糟糕"并且没有将我重定向到eindex.php

eindex.php

<?php
session_start();
if(!isset($_SESSION['name']))
header("Location:../index.php");
 //if logout then destroy the session and redirect the user
if(isset($_GET['logout']))
 {
 session_destroy();
 header("Location:../index.php");
 }

 require("../mcfrdb.php");
 ?>
Run Code Online (Sandbox Code Playgroud)

我已经检查了几次代码,但找不到任何东西.所有回复和任何帮助表示赞赏.非常感谢.

编辑:甚至添加md5 pwd哈希(从此代码中省略)我仍然得到"是",当我回显用户名和哈希,他们是机器人匹配,但会话仍未设置,但不重定向我.on if($ .trim(data)=='yes')

Jef*_*ert 7

您通过AJAX访问的任何页面都是单独的请求,您需要调用session_start()以便填充会话超级全局.


Tim*_*mur 1

你的ejaxlog.php回报yes?你确定吗?尝试添加alert(data)orconsole.log(data)看看它返回什么。似乎您的脚本不返回yes或不仅返回yes(可能是一些错误?)。显然,您没有被重定向,因为您的 JavaScript 接收到不合适的字符串,因此它不会重定向您。再次尝试记录/警报脚本返回的数据。或者安装 FireBug for FireFox 之类的东西来查看 JavaScript 完成的所有请求。