Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: работа с файлами или простенькая гостевая
Форумы портала PHP.SU » » Вопросы новичков » работа с файлами или простенькая гостевая

Страниц (1): [1]
 

1. ijonhson - 15 Мая, 2013 - 21:01:19 - перейти к сообщению
Доброго времени суток проблемка с выводом сообщений из файла в гостевой книге
код
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. $login=$_REQUEST['login'];
  4. $pass=$_REQUEST['pass'];
  5. $text=$_REQUEST['message'];   //здесь приходит текст нового сообщения
  6.   function file_to_mas($filepath)  //функция, возвращает массив сообщений из файла
  7.   {
  8.     $files=fopen($filepath,"r");
  9.     $stringfile=fread($files,filesize($filepath));
  10.     $mas=explode(":::",$stringfile);
  11.     fclose($files);
  12.     return $mas;
  13.   }
  14. if(($login=="Gitler"||$login=="Megavolt"||$login=="Otshelnik")&&$pass=="231564")
  15. {                                                 //проверяем логин пароль и входим в тело скрипта
  16.            $mas=file_to_mas("data.d");  //открываем сообщения        
  17.            $k=array_search($text,$mas);
  18.     if($text!=""&&empty($k))        //если сообщение не повторяется то записываем
  19.    {  
  20.     $text1.=$text;
  21.     $text1.="::: Повелитель";
  22.     $text1.=$login;
  23.     $text1.="&nbsp&nbsp&nbsp";
  24.     $text1.=date(r);
  25.     $text1.=":::";
  26.     $fileW=fopen("data.d","a");
  27.     fwrite($fileW,$text1);
  28.     fclose($fileW);
  29.    }
  30.        $mas1=file_to_mas("data.d");     //вот здесь начинается мистика по идее в
  31.                //файле уже должно быть текущее сообщение, но его нет!!!
  32.                //оно появляется только после обновления страницы
  33.        print_r($mas1);  //подсматриваю что в массиве на всяк. случай-нет!!          
  34.        $string="";
  35.        for($i=sizeof($mas1)-1;$i>=0;$i--)
  36.        {
  37.        $mas1[$i]=str_replace("\r\n","<br>",$mas1[$i]);
  38.        
  39.          if($i%2==0)
  40.          {$string.="<table border='1' class='message'><tr><td><h4>$mas1[$i]</h4></td></tr></table>";}
  41.          else{$string.="<h5>$mas1[$i]</h5>";}
  42.        
  43.        }//далее код html
  44.  

помогите разобраться, знаю как обойти проблему-редирект на страницу после записи в файл, но это не панацея, а как решить? и главное почему???????
спасибо
2. imya - 16 Мая, 2013 - 08:58:53 - перейти к сообщению
Вопрос можно поконкретнее задавать? Исходя из вашего топика, вы знаете, как решить проблему, в чём же дело тогда? Растерялся
3. ijonhson - 16 Мая, 2013 - 14:28:27 - перейти к сообщению
первоочерёдно идёт запись полученного сообщения в файл, затем выводится содержание файла, но почему-то без последнего записанного до этого сообщения, хотя если заглянуть в файл то оно там есть.
Если обновить страницу последнее сообщение можно будет увидеть, но только после обновления.
Почему так происходит?
P.S. Если делать редирект, то значительно увеличивается код и процессорное время, а это очень важно если пользоваться хостом с ограниченным процессорным временем.
4. DeepVarvar - 17 Мая, 2013 - 10:32:44 - перейти к сообщению
5. ijonhson - 17 Мая, 2013 - 11:19:08 - перейти к сообщению
Спасибо я уже из сил выбился, замучал гугл, заново учебник перечитал кстате там про кэширование ни слова.
6. DeepVarvar - 17 Мая, 2013 - 12:06:55 - перейти к сообщению
Таки помогло или нет?

 

Powered by ExBB FM 1.0 RC1