【发布时间】:2014-01-30 03:50:58
【问题描述】:
我创建了一个 PHP 表单来获取 4 个文本字段名称、电子邮件、用户名和密码,并为这些设置了验证。我的代码当前正在正确验证并在代码验证与否时显示消息。 但是,我希望它在提交时保持正确验证的字段被填写,而那些验证失败的字段为空,并显示详细说明原因的错误消息。
到目前为止我有以下代码,主要是form.php:
<?php
$self = htmlentities($_SERVER['PHP_SELF']);
?>
<form action="<?php echo $self; ?>" method="post">
<fieldset>
<p>You must fill in every field</p>
<legend>Personal details</legend>
<?php
include 'personaldetails.php';
include 'logindetails.php';
?>
<div>
<input type="submit" name="" value="Register" />
</div>
</fieldset>
</form>
<?php
$firstname = validate_fname();
$emailad = validate_email();
$username = validate_username();
$pword = validate_pw();
?>
我的functions.php代码如下:
<?php
function validate_fname() {
if (!empty($_POST['fname'])) {
$form_is_submitted = true;
$trimmed = trim($_POST['fname']);
if (strlen($trimmed)<=150 && preg_match('/\\s/', $trimmed)) {
$fname = htmlentities($_POST['fname']);
echo "<p>You entered full name: $fname</p>";
} else {
echo "<p>Full name must be no more than 150 characters and must contain one space.</p>";
} }
}
function validate_email() {
if (!empty($_POST['email'])) {
$form_is_submitted = true;
$trimmed = trim($_POST['email']);
if (filter_var($trimmed, FILTER_VALIDATE_EMAIL)) {
$clean['email'] = $_POST['email'];
$email = htmlentities($_POST['email']);
echo "<p>You entered email: $email</p>";
} else {
echo "<p>Incorrect email entered!</p>";
} }
}
function validate_username() {
if (!empty($_POST['uname'])) {
$form_is_submitted = true;
$trimmed = trim($_POST['uname']);
if (strlen($trimmed)>=5 && strlen($trimmed) <=10) {
$uname = htmlentities($_POST['uname']);
echo "<p>You entered username: $uname</p>";
} else {
echo "<p>Username must be of length 5-10 characters!</p>";
} }
}
function validate_pw() {
if (!empty($_POST['pw'])) {
$form_is_submitted = true;
$trimmed = trim($_POST['pw']);
if (strlen($trimmed)>=8 && strlen($trimmed) <=10) {
$pword = htmlentities($_POST['pw']);
echo "<p>You entered password: $pword</p>";
} else {
echo "<p>Password must be of length 8-10 characters!</p>";
} }
}
?>
如何确保在按下提交时它会保留有效输入并清空返回错误消息的无效输入。
最好我还希望初始 if(!empty) 有一个备用的 else 条件。我最初有这个,但发现它会以错误消息开始表单。
最后,通过此表单注册后,如何将有效信息记录到外部文件中以用于检查登录详细信息?
非常感谢任何帮助。
【问题讨论】:
-
您遇到了什么具体问题?数据验证/重新填充的哪一部分不适合您?你有没有做过任何调试来缩小它为什么不起作用?实际上,您根本没有显示任何可以在出错时将值填充回表单的代码。
-
只需将输入值设置为来自帖子的 html 安全用户输入
-
这个代码
include 'personaldetails.php'; include 'logindetails.php';在哪里?将此添加到您的脚本顶部error_reporting(E_ALL); ini_set('display_errors', 1)以便您可以确定错误在哪里。
标签: php forms validation