php在经过身份验证时回显firstname


php to echo firstname if authenticated

我编写了一个PHP脚本,用于通过电子邮件和密码进行身份验证,因为电子邮件是唯一的。

我想要回显"true"以及回显::fname(名字)。我该怎么写?以下是我的PHP代码。

include "db_config.php";
$email = $_POST['email'];
$password = $_POST['password'];
$sql = "select fname,e_mail,password from user where e_mail = '$email' and pwd = '$password'  ";
$result = mysql_query($sql);
if (mysql_num_rows($result) > 0){
    echo "true";
}
else{
    echo "Login Failed";
}

如果你能给我一些更好的方法来写这个代码,请告诉我。

考虑关于mysql_*和mysql_real_eescape_string的评论,但在得到结果后,您会像这样回应它,它改编自手册:

$result = mysql_query($sql);
if (!$result) {
    echo "Could not successfully run query ($sql) from DB: " . mysql_error();
    exit;
}
if (mysql_num_rows($result) == 0) {
    echo "No rows found, nothing to print so am exiting";
    exit;
}
$row = mysql_fetch_assoc($result); 
echo "true" . $row['fname'];
if (mysql_num_rows($result) > 0)
{
    echo mysql_result($result, 0);
}

--或--

Sankalp或GDP答案中的代码。(mysql_fetch_array)
如果你想显示很多结果,mysql_result是不好的,它只适用于其中的一些结果。


顺便说一句,我想指出你的代码中的一些遗漏:

  • 您应该检查是否每个$_POST$_GET变量都是使用issetempty设置的。

  • 你的代码太不安全了!在查询中使用每个变量之前,应该先对其进行转义。使用mysql_real_escape_string()。我还建议您在进行转义时使用strip_tags()


检查变量是否设置的示例

使用isset()

if(isset($_POST['email'])) $email = $_POST['email'];
if(isset($_POST['password'])) $password = $_POST['password'];

使用empty()

if(!empty($_POST['email'])) $email = $_POST['email'];
if(!empty($_POST['password'])) $password = $_POST['password'];
$row = mysql_fetch_array($result, MYSQL_NUM)
echo $row[0];   //fname
echo $row[1];   //email 

或者,您可以使用MYSQL_ASSOC来获取一个命名数组并以的形式访问值

echo $row['fname'];