PHP SQL登录区分大小写

时间:2014-06-25 03:19:24

标签: php networking login

我正在学习网站登录和创建创作。我面临的可能是我的脚本不检查两个字符串是否相同的情况。 例如,Foo和foO都返回true。

我当前的PHP脚本是:

//Create query
$qry="SELECT * FROM member WHERE username='$username' AND password='$password'";
$result=mysql_query($qry);

//Check whether the query was successful or not
if($result) {
    if(mysql_num_rows($result) > 0) {
        //Login Successful
        session_regenerate_id();
        $member = mysql_fetch_assoc($result);
        $_SESSION['SESS_MEMBER_ID'] = $member['mem_id'];
        $_SESSION['SESS_FIRST_NAME'] = $member['username'];
        $_SESSION['SESS_LAST_NAME'] = $member['password'];
        session_write_close();

3 个答案:

答案 0 :(得分:0)

您可以使用“COLLATE latin1_general_cs”字符集来区分大写或小写。

SELECT * FROM `table` WHERE `your condiction` COLLATE latin1_general_cs;

或者您可以使用

SELECT *  FROM `table` WHERE BINARY `column` = 'value'

答案 1 :(得分:0)

如果您在WINDOWS中: 你可以找到my.ini并更改lower_case_table_names = 0。 如果你在LINUX: 你可以找到my.cnf并更改lower_case_table_names = 0。

答案 2 :(得分:0)

字符集latin1的默认排序规则,即latin1_swedish_ci,恰好不区分大小写。

您可以在创建数据库架构时选择区分大小写的排序规则,例如latin1_general_cs。 看看这个链接

https://dba.stackexchange.com/questions/15250/how-to-do-a-case-sensitive-search-in-where-clause