Php 如何验证名称字段以避免使用数字
如何使用bootstrap或php轻松验证表单上的名称输入?我希望此字段拒绝所有数字0-9。你能帮帮我吗 下面是字段,它是我使用的表单的一部分: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"
<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()已添加到邮件中