Php 用于表单验证的正则表达式
您好,我有一个简单的表单要验证,我已经询问了客户端验证,但现在的问题是服务器端验证不起作用。想法是验证输入字段,并检查其长度是否在[5-20]之间chars并显示一个错误消息,如果没有并阻止表单提交,则应在客户端执行此操作,然后如果一切正常,则应将数据发送到服务器,服务器将检查输入数据是否仅包含字母如果是,则将回显“感谢提交表单”如果不显示错误消息“名称应仅包含从a到z的字母”,则问题是在提交表单后,我从客户端验证中获得了“确定”,我从未收到任何服务器消息。请帮助,这是代码Php 用于表单验证的正则表达式,php,jquery,html,forms,validation,Php,Jquery,Html,Forms,Validation,您好,我有一个简单的表单要验证,我已经询问了客户端验证,但现在的问题是服务器端验证不起作用。想法是验证输入字段,并检查其长度是否在[5-20]之间chars并显示一个错误消息,如果没有并阻止表单提交,则应在客户端执行此操作,然后如果一切正常,则应将数据发送到服务器,服务器将检查输入数据是否仅包含字母如果是,则将回显“感谢提交表单”如果不显示错误消息“名称应仅包含从a到z的字母”,则问题是在提交表单后,我从客户端验证中获得了“确定”,我从未收到任何服务器消息。请帮助,这是代码 <?php
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$name = $_POST['user'];
if(!preg_match("/^[a-zA-Z ]*$/",$name))
echo "name must contain only characters";
else
echo "thanks for submitting the form";
}
?>
<!doctype html>
<html>
<head>
<title>form validation</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
<script>
$( document ).ready(function()
{
$("form").on('submit', myfunction); //<-- listen for form submit, not button click
function myfunction(evt)
{ //<-- the event object is automatically passed along;
// this is key for suppressing submission
name = $("#user").val();
nameError = $(".error").first();
myNameError = "";
if(name.length < 5 || name.length > 20)
myNameError += "length should be between 5 and 20 ";
else
myNameError += "ok"
if (myNameError)
{
evt.preventDefault(); //<-- suppress submission if error found
nameError.html(myNameError);
}
}
});
</script>
<style>
.error
{
color : red;
text-transform: capitalize;
margin-left: 20px;
}
</style>
</head>
<body>
<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'])?>">
NAME : <input type="text" name="user" id="user"><span class="error"></span><br />
<input type="submit" value="Submit" id="submit">
</form>
</body>
</html>
表单验证
$(文档).ready(函数()
{
$(“表单”)。在('submit',myfunction);//上,这肯定是个问题:
if (name.length < 5 || name.length > 20)
myNameError += "length should be between 5 and 20 ";
else
myNameError += "ok"
if (myNameError)
{
...
if(name.length<5 | | name.length>20)
myNameError+=“长度应介于5和20之间”;
其他的
myNameError+=“确定”
如果(myNameError)
{
...
您正在将mynamererror
变量设置为字符串,即错误消息或字符串ok
。因此if(mynamererror)
始终为true
,因此您永远不会向服务器发出任何POST请求
要解决此问题,如果没有错误,则不应在myNameError
中添加任何字符串。这肯定是个问题:
if (name.length < 5 || name.length > 20)
myNameError += "length should be between 5 and 20 ";
else
myNameError += "ok"
if (myNameError)
{
...
if(name.length<5 | | name.length>20)
myNameError+=“长度应介于5和20之间”;
其他的
myNameError+=“确定”
如果(myNameError)
{
...
您正在将mynamererror
变量设置为字符串,即错误消息或字符串ok
。因此if(mynamererror)
始终为true
,因此您永远不会向服务器发出任何POST请求
要解决此问题,如果没有错误,则不应在mynamererror
中添加任何字符串。可能是一个愚蠢的问题,但为什么要使用action=“”?您的正则表达式还匹配空格/^[a-zA-Z]*$/
处理表单时会发生什么?你应该在问题中造句,这有点难读。你知道表单将使用“POST”发送,为什么不检查是否设置($\u POST['user'])
而不是$\u服务器['REQUEST\u METHOD']=='POST'
。也许您的服务器不允许$\u server
中的REQUEST\u METHOD
指令。事实上,我正在阅读w3schools PHP课程,如果您有更好的学习场所,他们会这样做的。谢谢这可能是一个愚蠢的问题,但为什么您有action=“”?您的正则表达式还匹配空格/^[a-zA-Z]*$/
处理表单时会发生什么?您应该在问题中造句,这有点难读。您知道表单将使用“POST”发送,为什么不检查是否设置($\u POST['user'])
而不是$\u SERVER['REQUEST\u METHOD']=='POST'
。可能您的服务器不允许$\u server
中的REQUEST\u METHOD
指令。实际上,我正在阅读w3schools PHP课程,如果您有更好的学习场所,他们会这样做的。谢谢