我的网站表单被垃圾邮件淹没了。我注意到在"电话"字段中,垃圾邮件机器人总是插入文本而不是数字,所以如果电话字段不包含以下任何内容,我想向阻止电子邮件的php邮件程序添加if语句:
1) 我希望用户能够将字段留空,因此必须接受空字段。
2) 必须包含"数字"或"加号"或"空格"
我该如何用PHP写这篇文章?
感谢提供的任何帮助
编辑:尽管哈哈,检查字段是否包含字母字符会容易得多。我该怎么做?
编辑2:已排序。我使用了"if(ctype_alpha($phone)!==false)"
正则表达式可能是最好的方法,尽管一开始不一定是最容易理解的。但是,如果你不熟悉正则表达式,那么学习它们绝对是一件好事。我最喜欢的介绍是这个网站:http://www.zytrax.com/tech/web/regex.htm这是一个很好的网站,可以交互式地构建regex并查看它是如何实时工作的:http://www.regexr.com/我相信还有很多其他类似的网站,但这是我经常去的两个。
如果你四处寻找正则表达式的解决方案,你会发现无数的可能性和变化。我个人的建议是保持简单。我首先要考虑如何存储电话号码数据。我通常只保留数字,所以我会简化它,首先删除那些"允许"的字符,然后检查剩下的是否只是数字。
$phone = str_replace(Array('+', ' ', '(', ')'), '', $phone);
这将用一个空字符串替换所有加号、空格和括号(即删除它们)。然后,您可以检查字符串是否为数字,如果是存储字符串,则打印/返回错误。
if (!is_numeric($phone))
// stop processing and output an error
首先,您必须使用一些垃圾邮件块,例如:代币、蜜罐、captcha等。
在我的国家/地区,手机或本地电话号码只包含9位数字,没有国家/地区代码+XX。所以我在db中创建了INT(10)字段。提交表单后,删除所有没有数字的内容。
例如:
$phoneNumber = (int) substr( preg_replace( '#[^'d]+#', '', $_POST['phone_numer'] ), 0, 9 );
在许多项目中,所有方法都有效。