PHP 验证文本区域输入以在电子邮件中发送
我正在尝试创建一个 PHP 页面,供用户以 HTML 格式向其他用户发送电子邮件。 在我的页面(email.php)上有一个文本区域供用户输入消息。
由于我从我的服务器发送电子邮件,我不希望用户编写恶意代码/消息内容(html、链接、php、脏话等),这会导致我的服务器电子邮件 IP 被作为垃圾邮件禁止。
我知道我可以使用 str_replace() htmlentities() strip_tags() 等函数进行验证
如何阻止用户在文本区域中输入标签、链接等,以便电子邮件在发送时保持干净。是否有一些功能可以过滤整个消息字符串(如果它与电子邮件正文格式匹配)或将消息字符串转换为纯文本的方法,以便任何恶意链接/标签只会以 href='/link' 的形式向用户显示> 恶意链接不是“恶意链接”,并且不是运行 html 标签,它们只是显示为标签本身?
例如,像gumtree一样,当您发送电子邮件时,您会收到带有文本区域的表格作为消息,
感谢您的任何建议
I am trying to create a PHP page for users to send emails to other users in HTML.
On my page (email.php) there is a textarea for user to input their message.
Since I send the email from my server I don't want the user to write malicious code/message content (html, links, php, bad words etc) that will result in my servers email IP getting banned as spam.
I know I can validate by using functions like str_replace() htmlentities() strip_tags() etc
How can I stop the user from entering tags, links etc in textarea so the email is clean when sent. Is there some function to just filter the whole message string if it matches an email body format or a way to convert the message string to just clear text so any malicious links/tags will just show to the user as a href='/link'>malicious link not 'malicous link' and instead of html tags running they just show as the tag itself?
Like gumtree for instance when you send email you get form with textarea for message
thanks for any suggestions
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
你能澄清一下吗?
根据您的描述,
strip_tags()
然后htmlentities()
似乎就足够了,除非我误解你在问什么。这两个函数都不是用于验证,而是用于过滤。strip_tags()
删除 PHP 和 HTML 标签,htmlentities()
将确保适用的字符转换为其 HTML 实体等效项。Could you clarify a bit?
From what you've described,
strip_tags()
thenhtmlentities()
seems sufficient, unless I misunderstand what you are asking. Both functions are not for validation, but filtering.strip_tags()
removes PHP and HTML tags, andhtmlentities()
will ensure applicable characters are converted to their HTML entity equivalents.我推荐使用白名单方法的第三方库,例如 HTML Purifier。
I'd recommend a third-party library like HTML Purifier that uses a white-list approach.
你无法阻止用户插入 html 标签,即使使用 javascript 也是如此。由于几乎所有浏览器都有开发工具,并且任何网站的任何 html 元素都可以在页面加载后进行更改。
您可以仅针对眼睛视图开发 javascript 验证,但 php 验证是必须的,因为您无法限制用户。
甚至标头也可以修改......所以你需要那些 php 过滤器,正如你上面提到的。
You cannot stop users to insert html tags, not even with javascript. Since almost all browsers have development tools and any html element from any website can be altered after the page is loaded.
You can develop an javascript validation just for eye view, but php validation is a MUST since you cannot limit an user.
Even headers can be modified ... so you need those php filters, as you mentioned above.