【问题标题】:Unable to store session data into next form无法将会话数据存储到下一个表单中
【发布时间】:2014-12-22 22:28:00
【问题描述】:

目前我正在处理存储会话并将其传递给下一个表单的问题,但是尽管我尝试启动会话并将变量存储在会话中,但它不起作用。请对此有所了解,谢谢!

MainForm.php

<?php
session_start();
require("inputValidation.php"); // This php file is just a file that does validation for my side
$validForm = true;
if ($_POST) 
{
}
?>
<form class="form" action="nextform.php" role="form" method="post">
<input type="text" class="form-control" id="name" name="name" value= "<?php
                        if (isset($_POST['name'])) 
                            {
                            if (!validateRequired($_POST['name'])) 
                            {
                                $_SESSION['test'] = $_POST['name'];
                                $validForm = false;          
                            }
                            if (validateRequired($_POST['name'])) 
                            {
                                $_SESSION['test'] = $_POST['name'];
                                $validForm = true;
                            }
                        }
                        ?>
<input name="submit" type="submit" value="Submit" class="btn btn-primary">

nextform.php

print_r ($_SESSION);

问题是即使我在文本框名称中输入任何值,我也会被直接重定向到 nextform.php 而不获取我的会话值。为什么会这样?有什么方法可以在不更改action="nextform.php" 的情况下获得我的会话值?

谢谢!

对不起,我对会话和 PHP 还是新手,所以请多多包涵 :)

【问题讨论】:

  • 你在哪里设置$_POST['name'],设置好了吗? session_start();也需要成为 nextform.php 中的第一件事——会话需要在您要使用的每个页面中启动!

标签: php html validation session post


【解决方案1】:

基本上你不想做的就是移动整个

if (isset($_POST['name']))
{
    //... you code
}

到提交表单的页面,在您的情况下为nextform.php

你的页面应该是这样的:

MainForm.php

<form class="form" action="nextform.php" role="form" method="post">
<input type="text" class="form-control" id="name" name="name" value= "">
<input name="submit" type="submit" value="Submit" class="btn btn-primary">

nextform.php

<?php
session_start();
require("inputValidation.php"); // This php file is just a file that does validation for my side
$validForm = true;

if (isset($_POST['name'])) 
{
    if (!validateRequired($_POST['name'])) 
    {
        $_SESSION['test'] = $_POST['name'];
        $validForm = false;          
    }
    if (validateRequired($_POST['name'])) 
    {
        $_SESSION['test'] = $_POST['name'];
        $validForm = true;
    }
}

if($validForm) {
    echo "Validation success";
    print_r ($_SESSION);
} else {
    echo "Form validation failed.";
}
?>

基本上可以在提交表单的页面访问POST参数,见action="nextform.php"

您可以在此处检查表单是否已提交并进行正确的验证,以及将用户重定向到某处,或仅根据需要显示适当的消息,即Validation failedValidation success

【讨论】:

  • 一条评论,你使用validateRequired() 的方式有点奇怪,因为无论它是否失败,你仍然将会话设置为发布的值,但我想这并不重要,因为你正在玩代码。
  • 嗨@Krypos,感谢您抽出宝贵时间。我稍后会尝试并及时更新。
猜你喜欢
  • 2020-12-27
  • 1970-01-01
  • 2015-04-19
  • 1970-01-01
  • 2011-04-17
  • 1970-01-01
  • 1970-01-01
  • 2021-10-11
  • 1970-01-01
相关资源
最近更新 更多