如何防止用户在输入框中键入特殊字符由PHP而不是jQuery

How to prevent user for type special charecter in input box by PHP not by jQuery?

本文关键字:PHP 特殊字符 jQuery 用户 何防止 输入      更新时间:2023-09-26

我有一个带有 3 个输入框的表单,如下所示:

echo '<form action="" name="frm_chg_pass" method="post">';
echo '<tr ><td class="td1">Dear user</td></tr>';
echo '<tr ><td class="td1"><p>'.$prs_name."  ".$prs_family.'</td></tr>';
echo '<tr><td class="td1">you will change your pass word please be careful for keeping it  </td></tr>';
echo '<tr><td class="td1">you dont allow for type these charecter: & > < / "'."'".' ; : )= ( ] [ # } { ' .</p></td></tr>';
echo '<tr><td class="td1"><input type="text" id="id_pass_old" name="pass_old" onselectstart="return false" onpaste="return false;" onCopy="return false" onCut="return false" onDrag="return false" onDrop="return false" required="required" autocomplete="off"     /></td><td class="td1"><p>Old Password</p></td>';
echo '<tr><td class="td1"><input type="password" id="id_pass_new" name="pass_new" onselectstart="return false" onpaste="return false;" onCopy="return false" onCut="return false" onDrag="return false" onDrop="return false" required="required" autocomplete="off" /></td><td class="td1"><p>New Password</p></td>';
echo '<tr><td class="td1"><input type="password" id="id_pass_conf" name="pass_conf" onselectstart="return false" onpaste="return false;" onCopy="return false" onCut="return false" onDrag="return false" onDrop="return false" required="required"  autocomplete="off"/></td><td class="td1"><p>Confirm new password</p></td>';
echo '<tr><td class="td1"><input type="submit" name="btn_change_pass" method="post" value="RegisterChang"/></td></tr>';
echo '</form>';

如您所见,我不希望用户在输入框中插入& > < / "' ; : ) = ( ] [ # } { '并且不使用 JavaScript 进行检查。如何防止通过 PHP 键入这些内容?

您可以在表单的操作中进行服务器端验证。它应该是这样的:

if (isset($_POST['submit'])) {
    if (!ctype_alnum($_POST['INPUTNAME'])) {
        $error .= 'Input data should be alpha numeric characters only.';
    }
}

使用mysqli_real_escape_string,您可以在 http://php.net/manual/en/mysqli.real-escape-string.php 找到有关其使用情况的信息。它直接内置在 MySQL 扩展中,专门设计用于在将查询传递到数据库服务器之前从查询字符串中转义危险字符。理想的解决方案是使用 Escape 特殊字符来处理 PHP 逻辑中的表单数据,并使用 mysqli_real_escape_string 在将表单数据传递到数据库服务器之前处理查询字符串中的表单数据。至于转义数据作为密码传递给MySQL的问题,只要您在所有数据库过程中使用转义功能,特别是保存密码以及验证密码,那么即使用户在密码中使用特殊字符,密码也会匹配,唯一的区别是,虽然用户可以输入哈希或与号作为其密码的一部分,但数据库保存密码时将使用安全转义字符串,并且每次用户键入密码并根据数据库进行检查时,只要用户提供的字符串以相同的方式转义,它就会匹配。