2012-06-28 2 views
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"); 
} 
?> 

감사합니다!

+0

표시 할'code'가 있습니까? –

+0

이 정보를 저장하는 데이터베이스의 종류는 무엇입니까? 그것은 키릴 문자를 받아들이도록 포맷되어 있습니까? – TNC

+0

내가 사용하는 데이터베이스에서 키릴 문자를 사용할 수 있지만 키릴 문자는 인쇄 할 수 있지만 sha1 이후 데이터베이스의 암호 필드에 이상한 문자가 들어간다. – Albana

답변

0

데이터베이스와 코드 + 헤더를 설정하여 페이지를 UTF-8로 처리해야합니다. 페이지 전체에 동일한 문자 집합이어야합니다. PHP의 SHA1 해시 함수를 사용할 수도 있습니다.

예제 코드 :

<?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를 사용할 때 해시) (서로 다른 결과를 얻을 수 있음을 기억하십시오; 암호 해시에. 해시 된 암호를 해시하기 전에 해시하기 전에 암호를 그냥 이스케이프하십시오.

+0

안녕하세요, 고마워요.하지만, sha1에 PHP의 기능을 사용한다는 것은 무슨 뜻입니까? – Albana

+0

초 나는 exampel 코드를 쓸 것입니다. – Robinjoeh

+0

예. 감사합니다! – Albana

관련 문제