无法在页面之间存储会话数据

时间:2012-04-18 22:31:18

标签: php session header

我在所有的php项目中遇到的问题是,因为我使用OOP是因为有用户提交表单

当它去处理它并且如果它有错误我在会话中保存一条消息并将它们重定向到同一页面

这是一个示例,当然它重定向时会擦除那里的所有字段

就像让我说我有一个

的注册表格
<?php if(!empty($message)) { echo $message } ?>
<form action ="forms/register.php">
first name: <input type="text" name="first_name" />
username:<input type="text" name="username" />
<input type="submit" value = "submit" />
</form>

这就是表单/ register.php

中的代码
  if(isset($_POST['submit'])) {
    $first_name = $_POST['first_name'];
    $username = $_POST['username'];

 if(empty($first_name) || empty($username) {
    $session -> message("please fill in all the fields");
    redirect("../register.php");
 } else {
    // do something else like insert query
 }

 }

我的问题是,如果first_name或user_name为空,它会重定向到register.php

并且回复错误信息

中没有问题

但字段为空,first_name和user_name为空

所以用户必须再次填写

所以我的一个朋友建议将它保存在会话中或其他什么

所以我想知道如果那是可能的那么我怎么意思和怎么意思没有人会弄错,我的意思是代码只是复制它并粘贴它

提前致谢

抱歉长而烦恼

3 个答案:

答案 0 :(得分:2)

您可以在页面重定向会话变量后存储要保留在表单中的任何值,然后在表单页面上检索这些值并在表单元素的value属性中回显它们。

答案 1 :(得分:1)

session_start(); $_SESSION['nick'] = $_GET['nick'];

更多/更好的例子:

http://php.net/manual/en/function.session-start.php

答案 2 :(得分:1)

不确定您面临的问题(也是您工作流程中的$ session?)。 但是,我建议使用PHP inbuild会话支持。 http://php.net/manual/en/features.sessions.php

从以上链接本身:

<?php
session_start();

if(isset($_SESSION['views']))
{
    $_SESSION['views']=$_SESSION['views']+1;
}
else
{
    $_SESSION['views']=1;
    echo "Views=". $_SESSION['views'];
}
?>

以上代码只是跟踪页面浏览量。 $ _SESSION变量在页面加载之间持续存在,您应该对所有会话要求使用相同的。