ajax中的echo会话数据



我使用以下ajax代码通过将输入的表单数据传递到我的validate_login.php页面来登录用户:

<script type="text/javascript"> 
$(document).ready(function() {
$(document).on('click', '#submit', function() {
var myusername = $("#myusername").val();
var mypassword = $("#mypassword").val();
if (myusername == null || myusername == "" || mypassword == null || mypassword == "") {
if (myusername == null || myusername == "") { document.forms["form"]["myusername"].style.border = "2px solid #963634";}
if (mypassword == null || mypassword == "") { document.forms["form"]["mypassword"].style.border = "2px solid #963634";}
$( ".home_column" ).effect( "shake" ); 
} else {
// Returns successful data submission message when the entered information is stored in database.
$.post("include/validate_login.php", {
username1: myusername,
password1: mypassword
}, function(data) {
if(data == 'login_wrong') {
$(".home_column").flip({
    direction:'lr',
        color: 'rgba(138, 138, 138, 0.2)', 
            content:'<h21>Incorrect Login Details</h21>'
})  
setTimeout(
  function() 
  {
   $(".home_column").revertFlip()
  }, 2500);  }else{
  if(data == 'login_success') {
  $(".home_column").flip({
    direction:'lr',
        color: 'rgba(138, 138, 138, 0.2)', 
            content:'<h21>Hello <? echo $_SESSION['username']; ?></h21><br/><br/><h21>Login In...</h21>'
})  
setTimeout(
  function() 
  {
   window.location = 'dashboard.php'; 
  }, 2500);
  } }
$('#form')[0].reset(); // To reset form fields
});
}
});
});
</script>

我想让你注意我代码的这一部分:

if(data == 'login_success') {
      $(".home_column").flip({
        direction:'lr',
            color: 'rgba(138, 138, 138, 0.2)', 
                content:'<h21>Hello <? echo $_SESSION['username']; ?></h21><br/><br/><h21>Login In...</h21>'
    })  

我正在做的是将表单数据传递到我的php页面validate_login.php,这将运行MySQL查询来检查用户名和密码是否匹配。如果他们这样做了,那么login_success就会得到响应,并且这个值会作为数据传递回我的ajax脚本。这一切都很好,用户已经登录,它应该呼应用户的名字,说"你好,标记登录…"

我试图使用一个用户名字的会话来实现这一点,我在validate_login.php页面中定义了这一点:

session_start();  
$query = "SELECT * FROM $tbl_name WHERE user_name = '$username' UNION
SELECT * FROM $tbl_name2 where user_name = '$username'"; 
$result = mysql_query($query) or die( mysql_error() );
$row = mysql_fetch_assoc($result);
$hashed_pass = crypt($password, $Blowfish_Pre . $row['salt'] . $Blowfish_End);
if(mysql_num_rows($result) > 0) {   // Check Username Exists
if($hashed_pass === $row['user_password_hash']) {   // Check Password is valid
$_SESSION['id']=$row['user_id'];       //Start User Session
$_SESSION['user']=$username;
$_SESSION['username']=$row['user_first_name'];
$_SESSION['username2']=$row['user_last_name'];
$_SESSION['allowance']=$row['allowance'];
$_SESSION['privelleges']=$row['privelleges'];
$sql2 = mysql_query("UPDATE $tbl_name2 SET user_failed_logins = '0', user_status = 'online' WHERE user_name = '".$username."'");
$result2=mysql_query($sql2); 
$sql3 = mysql_query("UPDATE $tbl_name SET user_failed_logins = '0', user_status = 'online' WHERE user_name = '".$username."'");
$result3=mysql_query($sql2); //Start User Session
echo "login_success";

出于某种原因,名称有时只会显示,有时则不会显示。我会说是50/50。

这是有原因的吗?有人能告诉我我做错了什么吗?

谢谢,

当您调用ajax登录用户时,您的页面已经在客户端的浏览器中了。更改$.post函数回调以从服务器返回用户数据,并使用jQuery更改homecolumn内容。

最新更新