кодировка и post

Irrina

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

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

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

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

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


Могут ли так влиять настройки сервера?
и какие?
 

Фанат

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

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

Irrina

Новичок
данный сервер проверить не могу.
Есть доступ к админке скрипта, другого доступа - нет.
могу сказать сисадмину - "у вас настройки не те", если буду уверена, что ошибка не в скрипте :).

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

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

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

На других серверах использован данный скрипт неоднократно...
 

Фанат

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

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

Irrina

Новичок
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

В первом случае видно, что знак процента на код его заменился....
 

SiMM

Новичок
У вас там где-то почему-то двойное urlencode происходит. Где конкретно - сказать трудно, не видя, как эти ссылки формируются - смотрите HTML-код - если там действительно такие ссылки - то ожидать иного и смысла не было (да и в браузере наверно видно, вобщем-то).
 

SiMM

Новичок
Фанат, тогда, я так понимаю, это браузерная проблема была бы - и сервер наверно не при делах?
PS: не шарю в JS.
 

Irrina

Новичок
В разных браузерах (опера, 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;
}
 

SiMM

Новичок
Автор оригинала: Irrina
1. Работает: Content-type text/html
2. работает не верно: Content-type text/html charset=windows-1251
А сама страничка в какой кодировке?
И в Etag у того, что работает неверно добавлено в конце тоже указание на кодировку windows-1251 после цифирок.
Откуда у динамики ETag? Вы его сами формируете?
PS: apache 1.3.27 (Linux) - русский апач?
 

Irrina

Новичок
Originally posted by SiMM
А сама страничка в какой кодировке?Откуда у динамики ETag? Вы его сами формируете?
PS: apache 1.3.27 (Linux) - русский апач?
У странички - 1251
Апач - не знаю какой. Просто сказала то, что в заголовке было.
etag был у странички формы, откуда вызывался скрипт, у статики.

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

До этого скрипт стоял на том же сервере но в отдельном субдомене.
Работал верно!
 

SiMM

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

Irrina

Новичок
Ну вот вроде бы разобрались в причине...

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

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

если

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

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

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

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

И все же!

с какой стати там запускается копия Апача?
 

SiMM

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