Проблем с encoding в mysql

C++ JAVA
Post Reply
User avatar
sle
Нов
Нов
Posts: 196
Joined: Sun Sep 07, 2008 1:09 pm

Проблем с encoding в mysql

Post by sle » Wed Jul 25, 2012 11:22 am

Здравейте. Имам логин система на php и искам да създам потребител на който паролата да бъде на български език. Направил сам поле password с encoding utf8_general_ci и когато е на български паролата не може да се логне потребителя. Пробвах полето да е с енкодинг cp1251_general_ci и пак не се получава, не може да се логне не намира паролата като вярна. Как може да стане това с БГ пароли ?

User avatar
kikity_94
Потребител
Потребител
Posts: 904
Joined: Sun Jul 19, 2009 8:07 am
Answers: 27

Post by kikity_94 » Wed Jul 25, 2012 11:25 am

Пробвай с регулярен израз
preg_match("/^[а-зА-З0-9_]$/", $password);
Не съм много сигурен дали ще ти отчете така от а-з на БГ, но ако не стане може да пробваш и да сложиш всички букви .
Ако някой има по добри идеи нека сподели. :)

User avatar
stoqnski
Гуру
Гуру
Posts: 2037
Joined: Mon Sep 10, 2007 4:39 pm
Answers: 122
Location: гр.Сливен

Post by stoqnski » Wed Jul 25, 2012 11:26 am

Паролата криптира ли си по някакъв алгоритъм ? Как излиза в базата данни - на маймуница или на кирилица ? Можеш да дадеш примерен код ...

User avatar
sle
Нов
Нов
Posts: 196
Joined: Sun Sep 07, 2008 1:09 pm

Post by sle » Wed Jul 25, 2012 12:12 pm

Ето така си взимам името и паролата и правя проверка на долу дали съществуват:

Code: Select all

$email=$_POST['user'];
$pass=$_POST['pass'];

$query = "SELECT * FROM users WHERE email='$email' AND password='$pass'";
в базата данни имам в таблица users имам само тези 2 полета потребител и парола и те са ми с кодировка utf8_general_ci. Няма криптиране за паролата и си ми излиза на български език вътре в таблицата.Обаче когато си напиша името и паролата в полетата не ми намира потребителя. Паролата като е с английски букви например ми го намира.Нещо бърка БГ езика

rombeca
Потребител
Потребител
Posts: 1154
Joined: Thu Sep 28, 2006 4:12 pm
Answers: 62
Contact:

Post by rombeca » Wed Jul 25, 2012 12:58 pm

Запази файла в който ти е инпут-а като utf-8 bез BOM. Всъщност запази всички файлове така, ако не си го направил.

Що не пробваш да изведеш това което въвеждаш като парола, за да разбереш къде е грешката?
Ако ти изписва маймуни, квадрати и т.н. ясна е работата.

User avatar
dakata__92
Web-tourist
Web-tourist
Posts: 3302
Joined: Tue Aug 02, 2011 7:24 pm
Answers: 126

O

Post by dakata__92 » Wed Jul 25, 2012 4:53 pm

mysql_query("SET NAMES UTF8");
Добави си това в конфиг файла или на страницатха директно където добавяш данните :) Чарсета трябва да ти е UTF-8 базата също ! :)

User avatar
smoke
Турист
Турист
Posts: 589
Joined: Mon Sep 27, 2010 7:40 am
Answers: 21
Location: Пловдив

Post by smoke » Wed Jul 25, 2012 10:53 pm

Записвай паролите с md5 кодировка така дори и да е объркана кодировката винаги ще е правилно, защото дори и объркано то означава пак точно това което си въвел така че направи pass-а от това $pass = $_POST['pass']; на това: $pass = md5($_POST['pass']); и на всякъде другаде където слагаш или ъпдейтваш това поле към тази база данни.

Post Reply