За последние 24 часа нас посетили 73579 программистов и 10173 робота. Сейчас ищут 3019 программистов ...

Please, проблемы отображения в процессе считывания из файла

Тема в разделе "PHP для новичков", создана пользователем Culttm, 11 янв 2009.

  1. Culttm

    Culttm Активный пользователь

    С нами с:
    11 янв 2009
    Сообщения:
    2
    Симпатии:
    0
    Доброго времени суток, проблема как мне кажется детская, но бьюсь уже 4 день(новичек :D ) .
    Вот два файла гостевой книги
    PHP:
    1. <?php
    2. $bf= "log.txt";
    3. $con="<\-\>";
    4.  
    5.   if(isset($_POST))
    6.    {
    7.     $name=$_POST['name'];
    8.     $msg=$_POST['msg'];
    9.     $email=$_POST['email'];
    10.    }
    11.    
    12. $name=trim(strip_tags($name));
    13. $msg=trim(strip_tags($msg));
    14. $email=trim(strip_tags($email));
    15. if(empty($name)|| empty($msg)||empty($email))
    16. { echo"!!!!!WARNING!!!!!!";
    17. }else{
    18. $array=array($name,$email,$msg,date("A:D:Y"));
    19. $str_array=implode($con,$array) ."\r\n" ;  
    20. $fp=fopen($bf,"a+");
    21. $write=fwrite($fp,$str_array );
    22. fclose($fp);
    23. }  
    24.      
    25. ?>



    PHP:
    1. <?php
    2. $con="<\-\>";
    3. $bf="log.txt";
    4. $shablon='
    5. <div class="main">
    6.  <div class="name">Имя пользователя: %name% </div>
    7.  <div >Почта: %email% </div>
    8.  <div class="meseges">%msg%</div>
    9.  <div class="date">%date%</div>
    10. </div>';
    11. $fr=file('log.txt');
    12. foreach($fr as $val){
    13. list($name,$email,$msg,$date)=explode($con,$val);
    14.  
    15. $anchor=str_replace("%name%",$name,$shablon);
    16. $anchor=str_replace("%email%",$email,$anchor);
    17. $anchor=str_replace("%msg%",$msg,$anchor);
    18. $anchor=str_replace("%date%",$date,$anchor);
    19. echo"$anchor";
    20.  
    21.  
    22. }
    23. ?>
    как видно один принимает данные из формы и записывает их в файл, а другой считывает и ставит якорями в соответствующий шаблон.
    Вроде бы все ок, но когда в поле сообщения ($msg) вводишь текст с параграфами идет смещение в отображении в хтмл.
    Просьба ткнуть носом в очевидное :)
     
  2. gyrus

    gyrus Активный пользователь

    С нами с:
    11 янв 2009
    Сообщения:
    6
    Симпатии:
    0
    посмотри log.txt, скрипт не обрабатывает переводы строки, следовательно и записывает в файл сообщение с переводами строк не в 1 строку (как нужно).... вот рабочий вариант первого файла:

    PHP:
    1. <?php
    2.  $bf= "log.txt";
    3.  $con="<\-\>";
    4.  
    5.    if(isset($_POST))
    6.    {
    7.      $name='ffff';
    8.      $msg='ffff
    9.     ffff';
    10.      [email=$email='fff@ff.rt]$email='fff@ff.rt[/email]';
    11.   }
    12.  
    13. $name=trim(strip_tags($name));
    14. $msg=trim(str_replace(array("\n","\r"),array("<br>",""),strip_tags($msg)));
    15. $email=trim(strip_tags($email));
    16. if(empty($name)|| empty($msg)||empty($email))
    17. { echo"!!!!!WARNING!!!!!!";
    18. }else{
    19. $array=array($name,$email,$msg,date("A:Y"));
    20. $str_array=implode($con,$array) ."\r\n" ;
    21. $fp=fopen($bf,"a+");
    22. $write=fwrite($fp,$str_array );
    23. fclose($fp);
    24. }
    25.  
    26. ?>
     
  3. Culttm

    Culttm Активный пользователь

    С нами с:
    11 янв 2009
    Сообщения:
    2
    Симпатии:
    0
    Спасибо, огромное!!!!