0

キリル文字を使用してログインシステムにユーザー名とパスワードを挿入する際に問題が発生しました。

パスワードはSHA1としてデコードされます。キリル文字でユーザーを作成すると、機能しません。

何か特別なものを挿入する必要があるかどうか教えていただけますか?

コード:

<?php
define(DOC_ROOT,dirname(__FILE__)); // To properly get the config.php file
$username = $_POST['username']; //Set UserName
$password = $_POST['password']; //Set Password
$msg ='';
if(isset($username, $password)) {
ob_start();
include(DOC_ROOT.'/config.php'); //Initiate the MySQL connection
// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($username);
$mypassword = stripslashes($password);
$myusername = mysqli_real_escape_string($dbC, $myusername);
$mypassword = mysqli_real_escape_string($dbC, $mypassword);
$sql="SELECT * FROM login_subadmin WHERE user_name='$myusername' and user_pass=SHA1('$mypassword')";
$result=mysqli_query($dbC, $sql);
// Mysql_num_row is counting table row
$count=mysqli_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){
// Register $myusername, $mypassword and redirect to file "admin.php"
session_register("myusername");
session_register("mypassword");

header("location:index.php");
}
else {
$msg = "Wrong Username or Password. Please retry";
header("location:login.php?msg=$msg");
}
ob_end_flush();
}
else {
header("location:login.php?msg=Please enter some username and password");
}
?>

ありがとう!

4

1 に答える 1

0

ページをUTF-8として処理するように、データベースとコード+ヘッダーを設定してください。ページ全体で同じ文字セットである必要があります。また、SHA1にPHPのハッシュ関数を使用することもできます。

コード例:

<?php
$myUsername=mysqli_real_escape_string($_POST['username']);
$password=$_POST['password'];
$msg="";

if(isset($username, $password))
{
    ob_start();
    include(DOC_ROOT.'/config.php'); //Initiate the MySQL connection

    $password=sha1($password);
    $result=mysqli_query("SELECT * FROM `login_subadmin` WHERE user_name='$myUsername' AND `user_pass`='$password'", $sql);

    // Mysql_num_row is counting table row
    $count=mysqli_num_rows($result);
}
?>

mysqli_real_escape_string();を使用すると、ハッシュが異なる結果を得る可能性があることに注意してください。パスワードハッシュで。すでにパスワードをハッシュしている場合は、ハッシュする前にパスワードをエスケープしてください。

于 2012-06-28T19:10:36.073 に答える