2012-06-28 33 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

你有什麼代碼可以顯示嗎? –

+0

你在哪種數據庫中存儲這些信息?它的格式是接受西里爾文嗎? – TNC

+0

我編輯了我的代碼,我使用的數據庫接受西里爾文字符,我的意思是我能夠打印西里爾文字符,但是在sha1 – Albana

回答

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時(得到不同的結果);在密碼哈希中。如果你已經哈希:編碼密碼,只是在你散列它之前逃避密碼。

+0

嘿謝謝,但是,你是什麼意思,使用PHP的sha1功能? – Albana

+0

秒我會寫驗證碼。 – Robinjoeh

+0

是的,謝謝! – Albana