Php 如何验证名称字段以避免使用数字

Php 如何验证名称字段以避免使用数字,php,forms,validation,spam,spam-prevention,Php,Forms,Validation,Spam,Spam Prevention,如何使用bootstrap或php轻松验证表单上的名称输入?我希望此字段拒绝所有数字0-9。你能帮帮我吗 下面是字段,它是我使用的表单的一部分: <input class="form-control" id="name" placeholder="NAME" type="text" name="name"> 这是发送表单的php脚本: <?php $adresdo = "info@takelake.com"; $temat = "Newsletter signup"

如何使用bootstrap或php轻松验证表单上的名称输入?我希望此字段拒绝所有数字0-9。你能帮帮我吗

下面是字段,它是我使用的表单的一部分:

<input class="form-control" id="name" placeholder="NAME" type="text" name="name">

这是发送表单的php脚本:

<?php
 $adresdo = "info@takelake.com";
  $temat = "Newsletter signup";
  $zawartosc = "Imie: ".$_POST['name']."\n"
       ."Email: ".$_POST['email']."\n"
       ."Selected".implode($_POST['checkbox'],",");

// if the url field is empty 
if(isset($_POST['url']) && $_POST['url'] == ''){

  if(!$_POST['name'] || !$_POST['email']){
     header("Location: error.html");
   exit;
}
$email = $_POST['email'];
if(mail($adresdo, $temat, $zawartosc, 'From: Subskrybent <'.$email.'>'))
{
   header("Location: ok.html"); 
}


} 

   header("Location: error.html");
  ?>

使用以下代码检查它是否包含数字:

if(preg_match('~[0-9]~', $_POST['name'])) {
    //has numbers
} else {
   //no numbers
}
更新了您的代码:

<?php
$adresdo = "info@takelake.com";
$temat = "Newsletter signup";
$zawartosc = "Imie: ".$_POST['name']."\n"
   ."Email: ".$_POST['email']."\n"
   ."Selected".implode($_POST['checkbox'],",");

// if the url field is empty 
if(isset($_POST['url']) && $_POST['url'] == ''){
 // then send the form to your email
  mail( 'you@yoursite.com', 'Contact Form', print_r($_POST,true) ); 

  if(!$_POST['name'] || !$_POST['email']){
     header("Location: error.html");
   exit;
    if(preg_match('~[0-9]~', $_POST['name'])) {
        header("Location: error.html");
        exit();
    } 
}
$email = $_POST['email'];
if(mail($adresdo, $temat, $zawartosc, 'From: Subskrybent <'.$email.'>'))
{
    header("Location: ok.html");
    exit(); 
}


} 

   header("Location: error.html");
   exit();
  ?>

使用以下代码检查它是否包含数字:

if(preg_match('~[0-9]~', $_POST['name'])) {
    //has numbers
} else {
   //no numbers
}
更新了您的代码:

<?php
$adresdo = "info@takelake.com";
$temat = "Newsletter signup";
$zawartosc = "Imie: ".$_POST['name']."\n"
   ."Email: ".$_POST['email']."\n"
   ."Selected".implode($_POST['checkbox'],",");

// if the url field is empty 
if(isset($_POST['url']) && $_POST['url'] == ''){
 // then send the form to your email
  mail( 'you@yoursite.com', 'Contact Form', print_r($_POST,true) ); 

  if(!$_POST['name'] || !$_POST['email']){
     header("Location: error.html");
   exit;
    if(preg_match('~[0-9]~', $_POST['name'])) {
        header("Location: error.html");
        exit();
    } 
}
$email = $_POST['email'];
if(mail($adresdo, $temat, $zawartosc, 'From: Subskrybent <'.$email.'>'))
{
    header("Location: ok.html");
    exit(); 
}


} 

   header("Location: error.html");
   exit();
  ?>

要在PHP中检查字符串是否有数字,可以使用正则表达式:

if (preg_match('/[0-9]+/', $_POST['field_name'])) {
    // add logic if the POST value has numbers in it...
}
如果要将其重新用于其他操作,请将其包装到函数中:

function containsNumbers($string) {
    return preg_match('/[0-9]+/', $string) > 0;
}
使用类似于:

if (containsNumbers($_POST['field_name'])) {
    // logic here
}
不要只依赖前端验证。这就是后端的用途。HTML输入模式和javascript验证可以轻松绕过。最佳实践是通过Javascript检查前端以获得更好的UI响应,但如果用户试图规避规则,则通过PHP重新检查后端

下面是Javascript中的一个检查器:

var checkIsValidName = function(string) {
    // returns false if string contains numbers
    var pattern = /[^0-9]+/;

    // returns false if string contains chars other than A-Z, a-z, space, apostraphe and hyphen
    // also returns false on accented characters, as this checks the ASCII values
    var pattern = /[A-Za-z\s\'-]/;

    return string.match(pattern);
}
用法:

if (checkIsValidName()) {
    // javascript logic here
    alert('Not Valid Name');
}
此正则表达式模式将匹配所有字母、空格、连字符、撇号和标准重音字符(西欧):

您可以看到,这可能会很快变得混乱,如果字符串包含我们不包含的任何非ASCII字母,例如西里尔字母、波兰语和任何亚洲字母,它将拒绝该字符串

因为如果出现这种情况,最好是独占的且不包含正则表达式检查,因为您允许的字符总是多于您不允许的字符。当然,这指的是人们的姓名,而不是密码或电子邮件地址,在这些地址中,您希望使用包含模式(因为您实际可以使用的字符有限制)

注意:虽然有用且看似简单,但在输入标记中使用HTML5
模式
属性并不安全,因为IE9和Safari不支持这种做法

最好通过javascript检查快速响应的UI,以阻止大多数糟糕的输入,但您总是应该让PHP后端处理最终验证-确保保留用户的输入,这样他们就不必多次输入信息,只需编辑即可


将AJAX与JavaScript和PHP结合使用,以获得数据和用户体验的最佳结果。

要检查字符串在PHP中是否有数字,可以使用正则表达式:

if (preg_match('/[0-9]+/', $_POST['field_name'])) {
    // add logic if the POST value has numbers in it...
}
如果要将其重新用于其他操作,请将其包装到函数中:

function containsNumbers($string) {
    return preg_match('/[0-9]+/', $string) > 0;
}
使用类似于:

if (containsNumbers($_POST['field_name'])) {
    // logic here
}
不要只依赖前端验证。这就是后端的用途。HTML输入模式和javascript验证可以轻松绕过。最佳实践是通过Javascript检查前端以获得更好的UI响应,但如果用户试图规避规则,则通过PHP重新检查后端

下面是Javascript中的一个检查器:

var checkIsValidName = function(string) {
    // returns false if string contains numbers
    var pattern = /[^0-9]+/;

    // returns false if string contains chars other than A-Z, a-z, space, apostraphe and hyphen
    // also returns false on accented characters, as this checks the ASCII values
    var pattern = /[A-Za-z\s\'-]/;

    return string.match(pattern);
}
用法:

if (checkIsValidName()) {
    // javascript logic here
    alert('Not Valid Name');
}
此正则表达式模式将匹配所有字母、空格、连字符、撇号和标准重音字符(西欧):

您可以看到,这可能会很快变得混乱,如果字符串包含我们不包含的任何非ASCII字母,例如西里尔字母、波兰语和任何亚洲字母,它将拒绝该字符串

因为如果出现这种情况,最好是独占的且不包含正则表达式检查,因为您允许的字符总是多于您不允许的字符。当然,这指的是人们的姓名,而不是密码或电子邮件地址,在这些地址中,您希望使用包含模式(因为您实际可以使用的字符有限制)

注意:虽然有用且看似简单,但在输入标记中使用HTML5
模式
属性并不安全,因为IE9和Safari不支持这种做法

最好通过javascript检查快速响应的UI,以阻止大多数糟糕的输入,但您总是应该让PHP后端处理最终验证-确保保留用户的输入,这样他们就不必多次输入信息,只需编辑即可


将AJAX与JavaScript和PHP结合使用,可以为您的数据和用户体验带来最佳效果。

您可以使用html5代码,这将允许使用空格,如果您想检查至少2个字符,请使用
[a-zA-Z][a-zA-Z]{2,}
或使用
[a-zA-Z][a-zA-Z]{1,}

<input type="text" name="name" pattern="[a-zA-Z][a-zA-Z ]{2,}" required>

这不允许空间

 <input type="text" name="name" pattern="[a-zA-Z]{1,}" required>

更多信息

这是php验证

<?php
$adresdo = "info@takelake.com";
$temat = "Newsletter signup";
$zawartosc = "Imie: " . $_POST['name'] . "\n"
    . "Email: " . $_POST['email'] . "\n"
    . "Selected" . implode($_POST['checkbox'], ",");

// if the url field is empty
if (isset($_POST['url']) && $_POST['url'] == '') {
    // then send the form to your email
    mail('you@yoursite.com', 'Contact Form', print_r($_POST, true));

    if (!$_POST['name'] || !$_POST['email']) {
        header("Location: error.html");
    }
    if (preg_match('~[0-9]~', $_POST['name'])) {
        header("Location: error.html");
        exit();
    }

    $email = $_POST['email'];
    if (mail($adresdo, $temat, $zawartosc, 'From: Subskrybent <' . $email . '>')) {
        header("Location: ok.html");
    }
}

您可以使用html5代码,这将允许空格,如果您想检查至少2个字符,请使用
[a-zA-Z][a-zA-Z]{2,}
或使用
[a-zA-Z][a-zA-Z]{1,}

<input type="text" name="name" pattern="[a-zA-Z][a-zA-Z ]{2,}" required>

这不允许空间

 <input type="text" name="name" pattern="[a-zA-Z]{1,}" required>

更多信息

这是php验证

<?php
$adresdo = "info@takelake.com";
$temat = "Newsletter signup";
$zawartosc = "Imie: " . $_POST['name'] . "\n"
    . "Email: " . $_POST['email'] . "\n"
    . "Selected" . implode($_POST['checkbox'], ",");

// if the url field is empty
if (isset($_POST['url']) && $_POST['url'] == '') {
    // then send the form to your email
    mail('you@yoursite.com', 'Contact Form', print_r($_POST, true));

    if (!$_POST['name'] || !$_POST['email']) {
        header("Location: error.html");
    }
    if (preg_match('~[0-9]~', $_POST['name'])) {
        header("Location: error.html");
        exit();
    }

    $email = $_POST['email'];
    if (mail($adresdo, $temat, $zawartosc, 'From: Subskrybent <' . $email . '>')) {
        header("Location: ok.html");
    }
}

pattern=“[A-Za-z]”它的默认属性是html
pattern=“[A-Za-z]”它的默认属性是html

我的php不是很好,所以如果你能帮我修改代码,我将不胜感激。谢谢你想在哪里验证-用php还是javascript?javascript可能很有用。它可以是纯javascript而不是jquery吗?或者jquery也可以。请注意,我在这里使用的是bootstrap,如果我对php不是很在行的话,那么如果你能帮我修改代码,我将不胜感激。谢谢你想在哪里验证-用php还是javascript?javascript可能很有用。它可以是纯javascript而不是jquery吗?或者jquery也可以。请注意,我在这里使用的是bootstrap,如果有帮助的话,谢谢你。你能看看我的代码并通过添加你的代码来修改它吗?我不擅长php。谢谢你,这几乎奏效了。如果没有问题,它会发送消息,但会显示错误页面。即使邮件已验证并发送。@PiotrCiszewski exit()已添加到邮件中