За последние 24 часа нас посетили 63270 программистов и 1743 робота. Сейчас ищут 1584 программиста ...

php и javascript

Тема в разделе "PHP для новичков", создана пользователем _virus_, 7 ноя 2010.

  1. _virus_

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

    С нами с:
    23 июн 2009
    Сообщения:
    30
    Симпатии:
    0
    Адрес:
    с.Александровское Томской обл.
    PHP:
    1.  
    2. <?php
    3. $user = $_GET['user'];
    4. $time = $_GET['time'];
    5. $nick = $_GET['nick'];
    6. if($time) $time = 0;
    7. if($nick) $nick = " ";
    8. $file = "s.php"; //Файл с логами
    9. $users = file($file);
    10. $num_msg = 0;
    11. if(!$user){
    12. for($i=0;$i<count($users);$i++){
    13. $line=explode("\t",$users[$i]);
    14. if($line[10]){ $msg[$num_msg] = $line[3]."<font color=white>: ".$line[8].": </font> ".$line[11]."<font color=white>(".date("H",$line[2]).":".date("i",$line[2]).":".date("s",$line[2]).")</font>";
    15. $time_msg = $line[2];
    16. $time_msg_num[$num_msg] = $line[2];
    17. $name = $line[4];
    18. $num_msg = $num_msg + 1;}
    19.     }
    20. }else{
    21. for($i=0;$i<count($users);$i++){
    22. $line=explode("\t",$users[$i]);
    23. if($line[10] and ($line[4] == $user or $line[8] == $user)){ $msg[$num_msg] = $line[3]."<font color=white>: ".$line[8].": </font> ".$line[8]."<font color=white>(".date("H",$line[2]).":".date("i",$line[2]).":".date("s",$line[2]).")</font>";
    24. $time_msg = $line[2];
    25. $time_msg_num[$num_msg] = $line[2];
    26. $name_num[$num_msg] = $title[3];
    27. $name = $line[4];
    28. $num_msg = $num_msg + 1;}
    29.     }
    30. }
    31. for($m=1;$m<count($msg);$m++){
    32. $msg[$m];
    33. if($time_msg_num[$m] == $time or $time_msg_num[$m] > $time){
    34.     if($time_msg_num[$m] == $time){
    35.         if($name_num[$m] != $nick) echo "<script>parent.frame('content', '".$msg[$m]."');</script>\n";
    36.         }
    37.         else{echo "<script>parent.frame('content', '".$msg[$m]."');</script>\n";}
    38.     }
    39. }
    40. ?>
    41. <script>setTimeout('location.href="sa.php?time=<?=$time_msg?>&nick=<?=$name?>&user=<?=$user?>"',5000);</script>
    42.  
    Этот скрипт должен читать логи и выводить их в другом фрейме.
    Но почемуто выводит он их вот так:
    HTML:
    1.  
    2. <script>parent.frame('content', '<font color="#DADADA">RENO</font><font color=white>: Л@пОчК@: </font> <font color="#DADADA">сижу один дома,пью пиво чуток,скучно,грустно и одиноко...</font>
    3. <font color=white>(19:29:10)</font>');</script>
    4.  
    Переводит строку в ненужном месте, соответственно javascript не может обработать этот пораметр и нихрена не показывает.

    Как убрать этот перевод строки?

    Вот логи:
    Код (Text):
    1.  
    2.     [0] => 36969    1   1288726143  <font color="#CFD316">КИПИШЬЬЬ</font>   КИПИШЬЬЬ    cd774f3937a39c6c2ae73761e354db82    80177               0   <font color="#CFD316"><b><i>крах</i></b></font>
    3.     [1] => 36970    1   1288726148  <font color="#DADADA">миш@</font>    миш@ 30c961d0351a1eda1f49b22adf34663e    52983       Девочка_Ангел   1980f9e3b8c9e20645cf39e49333365a    58691   <font color="#DADADA"><b><i>тут буду спать</i></b></font>
    4.     [2] => 36971    1   1288726150  <font color="#DADADA">RENO</font>   RENO    499f7892b65d6ef63a1885c59d2f047b    484     Л@пОчК@    8460064df766c49981a26f192bc3a141    29406   <font color="#DADADA">сижу один дома,пью пиво чуток,скучно,грустно и одиноко...</font>
    5.     [3] => 36972    1   1288726152  <font color="#DADADA">Девочка_Ангел</font>  Девочка_Ангел   1980f9e3b8c9e20645cf39e49333365a    58691       миш@ 30c961d0351a1eda1f49b22adf34663e    52983   <font color="#DADADA"><b>ок)</b></font>
    6.     [4] => 36973    1   1288726163  <font color="#ADFF4F">бояр</font>   бояр    b56f20d906780b9d1d6b2a491f5c7165    76754       Л@пОчК@    8460064df766c49981a26f192bc3a141    29406   <font color="#ADFF4F"><i>ответная была любовь?</i></font>
    7.     [5] => 36974    1   1288726176  <font color="#E6C400">Commentator</font>    Commentator 806babce776d8ea5071ae636136f8276    9274            ses     <font color="#E6C400"><span class="vic1"><b>Подсказка:</b>&nbsp; </span> <span class="vic2"><b>о</b></span></font>
    8.     [6] => 36975    1   1288726190  <font color="#E6C400">Commentator</font>    Commentator 806babce776d8ea5071ae636136f8276    9274            ses     <font color="#E6C400">_PrInCiP_: Чем ты занимаешься?</font>
    9.     [7] => 36976    1   1288726191  <font color="#ADFF4F">_Katya_</font>    _Katya_ a682b36e0d955f2f8f034f05058b9bf9    80504               0   <font color="#ADFF4F"><b><i>КИПИШЬЬЬ: че то ваще жопа какая то... да?</i></b></font>
    10.     [8] => 36977    1   1288726192  <font color="#ADFF4F">бояр</font>   бояр    b56f20d906780b9d1d6b2a491f5c7165    76754       Л@пОчК@    8460064df766c49981a26f192bc3a141    29406   <font color="#ADFF4F"><i>если трудно говорить</i></font>
     
  2. Johnatan

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

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    Во всех строчках насчитал максимум 10 табуляторов, а значит элемент массива будет состоять из 10 строк. У тебя же в 13-ой строке кода пытается вывести $line[11]. Откуда ему взяться?
    Как вариант, перед выводом текста просто удаляй все переходы на новую строку (str_replace).
     
  3. _virus_

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

    С нами с:
    23 июн 2009
    Сообщения:
    30
    Симпатии:
    0
    Адрес:
    с.Александровское Томской обл.
    Я через str_replace убирал символ "\n" не помогает
     
  4. Ensiferum

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

    С нами с:
    11 июл 2010
    Сообщения:
    1.292
    Симпатии:
    0
    Адрес:
    из секты поклонников Нео
  5. _virus_

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

    С нами с:
    23 июн 2009
    Сообщения:
    30
    Симпатии:
    0
    Адрес:
    с.Александровское Томской обл.
    Ensiferum

    Убрал, заработало. Спасибо :)
     
  6. _virus_

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

    С нами с:
    23 июн 2009
    Сообщения:
    30
    Симпатии:
    0
    Адрес:
    с.Александровское Томской обл.
    А вот ещё вопрос, хотел сделать, чтоб при обновлении он выводил только те сообщения, у которых время больше, чем у времени, которое передаётся через get в переменной $time.
    Вывод сообщений у меня сейчас таким образом
    PHP:
    1.  
    2. for($m=0;$m<count($msg);$m++){
    3. $msg[$m] = str_replace("\r\n", "", $msg[$m]);
    4. if($time_msg_num[$m] == $time or $time_msg_num[$m] > $time){
    5.     if($time_msg_num[$m] == $time){
    6.         if($name_num[$m] != $nick) echo "<script>parent.frame('content', '".$msg[$m]."');</script>\n";
    7.         }
    8.         else{echo "<script>parent.frame('content', '".$msg[$m]."');</script>\n";}
    9.     }
    10. }
    11.  
    Почему он выводит старые сообщения ещё раз и только патом новые?
     
  7. Johnatan

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

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    У вас register_globals On или у вас где-то есть переназначение $_GET['time'] к $time ?
     
  8. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Johnatan
    Сколько лет, сколько зим!
     
  9. _virus_

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

    С нами с:
    23 июн 2009
    Сообщения:
    30
    Симпатии:
    0
    Адрес:
    с.Александровское Томской обл.
    Johnatan

    $_GET['time'] к $time
     
  10. Johnatan

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

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    Угу, есть такое. Работал не по специальности просто, не было времени заглядывать. :( Теперь я надолго.


    _virus_

    Попробуйте вот так:
    PHP:
    1. for($m=0;$m<count($msg);$m++){
    2.  $msg[$m] = str_replace("\r\n", "", $msg[$m]);
    3.  if($time_msg_num[$m] > $time){
    4. echo "<script>parent.frame('content', '".$msg[$m]."');</script>\n";
    5. }
    6.  }
    Если будет работать нормально, то потом определитесь зачем вам там проверка никнейма.
     
  11. _virus_

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

    С нами с:
    23 июн 2009
    Сообщения:
    30
    Симпатии:
    0
    Адрес:
    с.Александровское Томской обл.
    Johnatan

    Не работает, посматрите пожалуйсто, мож гдето в другом месте ошибку сделал:
    PHP:
    1.  
    2. <?php
    3. $user = $_GET['user'];
    4. $time = $_GET['time'];
    5. $nick = $_GET['nick'];
    6. if($time) $time = 0;
    7. if($nick) $nick = " ";
    8. $file = "s.php"; //Файл с логами
    9. $users = file($file);
    10. $num_msg = 0;
    11. if(!$user){
    12. for($i=0;$i<count($users);$i++){
    13. $line=explode("\t",$users[$i]);
    14. if($line[10]){ $msg[$num_msg] = $line[3]."<font color=white>: ".$line[8].": </font> ".$line[11]."<font color=white>(".date("H",$line[2]).":".date("i",$line[2]).":".date("s",$line[2]).")</font><br>";
    15. $time_msg = $line[2];
    16. $time_msg_num[$num_msg] = $line[2];
    17. $name_num[$num_msg] = $title[3];
    18. $name = $line[4];
    19. $num_msg = $num_msg + 1;}
    20.     }
    21. }else{
    22. for($i=0;$i<count($users);$i++){
    23. $line=explode("\t",$users[$i]);
    24. if($line[10] and ($line[4] == $user or $line[8] == $user)){ $msg[$num_msg] = $line[3]."<font color=white>: ".$line[8].": </font> ".$line[8]."<font color=white>(".date("H",$line[2]).":".date("i",$line[2]).":".date("s",$line[2]).")</font><br>";
    25. $time_msg = $line[2];
    26. $time_msg_num[$num_msg] = $line[2];
    27. $name_num[$num_msg] = $title[3];
    28. $name = $line[4];
    29. $num_msg = $num_msg + 1;}
    30.     }
    31. }
    32. for($m=0;$m<count($msg);$m++){
    33. $msg[$m] = str_replace("\r\n", "", $msg[$m]);
    34. if($time_msg_num[$m] == $time or $time_msg_num[$m] > $time){
    35.     if($time_msg_num[$m] == $time){
    36.         if($name_num[$m] != $nick) echo "<script>parent.frame('content', '".$msg[$m]."');</script>\n";
    37.         }
    38.         else{echo "<script>parent.frame('content', '".$msg[$m]."');</script>\n";}
    39.     }
    40. }
    41. ?>
    42. <script>setTimeout('location.href="sa.php?time=<?=$time_msg?>&nick=<?=$name?>&user=<?=$user?>"',5000);</script>
    43.  
     
  12. Johnatan

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

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    Не вижу где код, который я дал вам в последнем посте.
     
  13. _virus_

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

    С нами с:
    23 июн 2009
    Сообщения:
    30
    Симпатии:
    0
    Адрес:
    с.Александровское Томской обл.
    Johnatan

    Я его ставил, всёравно не работало, подумал что мож не в этом проблема.
     
  14. _virus_

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

    С нами с:
    23 июн 2009
    Сообщения:
    30
    Симпатии:
    0
    Адрес:
    с.Александровское Томской обл.
    Вот я протупил, извеняюсь за беспокойство.
    Код (Text):
    1.  
    2. if($time) $time = 0;
    3. if($nick) $nick = " ";
    Перед каждой переменной забыл поставить восклицательные знаки :)

    Код (Text):
    1.  
    2. $name_num[$num_msg] = $title[3];
    Тут я был сонный и вместо $line[3] написал $title[3]

    Johnatan

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

    Ещё раз извеняюсь за свою невнимательность, спасибо что уделили мне времени!