PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

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

> Найдено сообщений: 5
gzss Отправлено: 19 Июня, 2014 - 19:29:15 • Тема: Плавающая ошибка сайта • Форум: Если скрипт не работает

Ответов: 3
Просмотров: 1233
Zuldek пишет:
Зачем гадать на кофейной гуще. Если не получается выявить в чем проблема в ходе анализа кода, то сделайте простое логирование в файл и посмотрите что и при каких условиях не так работает как вы ожидаете.

С такими явными ошибками нет, а вот с утечками памяти к примеру очень помогает такой подход


Думал об этом, но ошибка плавающая, и стоит выбор между "воткнуть костыль" и "долго и упорно биться над вылавливавением бага".
Учитывая то, что уже разрабатывется новая версия сайта, которая должна встать в бой с сентября - думаю, что будет костыль Улыбка
Спросил на всякий случай, вдруг кто знает хороший метод отлавливания подобных глюков - навык то полезный

LIME пишет:
знаю я такую багу
операторы себе заказывают и жрут на халяву


Эту версию я проработал в первых рядах Улыбка
Но тут всё строго логируется - никто эти заказы не вбивал, и, главное, никто по ним ничего не получил.
gzss Отправлено: 19 Июня, 2014 - 12:21:46 • Тема: Плавающая ошибка сайта • Форум: Если скрипт не работает

Ответов: 3
Просмотров: 1233
Всем привет, не совсем уверен что правильно выбрал раздел форума, но надеюсь модераторы меня простят и поправят, если что.

В общем: есть довольно большой и извесный (относительно Улыбка ) сайт заказа японской кухни и всяких смежных вкусностей.
Сайт на пхп(переписанный кодигнайтер)+яваскрипт, база на мускуле, задачи на кроне - все как полагается.
На сайте имеется накопительная система бонусов, за которые можно заказать себе халявную еду.
И с этой системой происходит нечто загадочное - есть уже несколько случаев когда после заказа за эти самые бонусы то же самое количесто бонусов списывается еще раз, и еще, и еще... промежутки времени абсолютно разные, от дня до 2+недель (в логи списание естественно попадает - по ним списывается за то же блюдо, за которое списание было изначально), по времени тоже совпадений не видно - в любое время суток.

Что выявлено общего - у меня есть 2 случая, в обоих дата открытия заказа проставилась на 2-3 недели вперед от реального создания заказа. У обоих цена в бонусах = 55, но это скорее совпадение.

Всё. Больше ничего общего.

Куда смотреть - ума не приложу, не сталкивался с таким.
В коде явно все нормально - куча других заказов проходит без ошибок. Для крона - время разное...

Подскажите, люди добрые, кто что думает?
gzss Отправлено: 03 Марта, 2014 - 16:13:26 • Тема: ошибка передачи header • Форум: Вопросы новичков

Ответов: 4
Просмотров: 231
В любом случае, спасибо! UTF коварен! Улыбка
gzss Отправлено: 03 Марта, 2014 - 16:03:06 • Тема: ошибка передачи header • Форум: Вопросы новичков

Ответов: 4
Просмотров: 231
IllusionMH пишет:
gzss, перед тем как отправлять заголовок, вы ничего не должны выводить пользователю. Даже BOM. У вас же почти вся страница выводится перед заголовками. Естественно они уже отправлены с первым выводимым символом.
Переносите отправку заголовка в самое начало скрипта, и убедитесь что документ сохранен без BOM.


Спасибо!
Там ничего не выводится. Но в неработающем варианте действительно дописывались неотображаемые ВОМ.
Никогда бы не догадался Улыбка

ПС: Но страница ни в том ни в другом случае не выводится перед заголовками ;) В обработчиках имеется ввиду.
gzss Отправлено: 03 Марта, 2014 - 15:47:55 • Тема: ошибка передачи header • Форум: Вопросы новичков

Ответов: 4
Просмотров: 231
Доброго времени суток!
У меня ламерский вопрос, уж простите Улыбка Только начал пхп разбирать.
Итак: 2 разных человека пишут одну и ту же задачу из одной книжки.
Коды соответственно почти идентичны.
Но! У первого header(location:...) срабатывает корректно, у второго выдает ошибку.
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\sasha.ru\www\add_message.php:1) in Z:\home\sasha.ru\www\add_message.php on line 27
Я уже полчаса построчно сравниваю коды, и не могу понять где что и когда отправляется в заголовок!
Посмотрите плиз, знающие люди...
Работающий вариант:
Страница:
PHP:
скопировать код в буфер обмена
  1. <html>
  2. <head></head>
  3. <body>
  4.  
  5. <form action="add_message.php" method="POST">
  6. Name: <br/>
  7. <input type="text" name="name" value="" title="title" size=15 maxlength=15><br/>
  8. Message: <br/>
  9. <textarea name="mes" cols=40 rows=5></textarea><br/>
  10. <input type="submit" name="ok" value="OK">
  11. </form>
  12. <?PHP
  13. //$r=md5("12345");
  14. //echo $r;
  15. //echo filesize("gbook.txt");
  16.  
  17. //reading
  18. $f=fopen("gbook.txt","rt") or die ("Cannot open file");
  19. while (!feof($f))
  20.  {
  21. $line=fgets($f);
  22. $ip=fgets($f);
  23. $data=fgets($f);
  24. echo "<small> Date: </small>$data<br/>";
  25. $data=fgets($f);
  26. echo "<small> Name: </small>$data<br/>";
  27. $data=fgets($f);
  28. echo "<small> Message: </small>$data<br/>";
  29. echo "<HR>";
  30. }
  31. fclose($f);
  32. ?>
  33. <br/><br/><br/>
  34.  
  35.  
  36.  
  37. <?PHP
  38. //header('Content-Type: text/html; charset= utf-8');
  39. //ыыы
  40.  
  41. echo"<br/><br/><br/>";
  42. echo "Counter:";
  43. require_once("counter.php");
  44.  
  45. ?>
  46. </body></html>

Обработчик:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. if(isset($_POST['ok']))
  3. {
  4. if($_POST['name']=="")
  5.   exit("Enter name! <a href='gbook.php'>Back</a>");
  6. if($_POST['mes']=="")
  7.   exit("Enter message! <a href='gbook.php'>Back</a>");
  8.  
  9. $name=htmlspecialchars($_POST["name"]);
  10. $message=htmlspecialchars($_POST["mes"]);  
  11. if(filesize("gbook.txt")==0)
  12.    $first=1;
  13.    else $first=0;
  14. $f=fopen("gbook.txt","at") or die ("Cannot open file");  
  15. flock($f,2);
  16. if($first==0)
  17.    fputs($f,"\n-----------\n");
  18.    else fputs($f,"-----------\n");
  19. fputs($f,$_SERVER['REMOTE_ADDR']."\n");
  20. fputs($f,date('d.m.y H:i')."\n");
  21. fputs($f,$name."\n");
  22. fputs($f,$message);
  23. flock($f,3);
  24. fclose($f);  
  25. }
  26. header('location:gbook.php');
  27. ?>
  28.  


Не работающий вариант:
Страница:
PHP:
скопировать код в буфер обмена
  1. <html>
  2. <head>
  3.  
  4. </head>
  5. <body>
  6. <form action="add_message.php" method="POST">
  7. Имя:
  8. <br>
  9. <input  type='text'     name='person'   value=''        size=30 maxlength=40>
  10. <br>
  11. Мысли:
  12. <br>
  13. <textarea name='arg_of_user' rows=5 cols=40></textarea>
  14. <br>
  15. <input          type='submit'   name='ok_btn'   value='OK'      >
  16.  
  17. </form>
  18.  
  19. <?PHP
  20.  
  21.        
  22. $f=fopen("gost.txt", "rt") or die (' Не могу открыть файл ');
  23. while (!feof($f))
  24.         {
  25.         $hide_line=fgets($f);
  26.         $ip_=fgets($f);
  27.         $data=fgets($f);
  28.                 echo '<small> Дата: </small>'.$data.'<br>';
  29.         $data=fgets($f);
  30.                 echo '<small> Имя: </small>'.$data.'<br>';
  31.         $data=fgets($f);
  32.                 echo '<small> Сообщение: </small>'.$data.'<br>';
  33.         echo '<hr>';
  34.  
  35.                        
  36.         }
  37. fclose($f);    
  38.  
  39.  
  40. ?>
  41.  
  42. </body>
  43. </html>

Обработчик:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. if (isset($_POST ['ok_btn']))
  3.         {
  4.         if ($_POST ['person']=='')
  5.                 exit (' Введите имя! <a href="guestbook.php"> Назад </a>');
  6.         if ($_POST ['arg_of_user']=='')
  7.                 exit (' Введите текст сообщения! <a href="guestbook.php"> Назад </a>');
  8.         $name_of_guest=htmlspecialchars($_POST ['person']);
  9.         $mess_of_guest=htmlspecialchars($_POST ['arg_of_user']);
  10.         if (filesize("gost.txt")>0)
  11.                 $first_mess=false;
  12.         else
  13.                 $first_mess=true;
  14.         $f=fopen("gost.txt", "at") or die (' Не могу открыть файл ');
  15.         flock ($f,2);
  16.         if ($first_mess==true)
  17.                 fputs ($f, "-----------------------------\n");
  18.         else
  19.                 fputs ($f, "\n-----------------------------\n");
  20.         fputs ($f,$_SERVER ['REMOTE_ADDR']."\n");
  21.         fputs ($f,date('d.m.y.')."\n");
  22.         fputs ($f, $name_of_guest."\n");
  23.         fputs ($f, $mess_of_guest);
  24.         flock ($f, 3);
  25.         fclose ($f);
  26.         }
  27. header('location:guestbook.php');
  28. ?>
  29.  

Страниц (1): [1]
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB