【发布时间】:2014-03-04 13:21:58
【问题描述】:
我有一个登录页面,用户必须在其中提供他/她的凭据,然后登录到名为 dashboard.php 的页面。
现在在这个页面上完成了凭据验证。我使用 $_POST 来传递变量。如果用户凭据不正确,则将他带回 index.php。 否则页面将填充来自数据库的用户数据。
现在的问题是,当用户从任何其他页面(index.php 除外)修改 dashboard.php 时,我如何取回相同的凭据以便显示与用户相关的内容? 我尝试通过将凭据保存在其中来使用会话变量,但仍然无法正常工作。
我添加了我所做的示例代码:
index.php
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<form action="dashboard.php" method="post">
<input type="text" name="txt">
<input type="submit">
</form>
</body>
这将传输到dashboard.php,即:
<?php
session_start();
if(isset($_SESSION['LOG_IN'])!=1)
{
$xt = $_POST['txt'];
$_SESSION['LOG_IN']=1;
}
?>
<html>
<head>
</head>
<body>
<p> HI </p>
<a href="3.php"><?php $xt ?>Link of 3.php</a>
</body>
</html>
现在,当我转到某个名为 3.php 的页面并按下后退按钮时。我得到表格重新提交页面。
【问题讨论】:
-
这个想法是在用户登录后设置您的会话变量。在
dashboard.php,您检查登录的会话变量是否为true,如果不是则重定向到index.php.注销时,销毁会话。 -
你要实现的是PHP session的基础,拿一本PHP基础书或者看手册Session Handling
-
您还没有在仪表板页面的第一行开始会话
-
即使这样做也无法正常工作。每当我回到页面时,它都会要求重新提交表单
-
在 session_start() 之后请 print_r 你的 $_POST。我认为您在定义之前正在检查 isset($_SESSION['LOG_IN'])。