2013-07-18 96 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