Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   PHP не передает правильно переменную во flash (http://www.flasher.ru/forum/showthread.php?t=87496)

GRiNGA 06.11.2006 21:11

PHP не передает правильно переменную во flash
 
Здравствуйте, помогите разобраться
если не конвертировать принимаеый из flash текст в вин-кодировку,
PHP скрипт правильно его не сохраняет,
а если конвертировать, то не передает обратно во Flash переменную inText

в чем может быть дело?

Код:

function utf_to_win($s){
for ($c=0;$c<strlen($s);$c++){
  $i=ord($s[$c]);
  if ($i<=127) $out.=$s[$c];
      if ($byte2){
          $new_c2=($c1&3)*64+($i&63);
          $new_c1=($c1>>2)&5;
          $new_i=$new_c1*256+$new_c2;
      if ($new_i==1025){
          $out_i=168;
      } else {
          if ($new_i==1105){
              $out_i=184;
          } else {
              $out_i=$new_i-848;
          }
      }
      $out.=chr($out_i);
      $byte2=false;
      }
  if (($i>>5)==6) {
      $c1=$i;
      $byte2=true;
  }
}
return $out;
}



function win_to_utf($s)    {
  for($i=0, $m=strlen($s); $i<$m; $i++)    {
      $c=ord($s[$i]);
      if ($c<=127) {$t.=chr($c); continue; }
      if ($c>=192 && $c<=207)    {$t.=chr(208).chr($c-48); continue; }
      if ($c>=208 && $c<=239) {$t.=chr(208).chr($c-48); continue; }
      if ($c>=240 && $c<=255) {$t.=chr(209).chr($c-112); continue; }
      if ($c==184) { $t.=chr(209).chr(209); continue; };
  if ($c==168) { $t.=chr(208).chr(129);  continue; };
  }
  return $t;
}
        $inText="";
        if ($_POST['name_1']&&$_POST['name_2']) {
            /*
            foreach ($_POST as $key => $value){
                $inText.=">".$key."_".$value."<";
            }
            print "inText=".$inText;
            */
            //çàïèñü â ôàéë
            $str=$_POST['nomer'].",".$_POST['name_1'].",".$_POST['name_2'].",".$_POST['name_3'].",".$_POST['dok'].",".$_POST['dok_n'];
            //$str_w=iconv('UTF-8', 'CP1251', $str);
            $str_w=utf_to_win($str."\r\n");
            $data="data.csv";
            if(is_file($data) && is_writable($data))
                {
                $fd=fopen($data,"a") or die("<p class=error>Íå ìîãó îòêðûòü ôàéë $data</p>");
                flock($fd,2);
                fputs($fd,$str_w);
                flock($fd,3);
                fclose($fd);
                }
            if(is_file($data) && is_readable($data))
                {
                $fd=fopen($data,"r") or die("<p class=error>Íå ìîãó îòêðûòü ôàéë $data</p>");
                $total=file("$data");
                print win_to_utf("inText=".$total[0]);
                fclose($fd);
                }
        } else print "inText=949956";


wvxvw 07.11.2006 02:03

а можно убрать раскраску?.. невозможно ж прочитать...

iNils 07.11.2006 04:15

Цитата:

Сообщение от wvxvw
а можно убрать раскраску?.. невозможно ж прочитать...

Это не его вина. Перевел PHP в CODE.

etc 07.11.2006 05:17

GRiNGA, приведенный код ни о чём не говорит. Точнее разбираться в том, что он делает, врядли кто будет.

Важно знать лишь то, что flash работает только с utf-8 и все данные он посылает именно в этой кодировке (и принимает тоже). Какой смысла конвертировать данные на сервере в win, а потом обратно конвертировать в utf, чтобы отдать флешу — мне непонятно.

GRiNGA 07.11.2006 11:51

Цитата:

Сообщение от __etc
GRiNGA, приведенный код ни о чём не говорит. Точнее разбираться в том, что он делает, врядли кто будет.

Важно знать лишь то, что flash работает только с utf-8 и все данные он посылает именно в этой кодировке (и принимает тоже). Какой смысла конвертировать данные на сервере в win, а потом обратно конвертировать в utf, чтобы отдать флешу — мне непонятно.


Я знаю, что флеш воспринимает тока юникод.
Поэтому я передаю из флеш в php определенные переменные, из которых php делает строку и сохраняет в csv-файл.
А потом для подтверждения сохранения php загружает эту строку из файла и передает во flash.

так вот, если ничего не конвертить, то все передается нормально, но абракадаброй.
а если конвертить, то строка из php передается как undefined
почему-не пойму

etc 07.11.2006 13:51

А что, csv не поддерживает юникод?

wvxvw 07.11.2006 19:19

2 iNils, GRiNGA:
не, сорь, мне просто интересно было как человек конвертировал в юникоды =) тоже что-то похожее надо сделать

GRiNGA 07.11.2006 19:46

Разобрался!!!:yahoo:
Все работает, только надо было отключить E_Notice


Часовой пояс GMT +4, время: 18:02.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.