За последние 24 часа нас посетили 16947 программистов и 1787 роботов. Сейчас ищут 1806 программистов ...

Проблема кодировки при авторизайии пользователя через header

Тема в разделе "Прочие вопросы по PHP", создана пользователем SemenF, 6 дек 2011.

  1. SemenF

    SemenF Активный пользователь

    С нами с:
    6 дек 2011
    Сообщения:
    2
    Симпатии:
    0
    PHP:
    1.  
    2. header("Content-Type: text/html; charset=windows-1251");
    3. header("WWW-Authenticate: Basic realm=\"Введите имя и пароль для входа в программу\"");
    4. header("HTTP/1.0 401 Unauthorized");
    5. echo "Чтобы войти в программу, необходимо ввести имя и пароль.";
    6.  
    1. Проблема заключается в том, что сообщение "Введите имя и пароль для входа в программу" на многих браузерах выдается белеберда в другой кодировке возможно ли вывесте его нормально русскими буквами?

    2. Проблема заключается в том, что пользователеть в панели администрирования вписал пароль русскими буквами и все это блакополучно сохранилось в бд, когда пользователь авторизуется и вводит свой новый пароль написаный русскими буквами, то даже если прописаны хедерсы кодировки всеравно выдается белеберда в utf-8 (проверял var_dump'ом) проблема решается при помощи переодирования данной строки функцией mb_convert_encoding() путем перекодирования одной конкретной кодировки в другую, но эта кодировка может быть разной на разных серверах.
    Возможно ли как нибудь без перекодирования решить данную проблему?
     
  2. Denis.Y

    Denis.Y Активный пользователь

    С нами с:
    8 авг 2011
    Сообщения:
    145
    Симпатии:
    0
    Адрес:
    Россия, Самарская область
    перекодировать передаваемый пароль от пользователя iconv() попробовать.
    может база не в той кодировке и данные сохраняются не в той кодировке
    в которой скрипт получает их со страницы?

    в нашей фирме бОльшинство старых сайтов работают на cp1251.
    но с этой кодировкой возникает очень много проблем с работой ajaх и не только.

    удобнее всё изначально делать на utf-8.

    проверьте кодировку базы данных, страницы с которой получаете данные и кодировку в которой работает скрипт.
     
  3. SemenF

    SemenF Активный пользователь

    С нами с:
    6 дек 2011
    Сообщения:
    2
    Симпатии:
    0
    Пояснение

    наверное не оч понятно вопрос задал , стандартная кодировка в utf-8 да, но я не могу в utf-8 писать русскими буквами , вот в чем беда , если все латинскими и пароль и логин , все нормально , а мне нужно чтобы еще и по русски можно было, вот я и спрашиваю возможно такое или нет , т.к. пропись просто хередсов
    PHP:
    1. header("Content-Type: text/html; charset=windows-1251");
    не помогло.
     
  4. Mr. T

    Mr. T Активный пользователь

    С нами с:
    10 ноя 2010
    Сообщения:
    733
    Симпатии:
    0
    Адрес:
    Украина, г. Киев
    Что значит в utf-8 не можете писать кириллицей? о_0
     
  5. Denis.Y

    Denis.Y Активный пользователь

    С нами с:
    8 авг 2011
    Сообщения:
    145
    Симпатии:
    0
    Адрес:
    Россия, Самарская область
    Я имею ввиду, что БД должна быть в кодировке utf-8
    Скрипт принимать и возвращать (на запись, сравнение записей при входе) - utf-8
    И страница, на которой вводятся данные - utf-8
    это вероятно из-за того, что всё же стоит кодировка utf-8 на шаблоне страницы, а пхп возвращает win1251.
    попробуйте заменить
    Код (Text):
    1. header("Content-Type: text/html; charset=windows-1251");
    на
    Код (Text):
    1. header("Content-Type: text/html; charset=utf-8");
     
  6. Padaboo

    Padaboo Старожил
    Команда форума Модератор

    С нами с:
    26 окт 2009
    Сообщения:
    5.242
    Симпатии:
    1
    SemenF
    в качестве аватарки разрешены только личные фото