我正在尝试使用php验证html表单。我已经解决了以下问题:
我的html表单的一部分:
<input class="text" type="text" name="fname" id="firstname1" required="required">
在signup.php
我有
<?php
if (!preg_match("/^[a-zA-Z ]*$/",$_POST['fname']))
{
echo ('Name should include only characters');
die( '</body></html>' );
}
?>
但我的问题是,在这种形式下,错误消息不会出现在与表单相同的页面上,而是出现在另一页面中。我想在表单所在的页面上显示错误消息。
在javascript中我这样做,但我不知道如何在php中实现: 我构建了如下函数:
function name() {
var pass = document.getElementById('firstname1');
var sb = document.getElementById('submit1');
var letters=/^[a-zA-Z]+$/;
if (pass.value.match(letters) ){
sb.disabled = false;
document.getElementById('error-fname1').style.display = 'none';
}
else {
document.getElementById('error-fname1').style.display = 'block';
sb.disabled = true; }
}
然后我尝试用这种方式调用它:
<input class="text" type="text" name="fname" id="firstname1" required="required" onchange="name()">
<span class="errorformat " id="error-fname1" style="display: none" >
Please write only letters
</span>
请帮助我...我正在尝试学习PHP ...提前致谢
答案 0 :(得分:1)
为什么不在同一页面上验证它。
PHP:
if(isset($_POST['fname'])){
... (Any checks you want to make)
}
HTML:
<form action="" method="post">
<input class="text" type="text" name="fname" id="firstname1" required="required">
</form>
这样,php只有在表单提交后才会运行,并且错误将出现在同一页面上。
答案 1 :(得分:0)
如果你想使用php(强烈推荐)进行服务器端验证,那么你可以通过将所有内容放在同一个文件中来使用以下方法...示例文件form.php
<?php
//validate form
if(!preg_match("/^[a-zA-Z ]*$/",$_POST['fname']))
{
$problem = true;
}
else
{
$formok = true;
?>
然后html部分启动,您可以在某个时候输出错误消息:
<?php if($problem) echo "Incorrect Name Format" ?>
<?php if($formok) echo "Nice job" ?>
那么表格应该是这样的:
<form action="form.php">
//inputs
</form>
答案 2 :(得分:0)
如果您想使用重定向在页面上显示错误消息,您可以执行与此类似的操作:
if (!preg_match("/^[a-zA-Z ]*$/",$_POST['fname'])) {
header("Location: http://domain/oldpage.php");
exit();
}
您可以将其重定向到新的错误页面,或者可能在链接的末尾包含查询字符串,例如?error=true
。然后,检查该查询字符串的页面,如果存在,则显示错误消息。
答案 3 :(得分:0)
在表单所在的页面上,添加一个GET var并检查它是否已设置。类似的东西:
if(isset($_GET['error'])) {
// Output error message logic here. Don't forget to sanitize the GET var //
}
在您处理数据的文件中,如果您有任何错误,请将用户抬回页面,并附上包含错误消息的表单。
$errormsg = '';
if($_POST['fname'] == trim("") || !isset($_POST['fname'])) {
$errormsg = 'Please enter your name';
header('location: signup.php?error='.$errormsg);
}
这假设您的表单页面是PHP文件。如果不是,只需更改扩展名。