我正在编写一个邮件表单,以允许用户从联系 PHP 页面发送电子邮件。
我使用正则表达式来验证电子邮件地址并对不同的字段进行大量检查。
如果用户犯了“错误”,表单将跳转到第二页,回显所有字段(那些可以的和不可以的)并在问题所在的地方以红色显示(“您忘记填写验证码” ,“你忘了填写你的名字”,等等......)。由于<input type='text'>
' 值中的 $_SESSION 完成了字段的回显
一切都很顺利,直到我想到输入一个包含单引号的电子邮件地址(因为它是有效的)
问题 1: 我们的老朋友jim_o'brien在回显时变成了 jim_o 。
问题 2: 由于我想将电子邮件的发送限制为每 24 小时发送 1 封,因此我会在数据库中检查 Ip 地址或...电子邮件地址在不到 24 小时前已经被记录,这里 => SQL SELECT 失败
问题:
- 这两种现象的原因是什么?
- 是否不可能接受电子邮件中的单引号并同时进行我想要的支票?
- 附带问题:在 XSS 或 SQL 注入中有用的字符是什么,同时在电子邮件地址中被禁止?
非常感谢。