Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 电子邮件地址中的单引号+在$\u会话中回显它+SQL选择_Php_Email_Quote - Fatal编程技术网

Php 电子邮件地址中的单引号+在$\u会话中回显它+SQL选择

Php 电子邮件地址中的单引号+在$\u会话中回显它+SQL选择,php,email,quote,Php,Email,Quote,我正在编写一个邮件表单,以便允许用户从联系人PHP页面发送电子邮件 我使用正则表达式验证电子邮件地址,并对不同字段执行大量检查 如果用户犯了一个“错误”,表单将被转移到第二页,回显所有字段,这些字段是正常的和不正常的,并显示为红色,问题是您忘记填写验证码,您忘记填写您的姓名,等等。。。。。字段的回显是通过$\u会话在的值中完成的 一切都很顺利,直到我想到键入一个电子邮件地址,其中只包含一个有效的报价 问题1: 我们的老朋友jim_o'brien成为jim_o时,它的回声 问题2: 由于我想限制每

我正在编写一个邮件表单,以便允许用户从联系人PHP页面发送电子邮件

我使用正则表达式验证电子邮件地址,并对不同字段执行大量检查

如果用户犯了一个“错误”,表单将被转移到第二页,回显所有字段,这些字段是正常的和不正常的,并显示为红色,问题是您忘记填写验证码,您忘记填写您的姓名,等等。。。。。字段的回显是通过$\u会话在的值中完成的

一切都很顺利,直到我想到键入一个电子邮件地址,其中只包含一个有效的报价

问题1: 我们的老朋友jim_o'brien成为jim_o时,它的回声

问题2: 由于我想限制每24小时发送一封电子邮件,我在数据库中检查Ip地址或。。。电子邮件地址已在不到24小时前记录,此处=>SQL选择失败

问题:

这两种现象的原因是什么? 是否不可能接受电子邮件中的单一报价,同时进行我想要的检查? 附带问题:在XSS或SQL注入中有用的、同时在电子邮件地址中被禁止的字符是什么? 非常感谢。

问题1:
您应该将单引号转换为html实体。将单个报价替换为‘。但最后一个字符和分号之间没有空格。

问题1。我假定您正在将地址插入元素的值标记中。所以它变得很棒!我刚刚做了一些测试,它很好地解决了问题1和问题2。似乎单引号也在终止查询。我不使用预先准备好的语句,这就是为什么我试图设计自己的过滤器来保护它。谢谢!你好,我只是想确定一下。。。我做了以下操作:$query_write=INSERT-INTO-ipmail-VALUES'.$ip',0',.mysql_-real_-escape_-string$_-POST['sender_-email'.],'.$now'.$datetime_-sto_-dom.'.$_-POST['sender_-name'.];。吉姆欧brien@thing.com在数据库中显示为未受保护,但我认为转义是不可见的,对吗?另一方面,是否有必要在更新查询中使用htmlentities:$query\u upda=update ipmail SET date\u long='.$now',date\u time='.$datetime\u sto\dom.'WHERE mail='.HTMLenties$\u POST['sender\u email'],ENT\u QUOTES;感谢转义只是INSERT语句语法的一部分,以防止引号被视为字符串的结尾;它实际上并没有被放入数据库。替换到网页时应使用htmlentities,替换到SQL查询时应使用mysql\u real\u escape\u string。
echo "<input type='text' value='".htmlentities($_SESSION['email'], ENT_QUOTES)."'/>";