2014-09-07 49 views
0

我有一個表單,其中包含兩個字段的用戶名和密碼。我想將用戶輸入的值存儲在名爲堆棧的數組中。爲什麼在下面的PHP代碼修剪,htmlspecialchars和stripslashes不工作?

以下代碼將值存儲在堆棧數組中,並向我顯示具有我輸入的確切值的數組。即使我有斜線或任何html,我的領域的JavaScript它只是將其存儲到數組中。

我可以知道我的錯誤在哪裏,因爲函數check()沒有正確執行。

<?php 
$hostname = "localhost"; 
$username = "root"; 
$password = ""; 
$db = "test"; 
$stack = array(); 
$connect = mysqli_connect($hostname,$username,$password,$db); 
if(!$connect){ 
    die("Couldn't connect to the database"); 
    exit(); 
} 
function check($data){ 
    $data = trim($data); 
    $data = stripslashes($data); 
    $data = htmlspecialchars($data); 
    return $data; 
} 
if(isset($_POST['login'])){ 
    foreach($_POST as $value){ 
     if($value == $_POST['login']){ 
     break; 
     } 
     else{ 
      check($value); 
      array_push($GLOBALS['stack'],$value); 
     } 
    } 
    print_r($stack); 
} 

?> 

回答

1

請檢查註釋行。

<?php 
$hostname = "localhost"; 
$username = "root"; 
$password = ""; 
$db = "test"; 
$stack = array(); 
$connect = mysqli_connect($hostname,$username,$password,$db); 
if(!$connect){ 
    die("Couldn't connect to the database"); 
    exit(); 
} 
function check($data){ 
    $data = trim($data); 
    $data = stripslashes($data); 
    $data = htmlspecialchars($data); 
    return $data; 
} 
if(isset($_POST['login'])){ 
    foreach($_POST as $value){ 
     if($value == $_POST['login']){ 
     break; 
     } 
     else{ 
      $value = check($value); //returned value is not captured 
      array_push($GLOBALS['stack'],$value); 
     } 
    } 
    print_r($stack); 
} 

?> 
+0

可我知道該怎麼做,這樣返回的值與$價值 –

+0

我已經改線已拍攝。請比較我添加評論的那一行。 –

+0

這不起作用。它再次向我顯示斜槓值和所有 –

1

你有兩個選擇。

  • 節省從檢查函數中的變量

    $值=校驗($值)的返回值;

  • 變化功能檢查($數據)功能檢查(& $數據)

相關問題