使用php会话使表单保持粘性
我正在尝试创建php多页表单,为此我使用php会话。 但是,当用户输入有错误时,我希望表单要求用户使用正确的输入再次填写表单,表单字段将不会保存用户已经输入的数据,因此用户必须重新开始。 如何使用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
// 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';
}