真的不能完成我的项目,因为这种情况。我的项目是一个登录页面。 它总是继续第一个条件,但它是其他条件。我只是现在才开始学习这个PHP,虽然它上周正在教给我们。php - 如果其他条件的变量连接到数据库的情况下无法获得正确的
的login.php
<?php
session_start();
include 'register/dbconnect.php';
$uid = $_POST['uid'];
$pwd = $_POST['pwd'];
$sql = "SELECT * FROM user WHERE uid='$uid' AND pwd='$pwd'";
$result = mysqli_query($connect, $sql);
if (!$row = mysqli_fetch_assoc($result)) {
header("Location: index.php");
} else {
header("Location: login/home/home.php");
}
?>
的index.php(在登录表单部分)
<form action="login.php" method="POST">
<input type="text" name="uid" class="loginField" placeholder="Enter your username" required><br />
<input type="password" name="pwd" id="passss" class="loginField" placeholder="Enter your password" required>
<img src="withAcc/img/blindeye.png" onMouseOver="showPass()" onMouseOut="hidePass()" id="eye1" class="eyes"><br /><br />
<p><input type="checkbox" id="keepSigned" value=""> <label for="keepSigned">Stay signed in</label>
Forgot <a href="" style="color: #AA7F03">password</a>?</p>
<input type="Submit" value="Login" id="logInBut" ><br />
<p>Do you have an account? <a href="register/register.php" style="color: #AA7F03">Register</a></p>
</form>
被修改的login.php
if (!$row = $result->fetch_assoc()) {
header("Location: index.php");
} else {
header("Location: login/home/home.php");
}
我编辑它像这样,但它既不可行。它总是去index.php,尽管用户名和密码存储在数据库中。
这是一个非常奇怪的“if”条件。检查返回的行数是否更直观?另外,你的代码对SQL注入是开放的,并且在执行查询之后你不会检查错误。 – David
哦,我真的很抱歉。我新来这个PHP和SQL。 我只想做一个登录表单,可以检查帐号是否存在。我只是从网上收集这些代码。不知道什么SQL注入是 –
没问题,现在是一个很好的学习时间。 Stack Overflow在这个主题上已经有了一组相当不错的答案:http:// stackoverflow。com/questions/60174/how-can-i-prevent-sql-injection-in-php这不一定直接与你现在遇到的问题直接相关,但总的来说它会非常有用。 (作为额外的好处,准备好的语句更容易调试和维护,因此开始时出现的问题更少。) – David