2012-12-09 103 views
1

這是我第一次使用這個地方,所以請原諒我,如果我在這裏完全愚蠢。交叉引用MySQL條目

基本上,我編制了一個系統,用戶A簽署一個機構直到該服務,接收該機構成員的驗證碼,然後用戶B,該機構的一部分,輸入唯一的驗證碼註冊。

註冊用戶A的代碼工作 - 它分配一個唯一的自動遞增ID(sid或uid在數據庫中)和一個隨機驗證碼(驗證) - 我對它滿意(除了安全問題,但我需要學習如何處理這些)。

我的問題是,每當有人試圖註冊爲用戶B並使用驗證碼時,系統會拒絕它,並且說驗證碼與該特定sid下的驗證碼不匹配。我有一種感覺,這是與我用來查找驗證ID的代碼有關,但我不知道我要出錯的地方。

當前的代碼:

$getsid = mysql_query(
"SELECT * 
FROM schools 
WHERE uid='$sid'"); 

while($row = mysql_fetch_array($getsid)) { 
    $origver = $row['verification']; 
    } 

if ($pwd != $conf) { 
     header('Location: register.php?error=1'); 
    } 
elseif ($ver != $origver) { 
    header('Location: register.php?error=2'); 
    } 
else { 

只是爲了進一步的信息,$ver是通過用戶B,這是爲了匹配輸入$origver驗證號碼。

+1

**注意!** PHP的未來版本是*自嘲和刪除*的功能'mysql_'家庭。現在將是[切換到PDO](http://php.net/book.pdo)或[mysqli](http://php.net/book.mysqli)的好時機。 – Charles

+0

你確定只有一個值從查詢中返回嗎?您的while循環是否有可能繼續超過您認爲它以不同的值結束的地方?當你有正確的價值時,爲什麼不分手? – ethrbunny

+0

...或爲SQL查詢添加一個「LIMIT」子句。 – feeela

回答

0

看來你必須添加一些調試語句,爲了看這是怎麼回事

var_dump($sid); 
$getsid = mysql_query(
"SELECT * 
FROM schools 
WHERE uid='$sid'"); 

while($row = mysql_fetch_array($getsid)) { 
    var_dump($row); 
    $origver = $row['verification']; 
} 

var_dump($pwd, $conf); 
if ($pwd != $conf) { 
     header('Location: register.php?error=1');