2013-07-18 97 views
2

我正在通過一個vid教程創建一個用戶reg &在php和mysql登錄表單。php mysql用戶登錄顯示用戶存在

下面的腳本應該呼應「存在」的login.php中形式,但只是顯示一個空白(表示該用戶不存在,當它和S其實對DB唯一的用戶名)

<?php 
    function user_exists($username) { 
    $username = sanitize($username); 
    $query = mysql_query("SELECT * FROM `users` WHERE `username` = '$username'"); 
    return (mysql_result($query, 0) == 1) ? true : false; 
} 
?> 

的代碼登錄表單部分去如下:

if (user_exists('andy') === true) { 
echo 'exists'; 
} 
die(); 

我缺少一些語法或明顯的東西?這裏是一個鏈接到VID教程,如果它有幫助http://www.youtube.com/watch?v=Til3oVNlho4

+0

什麼是您的操作系統?你的BLANK屏幕 - 它是否有任何消息?也許你沒有打開數據庫連接。您的網頁上是否有其他代碼? – itsols

+2

這一系列的教程包含了很多不好的做法:從使用不推薦使用的函數(如mysql_query)到使用md5進行密碼散列的易受攻擊的概念等等。如果你想做的對,那麼我建議你閱讀一本好書。 – HamZa

+0

如果你在mysql工具中自己運行查詢,而不是用php在web上運行,會發生什麼? – Paul

回答

0

爲什麼不這樣做呢?

<?php 
function user_exists($username) { 
$username = sanitize($username); 
$query = mysql_query("SELECT * FROM `users` WHERE `username` = '$username'"); 
$exists = mysql_num_rows($query) == 1 ? 1 :0; 

return $exists; 
} 
?> 
+0

我看到你在這裏得到什麼,但我認爲這個想法是測試與第二頁上的第二個腳本的數據庫連接和功能.. – user2595470

0

如果你有一個空白的屏幕,它可能是一個想法,添加echo語句,看看發生了什麼。

function user_exists($username) {  echo '|Input Username=$username '; 
    $username = sanitize($username);  echo '|Sanitized=$username '; 
    $query = mysql_query("SELECT * FROM `users` WHERE `username` = '$username'"); 
             echo '|output any mysql_error '.mysql_error(); 
    $numberOfRows = mysql_num_rows($query); echo '|Number of Rows=$numberOfRows '; 
    $hasRows = ($numberOfRows > 0);   echo '|Has rows=$hasRows '; 
    //used explicit parentheses around logic for clarity...and again next line 
    $exists = ($hasRows) ? 1 :0; 
    //or just do this... 
    $exists = $hasRows; 
    return $exists;  
} 
+0

那麼這就是登錄頁面上echo'exists'語句的用途,那就是屏幕空白。 – user2595470

+0

需要返回true,上面是旨在解決它爲什麼沒有。另一個想法是使用==而不是===這是'身份'。 true是native,user_exists()是一個對象。他們可能都==真,但只有真正===真。 – doctorbobapplications

+0

啊,道歉我明白你的意思了,我會試一試!如果這不起作用,我將不得不交換教程,似乎沒有辦法! – user2595470