我找到了一个使用PHP的登录脚本,它连接到MySQL DB的管理表。 我的问题是用户名是区分大小写的,我不希望它。所有用户名都是正确的名称,因此即使用户名使用大写或小写也可以。
<?php
session_start();
require('connect.php');
if (isset($_POST['username']) and isset($_POST['password'])) {
$username = $_POST['username'];
$password = $_POST['password'];
$query = "SELECT * FROM admin WHERE username='$username' and password='$password'";
$result = mysql_query($query) or die(mysql_error());
$count = mysql_num_rows($result);
if ($count == 1) {
$_SESSION['username'] = $username;
} else {
echo "Invalid Login Credentials.";
}
}
if (isset($_SESSION['username'])) {
$username = $_SESSION['username'];
header("location:index.php?page=user");
echo "<a href='logout.php'>Logout</a>";
} else {
?>
<div class="register-form">
<?php
if (isset($msg) & !empty($msg)) {
echo $msg;
}
?>
<h1>Login</h1>
<form action="" method="POST">
<p><label>User Name : </label>
<input id="username" type="text" name="username" placeholder="username" /></p>
<p><label>Password : </label>
<input id="password" type="password" name="password" placeholder="password" /></p>
<input type="submit" name="submit" value="Login" />
</form>
</div>
<?php } ?>
答案 0 :(得分:1)
检查数据库表格中的Collation
,找到区分大小写的字段并转到change
,确保其latin1_swedish_ci
,某些选项强制选择它是区分大小写的。
如果这不是您的问题,请将=
标志更改为LIKE
中的$query
。
ci
选项末尾的 Collation
表示Case Insensitive
答案 1 :(得分:1)
如果您不想更改数据库,也可以在检查登录之前强制执行此操作。例如:
// Convert the username all lowercase
$username = strtolower($_POST['username']);
// Use LOWER() to convert the username to lowercase
$query = "SELECT * FROM admin WHERE LOWER(username)='$username' and password='$password'";
另请注意,请查看mysqli
和准备好的陈述。您包含的代码非常不安全(查找SQL注入)。