Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Потестируйте чат, пожалуйста.
 
 автор: coloboc66   (08.05.2007 в 10:32)   письмо автору
 
 

Вроде все замеченные ошибки устранил, проверил в Опере, Лисе и ИЕ - работает.
http://berestye.com/scripts/chat/

   
 
 автор: coloboc66   (08.05.2007 в 11:00)   письмо автору
 
   для: coloboc66   (08.05.2007 в 10:32)
 

Вот это почему-то не работает на реальном хосте:

$user=$_SESSION['user'];
if (isset($user))

$fp=fopen($f_chat,'a');
  if(!$fp)
   {
     echo iconv("windows-1251","UTF-8",'Запрос не может быть обработан. Попробуйте позже.');
     exit;
   }
$outputstring=iconv("windows-1251", "UTF-8",$today.' Пользователь '.$user.' вышел из чата.'."\r\n");
fwrite($fp,$outputstring);
fclose($fp);
}
unset($_SESSION['user']);
session_destroy();
exit;


а на локальном работает, не могу понять, в чем дело?

   
 
 автор: Trianon   (08.05.2007 в 11:08)   письмо автору
 
   для: coloboc66   (08.05.2007 в 11:00)
 

Всё определяется значением переменной $f_chat а также характеристиками файла (права , владелец, группа), имя которого в ней записано.
Как-то странно гонять преобразующую функцию для текстовых констант. Не проще ли текст скрипта набрать (импортировать и сохранить) в кодировке utf-8?

   
 
 автор: coloboc66   (08.05.2007 в 12:09)   письмо автору
 
   для: Trianon   (08.05.2007 в 11:08)
 

Для аякса нужно обязательно отсылаемые данные кодировать в encodeURIComponent(). Отсюда и приходится гонять преобразующую функцию. Насчет "набрать и сохранить текст скрипта в кодировке UTF-8" не понял...

   
 
 автор: Loki   (08.05.2007 в 12:13)   письмо автору
 
   для: coloboc66   (08.05.2007 в 12:09)
 

ну если вам не лень перекодировать данные во всех логических условиях, выборках и прочем, то можно и не перекодировать сам скрипт. Но я бы многое отдал чтобы посмотреть на него в итоге!

   
 
 автор: coloboc66   (08.05.2007 в 12:16)   письмо автору
 
   для: Loki   (08.05.2007 в 12:13)
 

Не понимаю, что означает "перекодировать скрипт"? Скрипт пишется латинскими буквами, как, куда, и для чего его кодировать???
P.S. to Trianon: Но аналогичный скрипт, связанный со входом в чат, нормально работает...

   
 
 автор: Loki   (08.05.2007 в 12:26)   письмо автору
 
   для: coloboc66   (08.05.2007 в 12:16)
 

Латинские или не латинские - юникоду все равно. Если в скрипте у вас будет однобайтовая кодировка, а извне поступать многобайтовая, то работать это правильно не будет.

   
 
 автор: coloboc66   (08.05.2007 в 12:34)   письмо автору
 
   для: Loki   (08.05.2007 в 12:26)
 

Так это что: нужно открыть блокнот, набрать в нем скрипт и сохранить его в UTF-8? Так, что-ли? Чудо какое-то... Впервые сталкиваюсь с подобной проблемой...

   
 
 автор: Trianon   (08.05.2007 в 14:14)   письмо автору
 
   для: coloboc66   (08.05.2007 в 12:34)
 

Ну вообще-то когда вывод скрипта ожидается в utf-8 - написать сам скрипт в utf-8 вполне естественно.
Возможно, придется вырезать Byte Order Mark - форменное гадство, что php-движок не делает этого сам.

   
 
 автор: Trianon   (08.05.2007 в 14:33)   письмо автору
 
   для: coloboc66   (08.05.2007 в 12:34)
 

>Так это что: нужно открыть блокнот, набрать в нем скрипт и сохранить его в UTF-8? Так, что-ли? Чудо какое-то... Впервые сталкиваюсь с подобной проблемой...
Если блокнотом действовать - точно придется BOM вырезать.
Лучше каким-нибудь более аккуратным редактором.
Ну и все iconv посшибать нафиг.

   
 
 автор: Trianon   (08.05.2007 в 14:13)   письмо автору
 
   для: Loki   (08.05.2007 в 12:26)
 

utf-8 - кодировка с переменным размером символа. Вся латынь в ней - однобайтовая.

   
 
 автор: Loki   (08.05.2007 в 14:26)   письмо автору
 
   для: Trianon   (08.05.2007 в 14:13)
 

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

   
 
 автор: coloboc66   (08.05.2007 в 14:43)   письмо автору
 
   для: Loki   (08.05.2007 в 14:26)
 

Так что: скрипт сохранять в UTF-8???!!! А что такое ВОМ? Ё-мое...

   
 
 автор: Trianon   (08.05.2007 в 14:56)   письмо автору
 
   для: coloboc66   (08.05.2007 в 14:43)
 

Блокнот дописывает перед текстом один unicode-спецсимвол Byte Order Mark - метка порядка байт, а открывая позднее файл, по наличию этого символа, определяет, сохранен ли текст в одном из unicode-форматов, а если да,то в каком именно.
U+FEFF (Byte Order Mark)


В формате utf-8 этот символ кодируется байтами EF BB BF
В utf16-le - байтами FF FE
В utf16-be - естественно - байтами FE FF

   
 
 автор: coloboc66   (08.05.2007 в 15:22)   письмо автору
 
   для: Trianon   (08.05.2007 в 14:56)
 

Кажись, кто-то мой чат уже ломанул, Loki скорей всего. Жаль - руки до него не дотянутся. А то бы я его самого ломанул бы...

   
 
 автор: Loki   (08.05.2007 в 16:31)   письмо автору
 
   для: coloboc66   (08.05.2007 в 15:22)
 

логи в студию.

   
 
 автор: coloboc66   (15.05.2007 в 16:21)   письмо автору
 
   для: Loki   (08.05.2007 в 16:31)
 

Если пока оставить в покое перекодирующие функции, то все работает, за исключением того, что в файл не записывается строка о выходе из чата (хотя на локалке все нормально). Кто знает, почему????

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования