我是PHP的新手,我遇到了很大的问题,让我感到压力,我用数据库中的SHA1加密我的列密码。在我的栏中,密码有很多密码。
但不是所有密码都可以登录我的应用程序,例如我有密码
当我分析那是密码时,我认为问题出在诸如“'之类的符号上,而&无法在我的代码中检测到。
因此,sha1($ pass)== $ passwd,不执行。我认为
或任何人有任何想法吗?
这是我的代码。
if (isset($_POST['user']) && isset($_POST['pass'])) {
$user = val_input(mysqli_real_escape_string($conn, filter_input(INPUT_POST,'user',FILTER_SANITIZE_EMAIL)));//($_POST['user'])));
$pass = val_input(mysqli_real_escape_string($conn, filter_input(INPUT_POST,'pass', FILTER_SANITIZE_STRING)));// val_input($_POST['pass'])));
$userpas = $conn->query("SELECT * FROM userid WHERE email = '".$user."' && password = '".sha1($pass)."' ");
//$cekuser = mysqli_num_rows($conn, $userpas);
$login = $userpas->fetch_object();
if(isset($login->email) && $login->email == $user) {
$idusers = $login->username;
$usernm = $login->email;
$passwd = $login->password;
$groups = $login->kriteria;
$verikasicode = $login->verifikasicode;
$verifikasistatus = $login->verifikasistatus;
if (($user == $usernm) && (sha1($pass) == $passwd) &&
($verikasicode == 'verified') && ($verifikasistatus == '1')) {
$msg('Success Login')
exit;
} else {
$msg = 'Failed Login';
}
} else {
$msg = 'Failed Login';
}
[php中有一些方法可以忽略该问题或解决该问题,但是我使用filter_input()方法中的更多方法来忽略此问题。有一个示例,您可以在代码中使用]
$passwd = filter_input(INPUT_POST, 'password', FILTER_SANITIZE_SPECIAL_CHARS);
[请记住,当您要将数据存储在数据库中并将其用于所有输入时,必须使用此方法,但是在您的情况下,您可以像这样使用addslashes():
$passwd = addslashes($login->password);
在第一次隔离中,您的数据变得安全了。最好先过滤该字符,然后再将其存储在数据库中