gpt4 book ai didi

PHP登录Mysqli

转载 作者:太空宇宙 更新时间:2023-11-04 13:38:51 26 4
gpt4 key购买 nike

我是 php/mysqli 的新手 我在验证用户时遇到问题,我不确定如何获取行并验证数据,然后将用户重定向到新页面或显示错误(我只知道我需要使用 _SESSION)。 基本上我在使用 fetch() 例程时遇到了问题,正确的编码方式是什么?


  <?php 
session_start();
$username = trim($_POST['username']);
$password = trim($_POST['password']);
/* Create a new mysqli object with database connection parameters */
$mysqli = mysqli_connect('localhost', 'root', '', 'draftdb');

if(mysqli_connect_errno())
{
echo "Connection Failed: " . mysqli_connect_errno();
exit();
}
/* Create a prepared statement */
if($stmt = $mysqli -> prepare("SELECT Login_ID, Login_PW,
FROM login
WHERE Login_ID=? AND Login_PW =?"))
{

/* Bind parameters
s - string, b - boolean, i - int, etc */
$stmt -> bind_param("ss", $username, $password);

/* Execute it */
$stmt -> execute();

/* Bind results */
$stmt -> bind_result($username, $password);

/* Fetch the value */

if($stmt->fetch() == true)

{
$row =$query -> fetch();
$_SESSION['name'] = $row;
header("Location:/in.php");
exit();
}
else
{
echo 'Invalid Login';
}

/* Close statement */
$stmt -> close();
}

/* Close connection */
$mysqli -> close();
?>

最佳答案

按照这个顺序

  1. 准备查询$stmt->prepare()
  2. 如果使用占位符则绑定(bind)参数 $stmt->bind_param("ss", $username, $password);
  3. 执行
  4. 将结果绑定(bind)到变量$stmt->bind_result($username, $password)
  5. 现在可以使用 $stmt->fetch()
  6. 获取数据了
  7. 关闭准备好的语句$stmt->close

我认为您不清楚 $stmt->bind_result() 已经设置了变量。在您的情况下,您可能只从表中获取 1 行,因此 $stmt->fetch() 就足够了。如果有多行,则需要一个循环来使用数据。

例子:

$a = array();
while ($stmt->fetch()) {
$a = array('username' => $username, 'password' => $password);
}

关于用户和密码匹配:你现在有

$_POST['username'];
$_POST['password'];
$username;
$password;

所以你必须做一个 if 语句来检查 $_POST['username'] == $username && $_POST['password'] == $password。如果这是真的,您可以设置您的登录标志。

要让用户保持登录状态,只需设置一个 $_SESSION 变量。您可以设置 $_SESSION['logged_in'] = true;,如果设置了此变量,您就可以知道用户已经通过身份验证。如果用户想结束他的 session ,只需取消设置变量(并销毁 session )。

还有一件事我注意到:

if($stmt->fetch() == true) { } // equals: if ($stmt->fetch()) { }

关于PHP登录Mysqli,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11910698/

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