Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在单击“刷新”按钮后保持登录状态_Php_Html - Fatal编程技术网

Php 如何在单击“刷新”按钮后保持登录状态

Php 如何在单击“刷新”按钮后保持登录状态,php,html,Php,Html,我是php新手,我想添加一个功能,这样每当用户填写表单并登录时,php代码都可以正常运行,但刷新页面后,用户必须再次填写表单。我不懂代码,也不知道进一步的知识。我尝试过谷歌搜索,但我只看到以下几种解决方案: 标题(刷新:5,url:url); 或 元标记 它会自动刷新,但不会在单击“刷新”按钮后刷新 这是我的php代码: <html> <head> <link rel="stylesheet" type="text/css" href="services.c

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

标题(刷新: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>";
?>

a{
颜色:淡蓝色;
}
a:悬停{
颜色:淡蓝色;
字体大小:101%;
}
跨度{
字体大小:110%;
线高:8px;
字体风格:粗体;
左边距:50像素;
}
身体{
背景色:#f0;
}
钮扣{
左边距:15px;
}
登录
电邮:



密码:



登录



使用会话或cookie存储登录状态

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


然后检查会话变量或cookie是否已设置且为预期值,然后将用户保持在页面上。否则,重定向到登录

同时将会话_start()保留在页面的开头


编辑以使OP更清晰

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

$_SESSION['u_name'] = $_POST['usrEmail'];
session_start();
if(!isset($_SESSION['u_name']))
{
   header('location:login.php?redirect='.$_SERVER['REQUEST_URI']);
   exit;
}
否则,重定向到登录页面

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

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

希望这会有所帮助。

使用
会话

session_start();   // in top of PHP file
...
$_SESSION["userName"] = $userName;
在您的页面中

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

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


当您使用会话存储用户名时,请将其作为第一行放在您的开头
下。此会话可以在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>

欢迎光临,客人
欢迎

在这里,我在会话[Id]中存储了用户Id,这将成为显示用户登录或不登录的条件。

根据您的编辑,此处没有足够的代码:您在标题之前输出。我实际上已删除了标题。它不正确。有什么强烈的建议吗?您需要向我们显示所有页面的完整代码,包括html表单。我还发布了一个答案(20多分钟前,截至此评论),但你还没有对此发表评论,我也不知道这对你是否有效。log.php:logInForm.html:这真的是一个评论,那么我能留在mypage.php上吗?是的。确保将该值存储到正确的会话变量或cookie中,然后检查其是否已设置且不为null。否则,重定向到登录页面。“如果会话变量或cookie设置为isset且为预期值,则将用户保留在页面上…”这就是我不知道如何做到的。我已使用会话变量的方法更新了我的答案。请检查。我使用了与您在我的代码中看到的完全相同的代码,但在刷新之后,php代码表单将被加载。显然,我不想再次填写详细信息。
<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>