2011-03-27 128 views
1

我試圖在php上轉義無效字符。同時也嘗試一下名爲ezsql的php類。 這裏是我的代碼:php函數清理通過url傳遞的用戶名和密碼

<?php 

include_once('ez_sql_core.php'); 
include_once('ez_sql_mysql.php'); 

$db = new ezSQL_mysql('root','pword','db','localhost'); 



$uname=$db->escape($_GET['uname']); 
$pword=$db->escape($_GET['pword']); 


$db->query("INSERT INTO users(Uname, Hpword) VALUES('$uname','$pword')"); 

?> 

如何避免產生這樣的URL。而不是弄亂整個查詢。 http://localhost/folder/file.php?uname=uzer的^ & *%#& PWORD = DD'$#$%#的

+0

那麼真正的問題是什麼?因爲它是錯誤的名字和錯誤的密碼,所以什麼也找不到。 – zerkms 2011-03-27 10:48:44

+1

代碼保存到數據庫,但您的問題是關於生成一個URL。 – Jacob 2011-03-27 10:49:05

+4

您不應該通過URL傳遞用戶認證憑證。 – Gumbo 2011-03-27 10:52:45

回答

2

通常情況下,你可以使用mysql_real_escape_string()功能:

$uname=mysql_real_escape_string($_GET['uname']); 
$pword=mysql_real_escape_string($_GET['pword']); 

但由於逃逸是框架的一部分,你使用時,你已經有這個在你的代碼:

$uname=$db->escape($_GET['uname']); 
$pword=$db->escape($_GET['pword']); 

我可以猜到,那些線做的伎倆,所以沒有別的需要。

-2
$uname = preg_replace("#[^a-zA-Z0-9]#", "", $_GET["uname"]); // removes everything non-alphanumeric 

但你需要定義什麼是「無效的」字符。

+2

用戶將很驚訝地發現,他保存的用戶名與他輸入的用戶名不同。 – 2011-03-27 10:53:37

+0

在認證過程中沒有理由檢查這一點。 – zerkms 2011-03-27 10:53:41

+0

你在哪裏看到認證?他應該使用preg_match來檢查用戶名是否符合允許的字符。 – 2011-03-27 11:09:21

相關問題