Проблем с encoding в mysql

  • Автор Автор sle
  • Начална дата Начална дата

sle

Registered
Здравейте. Имам логин система на php и искам да създам потребител на който паролата да бъде на български език. Направил сам поле password с encoding utf8_general_ci и когато е на български паролата не може да се логне потребителя. Пробвах полето да е с енкодинг cp1251_general_ci и пак не се получава, не може да се логне не намира паролата като вярна. Как може да стане това с БГ пароли ?
 
Пробвай с регулярен израз
preg_match("/^[а-зА-З0-9_]$/", $password);
Не съм много сигурен дали ще ти отчете така от а-з на БГ, но ако не стане може да пробваш и да сложиш всички букви .
Ако някой има по добри идеи нека сподели. :)
 
Паролата криптира ли си по някакъв алгоритъм ? Как излиза в базата данни - на маймуница или на кирилица ? Можеш да дадеш примерен код ...
 
Ето така си взимам името и паролата и правя проверка на долу дали съществуват:
Код:
$email=$_POST['user'];
$pass=$_POST['pass'];

$query = "SELECT * FROM users WHERE email='$email' AND password='$pass'";

в базата данни имам в таблица users имам само тези 2 полета потребител и парола и те са ми с кодировка utf8_general_ci. Няма криптиране за паролата и си ми излиза на български език вътре в таблицата.Обаче когато си напиша името и паролата в полетата не ми намира потребителя. Паролата като е с английски букви например ми го намира.Нещо бърка БГ езика
 
Запази файла в който ти е инпут-а като utf-8 bез BOM. Всъщност запази всички файлове така, ако не си го направил.

Що не пробваш да изведеш това което въвеждаш като парола, за да разбереш къде е грешката?
Ако ти изписва маймуни, квадрати и т.н. ясна е работата.
 
mysql_query("SET NAMES UTF8");
Добави си това в конфиг файла или на страницатха директно където добавяш данните :) Чарсета трябва да ти е UTF-8 базата също ! :)
 
Записвай паролите с md5 кодировка така дори и да е объркана кодировката винаги ще е правилно, защото дори и объркано то означава пак точно това което си въвел така че направи pass-а от това $pass = $_POST['pass']; на това: $pass = md5($_POST['pass']); и на всякъде другаде където слагаш или ъпдейтваш това поле към тази база данни.
 

Back
Горе