кодировка и post

  • Автор темы Автор темы Irrina
  • Дата начала Дата начала

Irrina

Новичок
кодировка и post

Есть скрипт, который работает на разных серверах.

Правильно работает.

Но на одном при вводе данных через форму записывает абракадабру.

@ меняет на %40, все русские буквы - тоже меняет на что попало...
см, например, - на %F1%EC (это вроде бы 1251, которая и прописана в заголовке, но почему не буквы, а коды?)


Могут ли так влиять настройки сервера?
и какие?
 
ирина. Вообще-то, надо проверять не скрипт, а сервер.
Ну мало ли, что в этом скрипте может быть понаписано?
Надо сделать тестовый скрипт, который принимает из браузера форму и тут же выводит.
и посмотреть - в скрипте ли дело.
а гадать о настройках можно долго. их сотни.

Так же, неплохо было бы поинтересоваться - а что шлет браузер, в каком вмде. И на тех серверах, где "работает" ,и там, где "не работает". Для общего развития.
 
данный сервер проверить не могу.
Есть доступ к админке скрипта, другого доступа - нет.
могу сказать сисадмину - "у вас настройки не те", если буду уверена, что ошибка не в скрипте :).

Пока нет такой уверенности.

Форма - обычные текстовые данные.
Записывает через ява-скрипт.
<form name=input ACTION="checknew.php" onsubmit="return SendForm();">

текст файла с формой, checknew и sendform имею, что приходит - вижу.

На других серверах использован данный скрипт неоднократно...
 
Так же, неплохо было бы поинтересоваться - а что шлет браузер, в каком вмде. И на тех серверах, где "работает" ,и там, где "не работает". Для общего развития.
PHP FAQ: Самые основы. Просмотр обмена HTTP заголовками

Правда, без доступа к скриптам, я думаю, лучше обратиться к услугам профессиональной гадалки. она поможет - у ней работа такая.
 
Originally posted by Фанат
PHP FAQ: Самые основы. Просмотр обмена HTTP заголовками

Правда, без доступа к скриптам, я думаю, лучше обратиться к услугам профессиональной гадалки. она поможет - у ней работа такая.
Гадалок тоже нынче трудно найти профессионалок. Все пальцем в небо...

Спасибо за отправку к заголовкам.
Сравниваю два сервера, который верно отображает и неверно.

Response headers:
1. Работает верно: apachе 2.0.46 (Red Hat)
2. работает не верно: apache 1.3.27 (Linux)

1. Работает: Content-type text/html
2. работает не верно: Content-type text/html charset=windows-1251

И в Etag у того, что работает неверно добавлено в конце тоже указание на кодировку windows-1251 после цифирок.

-~{}~ 10.01.05 23:54:

После ввода формы если смотреть заголовки:

Не верно:
GET checknew.php?name=%25F1%25EC

Верно:
GET checknew.php?name=%F1%EC

В первом случае видно, что знак процента на код его заменился....
 
У вас там где-то почему-то двойное urlencode происходит. Где конкретно - сказать трудно, не видя, как эти ссылки формируются - смотрите HTML-код - если там действительно такие ссылки - то ожидать иного и смысла не было (да и в браузере наверно видно, вобщем-то).
 
Фанат, тогда, я так понимаю, это браузерная проблема была бы - и сервер наверно не при делах?
PS: не шарю в JS.
 
В разных браузерах (опера, firefox, ie) - двойное декодирование сохраняется.

В sendform - проверка правильности ввода в форму.


function SendForm () {
var err, str;
str='';
err=1;
if(document.input.name.value == "") {str="название сайта"; err=0;};
if(document.input.url.value == "") {if(err==0) str=str+', '; str=str+"URL сайта"; err=0;};
if( err==0) str='Введите '+str;

if (err==0)
{alert(str); return false; }
return true;
}
 
Автор оригинала: Irrina
1. Работает: Content-type text/html
2. работает не верно: Content-type text/html charset=windows-1251
А сама страничка в какой кодировке?
И в Etag у того, что работает неверно добавлено в конце тоже указание на кодировку windows-1251 после цифирок.
Откуда у динамики ETag? Вы его сами формируете?
PS: apache 1.3.27 (Linux) - русский апач?
 
Originally posted by SiMM
А сама страничка в какой кодировке?Откуда у динамики ETag? Вы его сами формируете?
PS: apache 1.3.27 (Linux) - русский апач?
У странички - 1251
Апач - не знаю какой. Просто сказала то, что в заголовке было.
etag был у странички формы, откуда вызывался скрипт, у статики.

И еще - полный глюк.

До этого скрипт стоял на том же сервере но в отдельном субдомене.
Работал верно!
 
И всё же я почему-то думаю, что апач - русский (может [m]phpinfo[/m] прояснит ситуацию?), и проблема в нём - бывают у него "закидоны", некоторые из которых вполне лечатся настройкой - может у него при приёме данных какие заморочки (посмотрите до кучи, что в [m]phpinfo[/m](INFO_VARIABLES) - может найдёте что нужно). Попробуйте поискать по форуму (например, по Russian Apache) - может найдёте что подходящее (думаю, CharsetDisable On - это не оно).
В общем, я могу только гадать на кофейной гуще - лично с этим зверем не знаком - может кто другой чем сможет помочь?
 
Ну вот вроде бы разобрались в причине...

Это случается (на данном сервере) если урл обрабатывающего скрипта указывается полностью.

<form ACTION="http://mysite.com/test.php">

если

<form ACTION="test.php"> - работает нормально.

Служба поддержки написала что это ошибка программирования, адрес надо писать относительный.

"А так, как сделали Вы, заставляет запускать еще одну копию Apacha, тем самым
производить конвертацию текста из одной кодировки в другую."

Переделать, конечно, не сложно...
Хотя абсолютный адрес тут более удобен (скрипт запускается из того же сервера, но из другой директории, обе директории определяются в админке или неизвестно в общем случае их взаимное расположение и надо его вычислять)

И все же!

с какой стати там запускается копия Апача?
 
По моему, их службу поддержки пора распустить в первом чтении ;)
 
Сверху