Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php会话使表单保持粘性_Php_Forms_Session_Sticky - Fatal编程技术网

使用php会话使表单保持粘性

使用php会话使表单保持粘性,php,forms,session,sticky,Php,Forms,Session,Sticky,我正在尝试创建php多页表单,为此我使用php会话。 但是,当用户输入有错误时,我希望表单要求用户使用正确的输入再次填写表单,表单字段将不会保存用户已经输入的数据,因此用户必须重新开始。 如何使用php会话使表单具有粘性? 谢谢 我的代码如下 <?php // Session starts here. if (!isset($_SESSION)) session_start(); ?> <form action="registration.php" meth

我正在尝试创建php多页表单,为此我使用php会话。 但是,当用户输入有错误时,我希望表单要求用户使用正确的输入再次填写表单,表单字段将不会保存用户已经输入的数据,因此用户必须重新开始。 如何使用php会话使表单具有粘性? 谢谢

我的代码如下

<?php
// Session starts here.
          if (!isset($_SESSION)) session_start();
?>
<form action="registration.php" method="post">
  <center><h8>Please create your user name and password</h8></center>
  <div class="imgcontainer">

    <img src="phone.gif" alt="Welcome" class="avatar">
  </div>

  <div class="container">

           <label><b>Username</b></label>
           <input type="text" placeholder="Enter Username" name="username" required value="<?php if(isset($_POST['username'])) echo $_POST['username'];?>">

            <label><b>Password</b></label>
              <input type="Password" placeholder="Enter Password" name="password" required>

              <label><b>Confirm Password</b></label>
    <input type="Password" placeholder="Confirm Password" name="confirm" required>
    <span id="error" width=100%>
     <!---- Initializing Session for errors --->
     <?php
     if (!empty($_SESSION['error'])) {
                echo "<error>".$_SESSION['error']."</error>";
                unset($_SESSION['error']);
      }

  if (isset($_POST['username'])){ 
       $_SESSION['username'] = $_POST['username'];
       echo $_SESSION['username'];
       echo $_POST['username'];
        }
 ?>
 </span>
<br>

    <input type="reset" value="Reset" />
 <input type="submit" value="Next" />

  </div>

请创建您的用户名和密码
用户名
大概是这样的:

<input name="var" value="<?= isset($_SESSION['var']) ? $_SESSION['var'] : null  ?>" />

试试另一种方法。将表单操作链接到当前页面,以及所有字段是否有效;将其重定向到下一页(registration.php)。这样,您仍然可以拥有所有post数据,您可以处理会话中需要保存的所有内容,并且可以在完成所有逻辑后重定向。

我的两分钱将用于保留相同的页面以验证内容和表单。
根据表单是否有效,您可以在单个页面中包含其他PHP文件。
这样,您就可以在两个页面之间保持相同的$u POST,而不需要将发布的数据存储在会话变量中

if($_SERVER['REQUEST_METHOD'] == 'POST'){
  print 'Something just posted';
}
否则,如果要保持相同的体系结构,则需要在输入值中使用
$\u SESSION
变量,而不是
$\u POST
变量,例如delboy的答案

替换:

<?php if(isset($_POST['username'])) echo $_POST['username'];?>

与:



^注意:如果用户输入
作为用户名,则htmlspecialchars用于防止反射的XSS。

问题是,您的数据已发布到registration.php,因此您无法在原始文件中获取发布的值。您正试图使用$SESSION,但这不是推荐的,也是不对的。您的整个解决方案都是错误的

忘记会话和分离的文件,将所有内容放在registration.php文件中

您可以使用$\u服务器['REQUEST\u METHOD']变量检查用户是否已发布

if($_SERVER['REQUEST_METHOD'] == 'POST'){
  print 'Something just posted';
}

PS:在存储密码之前,不要忘记保护密码!:)

你能显示你已经尝试过的代码吗?我在任何地方都没有看到关闭的
,甚至在编辑模式下也没有。因此,我们不知道这是否是问题的一部分,或者“问题”的一部分。这里不是我的否决票,但我不知道为什么它被否决;这是一个可能的解决方案。可能是因为“废话”“谁知道呢。编辑:我编辑只是为了以防万一。编辑2:似乎他们撤回了否决票。如果你感兴趣,试试我的表单库,省去了很多麻烦:-)非常感谢。似乎有些建议在没有会议的情况下有效。我将尝试该解决方案,并报告其运行情况。我尝试在同一页上验证Anthony的解决方案,等等,最后Anthony的解决方案有效。
if($_SERVER['REQUEST_METHOD'] == 'POST'){
  print 'Something just posted';
}