Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MYSQL]Skrypt php wykonujący się dłuuugo
Forum PHP.pl > Forum > Przedszkole
gg1985
Witam

Mam taki kodzik:

  1. <?php
  2. require_once 'connect.php';
  3. $source = file($_SERVER['HTTP_REFERER']);
  4. $source = implode('', $source);
  5. preg_match('/<title>(.*?)</title>/si', $source , $title);
  6. echo '<h1>Dodaj komentarz do artykułu "'.$title[1].'"</h1>';
  7. if (count($_POST))
  8. {
  9. $nick = '''.$_POST['nick'].''';
  10. $title = '''.$_POST['title'].''';
  11. $content = '''.$_POST['content'].''';
  12. $link = '''.$_POST['link'].''';
  13. $sql = 'insert into `comments` (link, nick, title, content, date) values('.$link.','.$nick.','.$title.','.$content.',Now())';
  14. mysql_query('SET NAMES 'latin2'');
  15. $wykonaj = mysql_query($sql) or die('Zapytanie: '.$sql.' --- błąd: '.mysql_error());
  16. $link2 = str_replace("'http://www.strona.pl/'", "", $link);
  17. $link2 = substr($link2, 0, -1);
  18. $link2 = substr($link2, 1);
  19. header("Location: $link2");
  20. }
  21. else
  22. {
  23. ?>
  24. <form action="?" method="post" style="margin-left: 20px">
  25. <p>Nick: <input style="margin-left: 17px" class="area" type="text" name="nick" maxlength="30" /></p>
  26. <p>Tytuł: <input style="margin-left: 13px" class="area" type="text" name="title" maxlength="20" /></p>
  27. <p>Treść komentarza:</p>
  28. <p><textarea class="area" name="content" cols="60" rows="10"></textarea></p>
  29. <p><input type="submit" value="Wyślij" class="area" /></p>
  30. <input name="link" value="<?php echo $_SERVER['HTTP_REFERER']; ?>" type="hidden">
  31. </form>
  32. <?php
  33. }
  34. ?>


Kod wczytuje się kilka minut, po czym i tak strona się nie wyświetla, czemu tak może być ?
erix
Po pierwsze:
  1. <?php
  2. $source = file($_SERVER['HTTP_REFERER']);
  3. $source = implode('', $source);
  4. preg_match('/<title>(.*?)</title>/si', $source , $title);
  5. ?>

Ściągnięcie danych, ze słabego serwera również, trochę trwa. Poza tym, nie polegaj na HTTP_REFERER.

Sprawdź, same zapytania, ile się wykonują. Poza tym, Twój kod jest podatny na SQL Injection.
gg1985
Cytat(erix @ 5.03.2009, 22:19:15 ) *
Poza tym, nie polegaj na HTTP_REFERER.


A czym zastąpić ?

Cytat(erix @ 5.03.2009, 22:19:15 ) *
Poza tym, Twój kod jest podatny na SQL Injection.


Czemu ?
Spawnm
bo nie filtrujesz danych przez mysql_real_escape_string" title="Zobacz w manualu PHP" target="_manual danie przed i po $_POST '\' nic ci nie da .
erix
Cytat
A czym zastąpić ?

Przesyłaj linka w ukrytym polu formularza.

Cytat
Czemu ?

Użyj wyszukiwarki, a znajdziesz przyklejony temat na paredziesiąt postów.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.