Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MYSQL]Skrypt php wykonujący się dłuuugo
gg1985
post 5.03.2009, 22:10:55
Post #1





Grupa: Zarejestrowani
Postów: 174
Pomógł: 3
Dołączył: 23.02.2008

Ostrzeżenie: (0%)
-----


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ć ?


--------------------
Go to the top of the page
+Quote Post
erix
post 5.03.2009, 22:19:15
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
gg1985
post 5.03.2009, 22:21:00
Post #3





Grupa: Zarejestrowani
Postów: 174
Pomógł: 3
Dołączył: 23.02.2008

Ostrzeżenie: (0%)
-----


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 ?


--------------------
Go to the top of the page
+Quote Post
Spawnm
post 5.03.2009, 22:22:20
Post #4





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




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 .
Go to the top of the page
+Quote Post
erix
post 5.03.2009, 22:27:03
Post #5





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




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.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 21:56