0

我在所有 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>

这就是 forms/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 为空

所以用户必须再次填写

所以我的一位朋友建议将其保存在会话中或其他内容中

所以我想知道这是否可能,那么我的意思是如何以及我的意思是什么,所以没有人会弄错,我的意思是不是复制它并粘贴它的代码的方式

提前致谢

很抱歉又长又烦

4

3 回答 3

2

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

于 2012-04-18T22:37:46.307 回答
1
session_start(); $_SESSION['nick'] = $_GET['nick'];

更多/更好的例子:

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

于 2012-04-18T22:33:35.087 回答
1

不确定您到底面临什么问题(以及您的工作流程中的 $session 是什么?)。但是,我建议使用 PHP 内置会话支持。 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 变量在页面加载之间持续存在,您应该对所有会话要求使用相同的变量。

于 2012-04-18T22:37:02.687 回答