【问题标题】:Why is session variable is not set or lost?为什么会话变量未设置或丢失?
【发布时间】:2016-02-17 03:49:14
【问题描述】:

我有一个登录页面。我输入了用户名和密码,然后通过 ajax 提交了我的页面。

在 check.php 中验证 index.php 中的值。

我尝试在 check.php 中设置一个 SESSION['email'] 变量,但在成功登录该站点后无法在 HOME.php 中访问它。

<?php
    session_start();
?>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script type="text/javascript">

function output(x) {
    x=x.trim();
    if(x=="YES") {
        $(location).attr("href","HOME.php");
    } else {
        alert("login failed");
    }
}
	
$(function() {
    $(".submit").click(function() {
		
        var Username = $("#txtUserName").val();
        var Password = $("#txtPssword").val();
		
        var dataString = 'Username='+ Username+'&Password='+Password;
        $.ajax({
            type: "POST",
            url: "Check.php",
            data: dataString,
            success: function(response){
                output(response); 
            }
        });

        return false;
    });
});
</script>
</head>
<body>
    <form  method="post" name="login" id="form">
        Username <input type="email"  id ="txtUserName"  />
        Password <input type="password" id="txtPssword" />
        <button type="submit" class="submit">Sign In</button>
    </form>
</body>
</html>
//Check.php

<?php
    if ($_SERVER["REQUEST_METHOD"] == "POST") {

        $email = $_POST['Username'];
        $password = $_POST['Password'];
        if(('ADMIN'==$email)&&('PASS'==$password)) {    
            $_SESSION['email']=$email; // email id stored in a session variable 
            echo "YES";
        } else {
            echo "NO";
        }
    }

?>
//HOME.php

<?php
    session_start();
    echo $_SESSION['email']; // Here session values is losted.
?>

【问题讨论】:

  • 你能贴出 HOME.php 的代码吗?
  • HOME.php 中也添加session_start(); 在顶部&lt;?php 标记之后
  • 你把session_start();放在home.php的顶部了吗?
  • --------- HOME.php ---------
  • 更改 $SESSION['email'];到 $_SESSION['email'];

标签: php jquery html ajax session


【解决方案1】:

你有语法错误,把$SESSION['email'];改成$_SESSION['email'];

当您需要访问可变会话时,在您的所有 php 页面中添加一个session_start();

【讨论】:

  • 我更改了 $SESSION['email'];到 $_SESSION['email'];但我仍然无法在 home.php 页面中获得 $_SESSION['email'] ......为什么?
  • 看我的第二句话。你没有 session_start();在 Check.php 中
【解决方案2】:

请在输入框中添加“姓名”:

<form  method="post" name="login" id="form">
    Username <input type="email" name="txtUserName"  id ="txtUserName"  />
    Password <input type="password" name="txtPssword" id="txtPssword" />
<button type="submit" class="submit">Sign In</button>
</form>

【讨论】:

  • OP通过JS发送值,不需要
【解决方案3】:

现在我知道了。 我在代码中犯了什么错误。 我修改了我的代码。 不是没有问题。

修改

  1. 会话开始();包含在所有页面中,作为 php 标记中的第一行

【讨论】:

    猜你喜欢
    • 2014-08-23
    • 1970-01-01
    • 1970-01-01
    • 2023-01-23
    • 1970-01-01
    • 2010-09-20
    • 2011-04-15
    • 2011-12-05
    相关资源
    最近更新 更多