2015-11-04 281 views
1

我找到一個使用PHP連接到MySQL數據庫的管理表的登錄腳本。 我的問題是用戶名區分大小寫,我不希望它是。所有用戶名都將是專有名稱,因此即使用戶名使用大寫或小寫,它也可以正常工作。用戶名登錄不區分大小寫? PHP MySQL

<?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&nbsp;&nbsp; : </label> 
       <input id="password" type="password" name="password" placeholder="password" /></p> 

      <input type="submit" name="submit" value="Login" /> 
     </form> 
    </div> 
<?php } ?> 

回答

1

檢查Collation在你的數據庫表,發現這是大小寫敏感的領域,去change,確保它的latin1_swedish_ci,有些選項強制它是區分大小寫的。

如果這不是您的問題,請在您的$query中將=標誌更改爲LIKE

ciCollation選項的結束意味着Case Insensitive

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注入)。