单击刷新按钮后如何保持登录状态

时间:2015-10-27 12:53:17

标签: php html

我是php新手,我想添加一个功能,每当用户填写表单并登录时,php代码运行完全正常但刷新页面后用户必须再次填写表单。我不知道代码,也不知道进一步的知识。我尝试使用谷歌搜索,但我只看到这些解决方案:

header(refresh:5,url:url); 要么 元标记

自动刷新,但在单击刷新按钮后不会刷新。

这是我的PHP代码:

<html>
<head>
    <link rel="stylesheet" type="text/css" href="services.css"/>
    <link rel="stylesheet" type="text/css" href="bootstrap-css/bootstrap.css"/>
    <link rel="stylesheet" type="text/css" href="bootstrap-3.3.5-dist/css/bootstrap.min.css">
    <script type="text/javascript" src="validate.js"></script>
    <style>
        a{
            color: dodgerblue;
        }
        a:hover{
            color: dodgerblue;
            font-size: 101%;
        }
        span{
            font-size: 110%;
            line-height: 8px;
            font-style: bold;
            margin-left: 50px;
        }
        body{
            background-color: #F0F0F0 ;
        }
        button{
            margin-left: 15px;
        }
    </style>
</head> 
    <body link="slateblue">
        <div id="LogIn"><b>Log In</b></div><br>
        <form method="post" onsubmit="return logInPass()" action="log.php">
            <div class="col-xs-4"/>
              <label for="usr">Email:</label>
              <input id="usrEmail" name="usrEmail" type="email" class="form-control" size="25%" placeholder="sample@example.com"/>
            </div>
            <br><br><br><br>
            <div id="PasswordField" class="col-xs-4"/>
                <label for="u_pswd">Password:</label>
                <input id="u_pswd" type="password" class="form-control" size="25%" placeholder="Enter alteast 8 characters" />
            </div>
            <br><br><br><br>
            <button id="submit" name="checkout" class="btn btn-primary" type="submit" value="submit">Log In</button>
        </form>
        <br><br>
        <a href="SignUpForm.html" target="form"><span>Not a part of GameRangers? Click here for Sign Up!</span></a>
        <br>
    </body>
</html>


  <?php 
    echo "<style>body{font-family: segoe ui; font-size: 110%;}</style>";
    session_start();
    $_SESSION['username'] = $_POST['usrEmail'];
    echo"Welcome  ".$_SESSION['username']."<br><br>";
    echo "Today is ".date("Y-m-d")."<br>".date("h:i:sa")."<br>";
?>

4 个答案:

答案 0 :(得分:1)

首先,您在标题之前输出session_start();的位置。

将其作为第一行放在您的<?php开头标记下,并且您在$SESSION$SESSION['username']中错过了下划线,它是superglobal

  • 会话未被记录/存储。
  • 旁注:我真的希望这不是你的错字。

那应该是$_SESSION['username']

使用错误报告后,会发出未定义变量的通知。

确保$_POST['usrEmail']也包含一个值,并且该元素具有相同的name属性,并且会话在所有页面内使用会话启动,并且没有现在的拼写错误。

error reporting添加到文件的顶部,这有助于查找错误。

<?php 
session_start();
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

旁注:只应在暂存时进行显示错误,而不是生产。

如果要在表单中保留会话值,请使用三元运算符作为输入:

<input type="text" name= "usrEmail" id="usrEmail" value="<?php echo !empty(htmlspecialchars($_SESSION['username'])) ? htmlspecialchars($_SESSION['username']) : ''; ?>">

...并将相同的方法应用于其他表单输入。

检查会话是否已设置且不为空。

<?php 
session_start();
error_reporting(E_ALL);
ini_set('display_errors', 1);

    if(isset($_SESSION["userName"]) && !empty($_SESSION["userName"]) )
    {
        // do something
    }

    else{
        // do something else
    }

答案 1 :(得分:0)

使用SESSION或COOKIES存储登录状态

成功登录后,设置会话变量或cookie。

然后检查会话变量或cookie是否为isset并且是意图值,然后将用户保留在页面上。否则,重定向到登录。

同时将session_start()保留在页面的开头。

编辑以明确OP

在页面开头添加session_start()。验证用户名和密码后,如果是现有用户,请使用以下代码设置会话。

$_SESSION['u_name'] = $_POST['usrEmail'];

否则,重定向到登录页面。

然后在所有用户特定页面(只有登录用户可访问的页面)之上粘贴以下代码。

session_start();
if(!isset($_SESSION['u_name']))
{
   header('location:login.php?redirect='.$_SERVER['REQUEST_URI']);
   exit;
}

希望这会有所帮助。

答案 2 :(得分:0)

使用sessions

session_start();   // in top of PHP file
...
$_SESSION["userName"] = $userName;

页面

session_start();
if(isset($_SESSION["userName"]) && $_SESSION["userName"] != ''){
 //redirect to logged in page
}

答案 3 :(得分:0)

因为您正在使用会话来存储用户名。这个会话可以在if条件中使用,就像我在这里使用的那样:

<div id="nav1">
 <?php session_start();
            if($_SESSION['id']=='')
            {
            ?>
            <font style="font-size:16px; font-weight:bold; color:#063443;">Welcome, Guest&nbsp;&nbsp;<a href="Login.php" >SignIn</a></font>
            <?php }
            else
            { ?>
            <font style="font-size:16px; font-weight:bold; color:#063443;">Welcome, <?php echo $_SESSION['name'];?> &nbsp;&nbsp;<a href="signout.php" >SignOut</a>&nbsp;&nbsp;<a href="accinfo.php">My Account</a></font>


<?php }
?></div>

这里我在session [id]中存储了用户ID,这将成为显示用户登录的条件。