Логин: чувствительный к регистру Xcode / PHP - PullRequest
0 голосов
/ 21 февраля 2012

У меня проблема с Xcode и функцией входа в систему клиента.2 Текстовые поля: одно для имени и одно для пароля.

В моей базе данных (например) пароль - "Hello".Но я могу набрать «Hello» ИЛИ «hello» (без учета регистра), чтобы выполнить условия входа в систему.

Что я могу сделать, чтобы сделать его чувствительным к регистру?(в Xcode или PHP?)

.php-файл:

$Nickname = $_GET["User"];
$Password = $_GET["Password"];


$query = "SELECT Count(*) FROM kunde WHERE Nickname='$Nickname' AND Password='$Password'";

$result=mysql_query($query) or die("error");
    $num = mysql_numrows($result);
    mysql_close();


    $rows = array();
    while ($r = mysql_fetch_assoc($result))
    {
        $rows[] = $r['Count(*)'];

    }
    echo json_encode($rows); 

Ответы [ 2 ]

2 голосов
/ 21 февраля 2012

Вы не должны хранить пароли в виде простого текста. Используйте функцию хеширования, например, sha1 () с солью. Ваш пароль будет чувствителен к регистру.

$Password = sha1($Password . 'somerandomstring');

Вам необходимо использовать его перед сохранением пароля и перед его проверкой. sha1 () всегда генерирует одну и ту же строку с одним и тем же вводом.

Что касается других полей в базе данных, вы можете убедиться, что они чувствительны к регистру, используя для них соответствующие параметры сортировки. Прямо сейчас вы используете utf8_general_ci . Часть 'ci' в конце означает нечувствительность к регистру. Изменение на utf8_general_cs решит проблему.

1 голос
/ 22 февраля 2012

Вы также можете запросить столбец как двоичный файл, и он будет чувствителен к регистру:

$query = "SELECT Count(*) FROM kunde WHERE Nickname='$Nickname' AND binary Password='$Password'";

Не забудьте экранировать свои $ Nickname и $ Password, чтобы избежать [sql инъекций] [1].(http://en.wikipedia.org/wiki/SQL_injection)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...