Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 发送表单前验证数字和电子邮件字段_Php_Html_Forms_Validation - Fatal编程技术网

Php 发送表单前验证数字和电子邮件字段

Php 发送表单前验证数字和电子邮件字段,php,html,forms,validation,Php,Html,Forms,Validation,我是新来PHP的,如果我的问题有点不着边际,我很抱歉。我正在创建一个联系形式,这是伟大的工作,但我需要验证两个领域;电话号码和电子邮件地址,我需要它来检查电话号码字段是否只有号码,并且长度为11位。电子邮件字段必须是“某物”@“某物”。“某物” 如果可能的话,我更愿意只使用html或php(以最简单的为准),我想如果有一种方法可以将验证放入字段属性中,那将是最简单的方法?例:在这里: <input type="text" name="email" id="email" class="tex

我是新来PHP的,如果我的问题有点不着边际,我很抱歉。我正在创建一个联系形式,这是伟大的工作,但我需要验证两个领域;电话号码和电子邮件地址,我需要它来检查电话号码字段是否只有号码,并且长度为11位。电子邮件字段必须是“某物”@“某物”。“某物”

如果可能的话,我更愿意只使用html或php(以最简单的为准),我想如果有一种方法可以将验证放入字段属性中,那将是最简单的方法?例:在这里:

<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">