【问题标题】:PHP validate textarea input to send in an emailPHP验证文本区域输入以发送电子邮件
【发布时间】:2011-07-17 18:43:15
【问题描述】:

我正在尝试创建一个 PHP 页面,供用户使用 HTML 向其他用户发送电子邮件。 在我的页面(email.php)上有一个文本区域供用户输入他们的消息。

由于我从我的服务器发送电子邮件,我不希望用户编写恶意代码/消息内容(html、链接、php、坏词等),这将导致我的服务器电子邮件 IP 被禁止作为垃圾邮件。

我知道我可以使用 str_replace() htmlentities() strip_tags() 等函数进行验证

如何阻止用户在 textarea 中输入标签、链接等,以便电子邮件在发送时是干净的。是否有一些功能可以过滤整个消息字符串(如果它与电子邮件正文格式匹配)或将消息字符串转换为纯文本的方法,因此任何恶意链接/标签都会以 href='/link' 的形式显示给用户>恶意链接不是“恶意链接”,而不是运行 html 标签,它们只是显示为标签本身?

例如像 gumtree 一样,当您发送电子邮件时,您会收到带有 textarea 的表单以获取消息

感谢任何建议

【问题讨论】:

  • 有些不清楚:消息是以 HTML 格式发送的吗?
  • 是的以 html 格式发送,但 php 用于过滤/验证

标签: php textarea validation


【解决方案1】:

你能澄清一下吗?

根据您的描述,strip_tags() 然后htmlentities() 似乎就足够了,除非我误解了您的要求。这两个函数都不是用于验证,而是用于过滤。

strip_tags() 删除 PHP 和 HTML 标记,htmlentities() 将确保将适用的字符转换为其等效的 HTML 实体。

【讨论】:

  • 所以当用户在 hotmail/gmail 等中收到电子邮件时,正文消息将是干净的,即如果用户输入了链接而不是可点击/不会运行,它将显示为 href='' 标签?
  • @webjawns:我已经编辑了您的帖子以包含指向这两个函数的 PHP 手册的链接。希望你不介意:-)
  • 值得注意的是,strip_tags() 无法正确处理格式错误的 HTML。
【解决方案2】:

我会推荐使用白名单方法的第三方库,例如 HTML Purifier

【讨论】:

    【解决方案3】:

    您无法阻止用户插入 html 标签,即使使用 javascript 也不行。由于几乎所有浏览器都有开发工具,并且任何网站的任何 html 元素都可以在页面加载后进行更改。

    您可以开发仅用于眼睛视图的 javascript 验证,但 php 验证是必须的,因为您不能限制用户。

    甚至可以修改标题......所以你需要那些 php 过滤器,如上所述。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-26
      • 2019-01-13
      • 2011-09-16
      • 1970-01-01
      • 1970-01-01
      • 2013-09-19
      • 2015-03-17
      相关资源
      最近更新 更多