PHP验证文本区域输入以发送电子邮件


PHP validate textarea input to send in an email

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

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

我知道我可以通过使用str_replace() htmlentities() strip_tags()等函数来验证

如何阻止用户在文本区输入标签,链接等,以便电子邮件发送时干净。是否有一些功能,只是过滤整个消息字符串,如果它匹配电子邮件正文格式或一种方式将消息字符串转换为只是明文,所以任何恶意链接/标签将只是显示给用户作为一个href='/link'>恶意链接不是'恶意链接',而不是html标签运行,他们只是显示为标签本身?

就像gumtree一样当你发送电子邮件时你会得到一个带有textarea的表单

谢谢你的建议

你能解释一下吗?

从你所描述的,strip_tags()然后htmlentities()似乎是足够的,除非我误解了你的问题。这两个函数都不是用于验证,而是用于过滤。

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

我建议使用第三方库,如HTML净化器,使用白名单方法。

你不能阻止用户插入html标签,即使是javascript。因为几乎所有的浏览器都有开发工具,任何网站的任何html元素都可以在页面加载后修改。

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

甚至头文件也可以修改…因此,您需要这些PHP过滤器,正如您上面提到的。