PHP我如何在重定向到我自己的过程中维护我的变量,这样当我通过时就不会';我回电时没有收到留言

PHP我如何在重定向到我自己的过程中维护我的变量,这样当我通过时就不会';我回电时没有收到留言,php,sql,Php,Sql,几年前我在大学里就学会了这一点,现在我实际上不得不为工作做类似的事情。我正在筛选我以前的家庭作业,我希望我能更整洁 我正在创建一个注册页面 用户在同一页面上提交POST to self->php验证 如果好的话 我指向thankYou.php页面并清除所有变量。 如果不好,我会重定向到我自己,用我的错误答案填充表单。 我是否需要启动一个会话并将所有变量存储在会话或其他内容中? 我省略了一些代码。为了让阅读更快 <?php //connect to database.....

几年前我在大学里就学会了这一点,现在我实际上不得不为工作做类似的事情。我正在筛选我以前的家庭作业,我希望我能更整洁

我正在创建一个注册页面

用户在同一页面上提交POST to self->php验证 如果好的话 我指向thankYou.php页面并清除所有变量。 如果不好,我会重定向到我自己,用我的错误答案填充表单。 我是否需要启动一个会话并将所有变量存储在会话或其他内容中? 我省略了一些代码。为了让阅读更快

<?php
    //connect to database.....

    //Extracting the data
    if ($_SERVER['REQUEST_METHOD'] == 'POST')
    {
     $pageValid = true;
     $fName         = $_POST['fName'];
     $lName         = $_POST['lName'];
    };

        //validate $fname $lname etc $pageValid = true if it's all good

        if ($_SERVER['REQUEST_METHOD'] == 'POST'){
        if ($pageValid  == true){
            //insert into sql
        header('Location: thankyou.php');
        exit;

        } else  {  
        //if page is not valid redirect come back here
        header('Location: register.php');
        exit;
    };
} //<!--End of ($_SERVER['REQUEST_METHOD'] == 'POST')


?>
<!DOCTYPE html>
<html lang="en">
<head>header...</head>

<body>

<div id="form"  class="col-md-12">
<form id="form1" name="form1" method="post" action="<?php $_SERVER['PHP_SELF']; ?>">

<table class="table"><tr>
<td width="200"><label for="firstName">First Name:</label></td>
<td>
<input name="fName" type="text" id="register" 
value="<?php 

//$fName I want to add the value of $fName here after it gets redirected

?>" size="25" maxlength="50" /> *
 <?php print $fNameError;?>          
</td>
</tr>
</table>

</body>
</html>

是的,将数据存储在$\u会话变量中是一个好主意


e、 g.
$\u SESSION[“lname”]=$\u POST[“lname”]。显然,您需要启动会话、检查输入有效性等……

是的,将数据存储在$\u会话变量中是一个好主意


e、 g.
$\u SESSION[“lname”]=$\u POST[“lname”]。显然,您需要启动会话、检查输入有效性等…

基本上您需要检查是否存在
POST
变量:

<?php
if( isset( $_POST['fName'] ) )
{
  // the form has been submitted, do something

}
?>
或者,如果验证POST数据并希望仅使用有效输入填充会话:

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
  $_SESSION['formData'] = array();
  $_SESSION['formData']['pageValid'] = true;
  $_SESSION['formData']['fName'] = $_POST['fName'];
  $_SESSION['formData']['lName'] = $_POST['lName'];
};
?>

基本上是检查是否存在
POST
变量:

<?php
if( isset( $_POST['fName'] ) )
{
  // the form has been submitted, do something

}
?>
或者,如果验证POST数据并希望仅使用有效输入填充会话:

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
  $_SESSION['formData'] = array();
  $_SESSION['formData']['pageValid'] = true;
  $_SESSION['formData']['fName'] = $_POST['fName'];
  $_SESSION['formData']['lName'] = $_POST['lName'];
};
?>

fName
可以用$\u请求['fName'填充

您可以始终使用
$\u post
(或使用GET方法的表单的
$\u GET
)检索每个post输入的值

在这两种情况下,您都可以通过访问数组
$\u请求
来检索输入值。在这里找到

使用会话是一个非常糟糕的主意:当你的用户开始从多个选项卡访问你的web应用时,它会让你头疼不已。这也是一个问题,因为它需要您在处理表单后清除会话,否则在用户下次使用表单时可能会出现意外结果(例如,自动且无法解释地填充没有用户输入的输入字段)

更新 不鼓励在会话中存储表单输入,至少有两个原因:

  • 会话在由同一用户同时打开的所有页面之间共享。假设您在一个选项卡中打开表单并提交时出现一些错误;web应用程序将重新打开表单,用会话中的数据填充表单。现在,打开具有相同表单的第二个选项卡:会话仍然相同,因此表单将填充第一个表单中的数据。提交时有一些错误:您将更改两个表单的数据

  • $\u请求
    项目在发布期间填充,并在下一次请求时自动清除;会话不是,而是在整个会话中持久化。这意味着您的代码将需要明确地清除它们,否则即使没有表单提交,您也有可能找到具有旧值的表单输入


fName
可以用$\u请求['fName'填充

您可以始终使用
$\u post
(或使用GET方法的表单的
$\u GET
)检索每个post输入的值

在这两种情况下,您都可以通过访问数组
$\u请求
来检索输入值。在这里找到

使用会话是一个非常糟糕的主意:当你的用户开始从多个选项卡访问你的web应用时,它会让你头疼不已。这也是一个问题,因为它需要您在处理表单后清除会话,否则在用户下次使用表单时可能会出现意外结果(例如,自动且无法解释地填充没有用户输入的输入字段)

更新 不鼓励在会话中存储表单输入,至少有两个原因:

  • 会话在由同一用户同时打开的所有页面之间共享。假设您在一个选项卡中打开表单并提交时出现一些错误;web应用程序将重新打开表单,用会话中的数据填充表单。现在,打开具有相同表单的第二个选项卡:会话仍然相同,因此表单将填充第一个表单中的数据。提交时有一些错误:您将更改两个表单的数据

  • $\u请求
    项目在发布期间填充,并在下一次请求时自动清除;会话不是,而是在整个会话中持久化。这意味着您的代码将需要明确地清除它们,否则即使没有表单提交,您也有可能找到具有旧值的表单输入


    • 您不需要在出现错误时重定向回表单。。。表单是在同一脚本中构建的,因此只需让它渲染脚本的其余部分即可。您只需要对有效的注册数据进行重定向


      基本上,去掉PHP中的“else”部分。

      您不需要在出现错误时重定向回表单。。。表单是在同一脚本中构建的,因此只需让它渲染脚本的其余部分即可。您只需要对有效的注册数据进行重定向


      基本上,去掉PHP中的“else”部分。

      为什么这里有一个-1,我想我可以这样做。我想知道是否有更好的方法。请看我的回答:我添加了一个便条,在使用会话存储表单输入时有一些缺点。为什么它有a-1,我想我可以这样做。我想知道是否有更好的方法。请看我的回答:我添加了一个注释,在使用会话存储表单输入时存在一些缺点。我已经有了这样一个注释:当我验证时,该注释不起作用,因为当我重定向页面时,该页面不会有任何帖子。我已经有了这样一个注释:当我验证时,该注释不起作用,因为当我重定向页面时,该页面不会有任何帖子值谢谢,所以要解决这个问题,我应该只使用$\u REQUEST['fName'