如何验证名称字段以避免数字
How to validate name field to avoid numbers
如何使用 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();
?>
要检查字符串是否包含 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');
}
此正则表达式模式将匹配所有字母、空格、连字符、撇号和标准重音字符(西欧):
[A-Za-z\s\'-ßàáâãäåæçèéêëìíîïðñòóôõöøùúûüý]
你看这很快就会变得混乱,如果字符串包含我们不包括的任何非 ASCII 字母,例如西里尔字母、波兰语和任何亚洲字母字符,它将拒绝该字符串。
因为如果这样,最好是 exclusive 而不是 inclusive 用正则表达式检查,因为总会有更多的字符你将允许而不是你不允许的。当然,这指的是人们的姓名,而不是密码或电子邮件地址,您要在其中使用包含模式(因为您实际可以使用的字符有限制)。
注意: 虽然有用且看似简单,但在输入标签中使用 HTML5 pattern
属性并不安全,因为这是不受支持的在 IE9 和 Safari 中。
最好通过 javascript 检查快速响应 UI,而不是阻止大多数错误的输入,但你 总是 应该让 PHP 后端处理最终验证 - 确保保留用户的输入,因此他们不必多次输入信息,保存以供编辑。
将 AJAX 与 JavaScript 和 PHP 结合使用以获得数据和用户体验的最佳结果。
你可以为此使用 html5 代码,这将允许 space,如果你想检查至少 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>
这不允许 space
<input type="text" name="name" pattern="[a-zA-Z]{1,}" required>
了解更多信息
https://www.w3schools.com/tags/att_input_pattern.asp
这是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<input class="form-control" id="name" placeholder="NAME" type="text" pattern="^\D*$" name="name" title="Number Not Allowed">
如何使用 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();
?>
要检查字符串是否包含 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');
}
此正则表达式模式将匹配所有字母、空格、连字符、撇号和标准重音字符(西欧):
[A-Za-z\s\'-ßàáâãäåæçèéêëìíîïðñòóôõöøùúûüý]
你看这很快就会变得混乱,如果字符串包含我们不包括的任何非 ASCII 字母,例如西里尔字母、波兰语和任何亚洲字母字符,它将拒绝该字符串。
因为如果这样,最好是 exclusive 而不是 inclusive 用正则表达式检查,因为总会有更多的字符你将允许而不是你不允许的。当然,这指的是人们的姓名,而不是密码或电子邮件地址,您要在其中使用包含模式(因为您实际可以使用的字符有限制)。
注意: 虽然有用且看似简单,但在输入标签中使用 HTML5 pattern
属性并不安全,因为这是不受支持的在 IE9 和 Safari 中。
最好通过 javascript 检查快速响应 UI,而不是阻止大多数错误的输入,但你 总是 应该让 PHP 后端处理最终验证 - 确保保留用户的输入,因此他们不必多次输入信息,保存以供编辑。
将 AJAX 与 JavaScript 和 PHP 结合使用以获得数据和用户体验的最佳结果。
你可以为此使用 html5 代码,这将允许 space,如果你想检查至少 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>
这不允许 space
<input type="text" name="name" pattern="[a-zA-Z]{1,}" required>
了解更多信息
https://www.w3schools.com/tags/att_input_pattern.asp
这是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<input class="form-control" id="name" placeholder="NAME" type="text" pattern="^\D*$" name="name" title="Number Not Allowed">