我正在努力将我的登录系统转换为准备好的语句。我已经设法转换了我的整个 Crud 系统,但只是对最后一部分感到困惑。任何帮助将非常感激。
这是没有准备好的语句的原始登录:
if(isset($_POST['submit'])) {
$user = mysqli_real_escape_string($con, $_POST['username']);
$password = mysqli_real_escape_string($con, $_POST['password']);
if($user == "" || $password == "") {
echo "Either username or password field is empty.";
echo "<br/>";
echo "<a href='login.php'>Go back</a>";
} else {
$result = mysqli_query($con, "SELECT * FROM login WHERE username='$user' AND password=md5('$password')")
or die("Could not execute the select query.");
$row = mysqli_fetch_assoc($result);
if(is_array($row) && !empty($row)) {
$validuser = $row['username'];
$_SESSION['valid'] = $validuser;
$_SESSION['name'] = $row['name'];
$_SESSION['id'] = $row['id'];
} else {
echo "Invalid username or password.";
echo "<br/>";
echo "<a href='login.php'>Go back</a>";
}
if(isset($_SESSION['valid'])) {
header('Location: index.php');
}
}
} else {
?>
<div class="row">
<div class="col-md-6 col-md-offset-3">
<div class="box">
<h3>Login</h3>
<form name="form1" action="" method="POST" enctype="multipart/form-data">
<input type="text" name="username" id="username" placeholder="Username" class="form-control"><br>
<input type="password" name="password" id="password" placeholder="Password" class="form-control"><br>
<button type="submit" name="submit" class="btn btn-success button">Login</button>
</form>
</div>
</div>
<?php
}
?>
</body>
</html>
然后是我的 index.php 页面
<?php
if(isset($_SESSION['valid'])) {
include("connect.php");
$result = mysqli_query($con, "SELECT * FROM login");
?>
Welcome <?php echo $_SESSION['name'] ?> ! <a href='logout.php'>Logout</a><br/>
<br/>
<a href='view.php'><?php echo ("<div class='alert alert-success'>Click here to View and Add Products!</div>")?></a>
<a href='viewuser.php'><?php echo ("<div class='alert alert-success'>Click here to Add Users!</div>")?></a>
<br/><br/>
<?php
} else {
echo ("<div class='alert alert-danger'>You must be logged in to access CMS site.</div>");
echo "<a href='login.php' class='btn btn-primary'>Login</a>";
}
?>
这是我到目前为止所做的:
if(isset($_POST['submit'])) {
$user = $_POST['username'];
$password = md5(['password']);
$sql = $con->prepare("SELECT * FROM login WHERE username = ? AND password = ?");
$sql->bind_param("ss", $user, $password);
$sql->execute();
$result = $sql->get_result();
while($row = $result->fetch_assoc()) {
$row = mysqli_fetch_assoc($result);
if(is_array($row) && !empty($row)) {
$validuser = $row['username'];
$_SESSION['valid'] = $validuser;
$_SESSION['name'] = $row['name'];
$_SESSION['id'] = $row['id'];
} else {
echo "Invalid username or password.";
echo "<br/>";
echo "<a href='login.php'>Go back</a>";
}
if(isset($_SESSION['valid'])) {
header('Location: index.php');
}
}
}
?>
<div class="row">
<div class="col-md-6 col-md-offset-3">
<div class="box">
<h3>Login</h3>
<form name="form1" action="" method="POST" enctype="multipart/form-data">
<input type="text" name="username" id="username" placeholder="Username" class="form-control"><br>
<input type="password" name="password" id="password" placeholder="Password" class="form-control"><br>
<button type="submit" name="submit" class="btn btn-success button">Login</button>
</form>
</div>
</div>
</body>
</html>
就这部分而言,我对如何使用 index.php 在准备好的语句中实现它感到非常困惑无论我尝试从互联网上搜索什么,我似乎都无法弄清楚这部分:
$row = mysqli_fetch_assoc($result);
if(is_array($row) && !empty($row)) {
$validuser = $row['username'];
$_SESSION['valid'] = $validuser;
$_SESSION['name'] = $row['name'];
$_SESSION['id'] = $row['id'];
} else {
echo "Invalid username or password.";
echo "<br/>";
echo "<a href='login.php'>Go back</a>";
}
if(isset($_SESSION['valid'])) {
header('Location: index.php');
}
}
}