2013-07-17 84 views
0

我使用下面的代碼來清除從窗體返回的所有變量。我最近從mysql切換到mysqli,但結果是下面的函數現在將我的變量剝離回空白。mysqli_real_escape_string和stripslashes返回空白變量

//Start session 
session_start(); 

//Include database connection details 
require_once('config.php'); 

//Array to store validation errors 
$errmsg_arr = array(); 

//Validation error flag 
$errflag = false; 

//Connect to mysql server 
$link = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD); 
if(!$link) { 
    die('Failed to connect to server: ' . mysqli_error()); 
} 

//Select database 
$db = mysqli_select_db($link,DB_DATABASE); 
if(!$db) { 
    die("Unable to select database"); 
} 

//Function to sanitize values received from the form. Prevents SQL injection 
function clean($str) { 
    $str = @trim($str); 
    if(get_magic_quotes_gpc()) { 
     $str = stripslashes($str); 
    } 
    return mysqli_real_escape_string($link,$str); 
} 

//Sanitize the POST values 
$login = clean($_POST['login']); 
$password = clean($_POST['password']); 

//Input Validations 
if($login == '') { 
    $errmsg_arr[] = 'Login ID missing'; 
    $errflag = true; 
} 
if($password == '') { 
    $errmsg_arr[] = 'Password missing'; 
    $errflag = true; 
} 

//If there are input validations, redirect back to the login form 
if($errflag) { 
    $_SESSION['ERRMSG_ARR'] = $errmsg_arr; 
    session_write_close(); 
    header("location: login-form.php"); 
    exit(); 
} 

所以每次我在一個有效的用戶名和密碼輸入時將其重定向我回到登錄頁面說,這兩個領域實際上是空白。當我刪除POST值的'clean'函數時,它又開始工作。

我是mysqli的新手,但是我看不出我做錯了什麼。誰能幫忙?

感謝

+0

您應該檢查[mysqli_connect_errno(http://www.php.net/manual/en/mysqli.connect-errno.php)。 –

+0

同樣的問題仍然存在。一旦我擺脫乾淨的功能一切正常,所以數據庫連接是正確的(雖然我仍然會保持這種變化,因爲它是有幫助的,但它不能解決我的問題) – Chris

回答

0
  1. 你不應該表現出你的數據庫信息。

  2. 儘量做到:

    mysql_real_escape_string 
    
+0

如果我切換回使用MySQL,那麼我必須將頁面上的所有其他mysqli示例切換回mysql。人們幾個月來一直告訴我停止使用mysql,因爲它已被棄用。 – Chris