Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Русские кодировки в XAJAX

256
11 декабря 2006 года
foxweb
1.0K / / 27.07.2005
Вот и я открыл для себя сокровищницу Xajax.

Задача элементарная:
вывести окно авторизации (логин, пароль - как положено), авторизоваться (или НЕ авторизоваться) не отходя от кассы.

Возникли проблемы с кодировкой данных POST.

Короче, вот кусок кода:

Код:
<?php
define("XAJAX_DEFAULT_CHAR_ENCODING", "windows-1251");
require_once("./xajax/xajax.inc.php");

function testForm($formData)
{
  $objResponse = new xajaxResponse("windows-1251");
    $objResponse->addAssign("login-form", "innerHTML", "Принятые данные: ".nl2br(print_r($formData, true)), true);
    return $objResponse->getXML();
}
$xajax = new xajax();
$xajax->registerFunction("testForm");
$xajax->processRequests();
$xajax->printJavascript("/xajax/");
?>
<!-- форма регистрации в системе -->
<div id="login-form" style="display: none;">
<form id="form1" &#111;&#110;submit="return false;">
  <div id="close" &#111;&#110;click="changeDisplay('login-form')" title="закрыть окно">x</div>
  <table width="100%" align="center" class="MainTableForm">
    <tbody>
      <tr>
        <td class="Column2"><label>
          <div align="center"><strong>Логин:</strong><br>
            <input class="InputBox" name="login" type="text" id="login" value="<?=$userinfo[login]?>" />
          </div>
        </label></td>
      </tr>
      <tr>
        <td class="Column2"><label>
          <div align="center"><strong>Пароль:</strong><br>
            <input name="password" type="password" class="InputBox" id="password" value="<?=$userinfo[password]?>" />
          </div>
        </label></td>
      </tr>
      <tr>
        <td class="Column2"><div align="center">
            <input type="submit" style="width: 100px;" value="Войти" &#111;&#110;click="xajax_testForm(xajax.getFormValues('form1')); return false;" />
          </div></td>
      </tr>
      <tr>
        <td style="text-align: center;"><a href="#">Регистрация</a><br /><a href="#">Забыли пароль?</a>
        </td>
      </tr>
    </tbody>
  </table>
</form>
</div>
<!-- конец формы -->


testForm($formData) возвращает:

 
Код:
Принятые данные:
Array
(
[login] => фыва
[password] => фыва
)


то есть массив $formData - в UTF, хотя для всего XAJAX установлено 1251.

цель - привести все POST данные к 1251.

iconv и другие извращения не помогают, одни глюки.
337
11 декабря 2006 года
shine
719 / / 09.06.2006
Почитай здесь: http://community.xajaxproject.org/viewtopic.php?id=1396
256
12 декабря 2006 года
foxweb
1.0K / / 27.07.2005
Спасибо за ссылку. Примерно так я и делал.

Сделал я так:

Код:
function cyrconv($str)
{
  return iconv("utf-8", "windows-1251", $str);
}

function testForm($formData)
{
  $a = cyrconv($formData[login])
  $objResponse = new xajaxResponse("windows-1251");
    $objResponse->addAssign("login-form", "innerHTML", "Логин: $a");
    return $objResponse->getXML();
}


аналогично iconv использовалось в нескольких разных вариантах.
главный глюк такой - в месте выхова этого куска вывод просто ОСТАНАВЛИВАЕТСЯ. без единого намёка на ошибки. просто - как ножницами отрезало. опции вывод ошибок настроены везде, где только можно. может быть давно бы уже сам разобрался, но отсутсвие error ввело меня в замешательство...

пытаюсь применить $xajax->decodeUTF8InputOn(); - такой же "эффект ножниц". просто вырубается на этом месте и всё.

комментирую строку $a = cyrconv($formData[login]) - всё работает.
такое ощущение, что function testForm($formData) не даёт как либо модифицировать данные в самой функции.

мистика...

пожалуйста, покажите ваши примеры работы с формами, если кто этим занимался.
337
12 декабря 2006 года
shine
719 / / 09.06.2006
Насчет отлова ошибок. Используй $objResponse->addAlert() для вывода сообщений. Мне очень помогает в "мистических" случаях.
256
12 декабря 2006 года
foxweb
1.0K / / 27.07.2005
да тут вообще ботва... намного хуже всё... дабы не повторяться - озадачил разработчиков http://community.xajaxproject.org/viewtopic.php?pid=12610

курил маны http://wiki.xajaxproject.org/Documentation:xajax.inc.php - тоже никак. грешу на кривые настройки Апача и ПХП...
13
12 декабря 2006 года
RussianSpy
3.0K / / 04.07.2006
Используй Sajax - он намного стабильнее.
256
12 декабря 2006 года
foxweb
1.0K / / 27.07.2005
[quote=foxweb]I think the trouble in wrong preferences of Apache 1.3.34 & PHP 4.4.4 (PHP as mod_php4). Reinstall?[/quote]

Интересно!

Вот этот код

Код:
<?php
define("XAJAX_DEFAULT_CHAR_ENCODING", "windows-1251");
include_once("../xajax/xajax.inc.php");

function testForm($formData)
{
  //$buf = "Принятые данные: ".nl2br(print_r($formData, true));
  if ($formData[login] == "Вася") $buf = "Здравствуйте, $formData[login]!<br />Вы успешно вошли в систему.";
  else $buf = "Такой учётной записи не существует.";
  $objResponse = new xajaxResponse();
    $objResponse->addAssign("login-form", "innerHTML", $buf);
    return $objResponse->getXML();
}

$xajax = new xajax();
$xajax->decodeUTF8InputOn();
$xajax->registerFunction("testForm");
$xajax->processRequests();
$xajax->printJavascript("../xajax/");
?>

<!-- my form... -->


нормально работат на моём хостинге!! Но не работает на localhost...

Кто нибудь знает почему? Мне кажется дело в настройках PHP...
13
12 декабря 2006 года
RussianSpy
3.0K / / 04.07.2006
Какая конфигурация системы на хостинге и на локалхосте?

ЗЫ подозреваю что на локалхосте стоит венда а на хостинге никс...
256
12 декабря 2006 года
foxweb
1.0K / / 27.07.2005
Цитата: RussianSpy
Какая конфигурация системы на хостинге и на локалхосте?

ЗЫ подозреваю что на локалхосте стоит венда а на хостинге никс...



Так оно и есть. Анализировал заголовки HTTP, в обоих случаях идентичные, значит Apache отпадает.

Остаётся PHP. Как думаете, где там могу быть потенциальные проблемы? На серве и локале - mod_php.

Кстати, если у меня mod_php - где должен лежать php.ini? у меня в C:\windows\

256
12 декабря 2006 года
foxweb
1.0K / / 27.07.2005
по поводу Sajax - я его юзал давно, довольно успешно. Он и попроще в использовании будет, и с функциями прозрачно более менее работается.

вопрос: а как там корректно передать POST в функцию?
13
12 декабря 2006 года
RussianSpy
3.0K / / 04.07.2006
Проблема скорее всего в путях... Копай в этом направлении. И РНР тут ни при чем - это различия ОС.
256
12 декабря 2006 года
foxweb
1.0K / / 27.07.2005
http://foxweb.net.ru/test/xajax/blocks/login-form.php

скрипт правильно отрабатывает имя Вася

а на локале выдаёт:

Такой учётной записи Р’Р&#176;СЃСЏ не существует.
13
12 декабря 2006 года
RussianSpy
3.0K / / 04.07.2006
Нужно мне думается использовать такие штуки:
java script: encodeURI()
PHP: urldecode()

Цитата:
по поводу Sajax - я его юзал давно, довольно успешно. Он и попроще в использовании будет, и с функциями прозрачно более менее работается.

вопрос: а как там корректно передать POST в функцию?



не очень понял вопроса... Там есть параметр, отвечающий за метод передачи данных: $sajax_request_type = 'POST';

Все экспортированные в Sajax РНР-функции получают свое "отражение" в виде js-функций в странице (насколько я помню в xajax такая же модель)

337
12 декабря 2006 года
shine
719 / / 09.06.2006
Цитата: foxweb
http://foxweb.net.ru/test/xajax/blocks/login-form.php

скрипт правильно отрабатывает имя Вася

а на локале выдаёт:

Такой учётной записи Вася не существует.



Вместо всего этого геммороя можешь перейти на utf8 и все заработает. По крайней мере у меня все работает на локальном сервере (виндовом).
Или windows-1251 - это критично?

256
12 декабря 2006 года
foxweb
1.0K / / 27.07.2005
windows-1251 - родная кодировка моего движка, всех моих БД, сайто и заказчиков. перходить на UTF-8 я не готов, ещё ни разу мне не удавалось сделать так, чтобы UTF-8 прозрачно работало в связке ОС-сайт-БД-хостинг.

по поводу sajax - имхо это игрушка... документации нет. на сайте есть только пример с умножением цифр. плюс для более менее вменяемой интеграции почти весь интерфейс к серверным функциям надо дописывать на JavaScript. хотя не спорю, для простых задач пойдёт.
13
13 декабря 2006 года
RussianSpy
3.0K / / 04.07.2006
Цитата: foxweb
windows-1251 - родная кодировка моего движка, всех моих БД, сайто и заказчиков. перходить на UTF-8 я не готов, ещё ни разу мне не удавалось сделать так, чтобы UTF-8 прозрачно работало в связке ОС-сайт-БД-хостинг.

по поводу sajax - имхо это игрушка... документации нет. на сайте есть только пример с умножением цифр. плюс для более менее вменяемой интеграции почти весь интерфейс к серверным функциям надо дописывать на JavaScript. хотя не спорю, для простых задач пойдёт.



Твое мнение ошибочно. У меня есть как минимум два мощных проекта, где использован Sajax. Главное прямые руки и работающая голова.

256
13 декабря 2006 года
foxweb
1.0K / / 27.07.2005
Цитата: RussianSpy
Твое мнение ошибочно. У меня есть как минимум два мощных проекта, где использован Sajax. Главное прямые руки и работающая голова.


а можно ссылки посмотреть?

Кстати, решил я свою проблему с кодировками. На стороне сервера вообще ничего перекодировать не надо, на локале применяю mb_convert(), всё работает без глюков, менеджер проекта счастлив )))
Пока работает система "авторизация/забыли пароль", но уже видно, что дальше дело пойдёт!

sajax - ИМХО штука хорошая, но рутинных операций делать приходится много. архитектура xajax более абстрактна и понятна мне, хороший форум поддержки, полная документация, доступ к SVN. будет необходимость - применю sajax.

13
13 декабря 2006 года
RussianSpy
3.0K / / 04.07.2006
Цитата: foxweb
а можно ссылки посмотреть?


AJAX я применяю ТОЛЬКО в панелях администрирования. Так что показать проблема, к сожалению. К тому же местами интерфейс таких панелей является коммерческой тайной (я имею ввиду игровые проекты).

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог