我有一个客户管理系统,我用php和mysql编程。公司使用它来记录他们的客户详细信息以进行营销和订单。我的表单上有各种字段,其中一个是商业名称。
将字段导入电子邮件发送给客户报价等。字段内容从数据库中提取并存储在各种字符串中。例如,商家名称存储在$name
。
我发现的问题是,如果企业输入了一个商家名称,例如Joe Blogs & Sons
,导入电子邮件系统的内容是Joe Blogs
,那就是&符号被截断后的任何内容,包括&符号。如果他们使用Joe Blogs and Sons
这可以正常工作,当电子邮件发出时会显示Dear, Joe Blogs and Sons
,但如果有人输入&
,则最终会显示为Dear, Joe Blogs
。
我是否正确地说s tr_replace
或preg_replace
这样的方式是采用这种方法还是逃避&
的方法?
答案 0 :(得分:2)
使用htmlentities()
或htmlspecialchars()
对特殊HTML实体进行编码,以便注入HTML上下文。请注意,对于任何其他上下文,这些函数是不够的。例如:
不可强>
<p><?php echo htmlspecialchars($foo); ?></p>
<强>为:强>
<a href="<?php echo htmlspecialchars($bar); ?>">Click me!</a>
答案 1 :(得分:0)
尝试转换&amp;进入&
。
有各种各样的PHP功能。选择适合你的那个
答案 2 :(得分:0)
这取决于“导入电子邮件”的含义。
我想你只需要将&
转换为&
- 最好只是在每个变量周围使用htmlentities(假设它们不包含HTML)需要解析的)作为“字符串清理”过程的一部分。