gpt4 book ai didi

PHP:如果条件则重定向1否则重定向2

转载 作者:行者123 更新时间:2023-11-29 13:04:41 24 4
gpt4 key购买 nike

我试图在这里进行一个非常简单的检查。我想从我的数据库中选择一条代表用户名和密码的记录。现在的问题是 if 开始的地方。无论我是否输入数据库中存在的表单凭据,我仍然不会被重定向。除了使用mysqli_num_fields($result)之外,我还尝试使用mysqli_num_rows($result),但仍然不起作用。这开始让我抓狂了。

我还尝试了 $result 的 var_dump 并得到了这个:

object(mysqli_result)#2 (5) { ["current_field"]=> int(0) ["field_count"]=> int(1) ["lengths"]=> NULL ["num_rows"]=> int(0) ["type"]=> int(0) }

我不知道如何解释。

<?php
$con=mysqli_connect("localhost","root","XXXXX","test");
$pass = $_POST['pass'];
$uid = $_POST['uid'];
$result = mysqli_query($con, "SELECT uid FROM test.login WHERE uid = '$uid' AND pass = '$pass'");
if(mysqli_num_fields($result) == 0) { header('Location: index.html')} else { header('form.html')}


mysqli_close($con);
?>

提前致谢。这可能是一个相当愚蠢的问题,我对此表示歉意,但请理解我对所有 LAMP 都很陌生。

最佳答案

您应该发送正确的 header 。一些格式显示了 if- 和 else-branch 之间的区别:

if(mysqli_num_fields($result) == 0) { 
header('Location: index.html')
} else {
header('form.html')
}

你应该使用

if(mysqli_num_fields($result) == 0) { 
header('Location: index.html');
} else {
header('Location: form.html');
}

相反。

正如 @u_mulder 所说,PHP-Docu 没有提到 mysqli_num_fields() 这样的函数/方法。您的代码容易受到 SQL 注入(inject),您应该使用 mysqli_real_escape_string() 正确转义用户输入。 。更好的是:使用准备好的语句。成功登录应仅取决于结果中的一个匹配行。

旁注:存储明文密码是一个非常糟糕的主意。

关于PHP:如果条件则重定向1否则重定向2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22886398/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com