Php 发送表单前验证数字和电子邮件字段
我是新来PHP的,如果我的问题有点不着边际,我很抱歉。我正在创建一个联系形式,这是伟大的工作,但我需要验证两个领域;电话号码和电子邮件地址,我需要它来检查电话号码字段是否只有号码,并且长度为11位。电子邮件字段必须是“某物”@“某物”。“某物” 如果可能的话,我更愿意只使用html或php(以最简单的为准),我想如果有一种方法可以将验证放入字段属性中,那将是最简单的方法?例:在这里:Php 发送表单前验证数字和电子邮件字段,php,html,forms,validation,Php,Html,Forms,Validation,我是新来PHP的,如果我的问题有点不着边际,我很抱歉。我正在创建一个联系形式,这是伟大的工作,但我需要验证两个领域;电话号码和电子邮件地址,我需要它来检查电话号码字段是否只有号码,并且长度为11位。电子邮件字段必须是“某物”@“某物”。“某物” 如果可能的话,我更愿意只使用html或php(以最简单的为准),我想如果有一种方法可以将验证放入字段属性中,那将是最简单的方法?例:在这里: <input type="text" name="email" id="email" class="tex
<input type="text" name="email" id="email" class="text" form="contact_form" required/>
如果这是不可能的,那么可能在我的PHP文件中,看起来是这样的:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Submitting...</title>
</head>
<body>
<?php
$Name = $_POST ['full_name'];
$Email = $_POST['email'];
$Number = $_POST['phone_number'];
$Company = $_POST['company_name'];
$Message = $_POST['message'];
$formcontent="Name: $Name
\n Email: $Email
\n Number: $Number
\n Company: $Company
\n Message: $Message";
$recipient = "info@vicarage-support.com";
$subject = "Contact";
$mailheader = "From: $Email \r\n";
ini_set("sendmail_from","info@vicarage-support.com");
mail($recipient, $subject, $formcontent, $mailheader) or die("Please try again.");
echo("Form Submitted.");
?>
<script type="text/JavaScript">
<!--
setTimeout("location.href = 'http://www.vicarage-support.com/contact_us.html';",3000);
-->
</script>
</body>
</html>
提交。。。
提前感谢。如果您想在提交前验证此表单,必须使用javascript。但是,您仍然应该签入服务器端代码,因为javascript可能会被禁用,这将导致javascript验证无效 我过去用过这个,很适合我的需要。
尝试添加三个变量。首先添加一个
$pattern
变量,然后添加两个变量并使用switch函数
有点像
<?php
$what = what you are checking (phone, email, etc)
$data = the string you want to check
function isValid( $what, $data ) {
switch( $what ) {
case 'Number':
$pattern = "/^([1]-)?[0-9]{3}-[0-9]{3}-[0-9]{4}$/i";
break;
//Change to a valid pattern, or configure it the way you want.
case 'Email':
$pattern = "/^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*(.[a-z]{2,3})$/i";
break;
default:
return false;
break;
如您所见,这将验证您的表单。您可能需要对其进行配置,以便将
$模式设置为您想要的模式。这可能不是最好的方法,我推荐使用Javascript,但这就是使用PHP和HTML的方法。在提交表单数据之前检查表单数据有两种方法,即客户端:使用Javascript和使用新的(HTML5)HTML属性。如果需要,它们可以一起使用。两者都不能保证数据的有效性;客户端检查应该被视为方便用户,而不是确保数据有效性的一种方式(在本例中,您需要在PHP代码中检查服务器端)
HTML方式可以通过以下方式进行示例:
<input type="email" name="email" id="email" class="text" form="contact_form"
required>
<input type="tel" name="tel" id="tel" class="text" form="contact_form"
required pattern="\d{11}" label="11 digits">
使用type=“email”
意味着浏览器将检查电子邮件地址格式。这是一项不平凡的任务。使用type=“tel”
不会施加格式限制(格式因国家和机构而异),但可能会使浏览器使用更好的用户界面(如触摸屏设备中的数字键盘)。该限制由模式
属性施加。值\d{11}
表示正好11位数字。(这是糟糕的可用性。我认为你应该允许空格,可能还有括号和其他字符,并在服务器上去除它们。在没有任何分组的情况下输入11位数字太难了。11位数字听起来是任意的。)
有几种方法可以在JavaScript中实现相同的功能。模式检查很简单,而电子邮件格式检查非常困难,并且有不同的库例程。一般来说,检查应该是相当宽松的,基本上只是检查有一个“@”字符。谷歌给了我这个=>(第一部分)---“你的”结果是什么,“你”尝试了什么?在直接跳转到PHP之前,我试图找到一种在HTML中执行的方法,如果可能的话,因为正如我提到的,我是PHP新手,没有时间在这个网站上进行PHP的试错,因为这是一个客户端,需要尽快。但是,谢谢你的链接,当我有更多的时间空闲时,我肯定会在未来的项目中看一看,谢谢。谢谢,这帮了大忙,我明白你关于只允许11位数字的观点,我该如何写才能允许区号有一个可能的“+”(但不是必需的),然后至少有11位数字(仅数字)但不限于11?我认为这应该涵盖所有内容,是的,数字仍然可能出错,但我不太可能以这种方式收到垃圾邮件。如果文本框无效,是否也可以格式化文本框?可能类似于“输入。文本:无效”?哦,11位数字背后是有原因的,这是一个英国网站,移动电话和陆地电话号码在这里都是11位数字,但如果我把“+”和11以上的选项放在这里,那么它将允许空格和区号。谢谢你的回复,虽然我没有时间在我当前的项目中深入研究PHP,但我肯定会在将来使用它。
<input type="email" name="email" id="email" class="text" form="contact_form"
required>
<input type="tel" name="tel" id="tel" class="text" form="contact_form"
required pattern="\d{11}" label="11 digits">