防止从 $_GET 方法中显示 HTML

Prevent HTML to be displayed from $_GET method

我目前正在研究用户管理系统。 我在其他站点中有注册和登录页面,它们都使用 $_GET 函数。经过一些试验后,我注意到当您确切知道自己在做什么时,可以从 GET 参数打印 HTML 代码。可能有一种方法可以通过在 img 标签中使用 onerror 来利用它,例如
如何防止这种情况发生?

URL: users.php?s=login&mail=">%20<img%20src=%27../images/notification_bell.png%27%20width=%2725px%27>
显示内容: 我的代码:

print ' <form action="' .$url. '" method="post">
                <input type="hidden" name="a" value="login"/>
    
                <b><label for="mail">E-Mail:</label></b>
                <input type="email" id="mail" name="mail" maxlength="50" value="' .$mail. '" required><br><br>

如何防止这种情况发生?

使用htmlspecialchars将user-defined个字符转换成web-safe个代码。 https://www.php.net/htmlspecialchars

另外,也许您可​​以使用 filter_var 来验证电子邮件,如果它无效则简单地取消设置。 https://www.php.net/filter_var