Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dodawanie rekordów do bazy
thurinon
post
Post #1





Grupa: Zarejestrowani
Postów: 55
Pomógł: 2
Dołączył: 8.10.2009

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


Witam ponownie... ja jak zwykle mam jakiś problem. Ale do rzeczy.
Mam formularz, i "skrypt", który dodaje dane z formularza do bazy danych. oto on:
  1.  
  2. <?php
  3. //Odbieranie danych metodą post z formularza:
  4.  
  5. $kategoriai= $_POST['kategoria'];
  6. $data= $_POST['data'];
  7. $godzina = $_POST['godzina'];
  8. $tytul = $_POST['tytul'];
  9. $tresc = $_POST['tresc'];
  10.  
  11. //Łączenie się z bazą mysql
  12. include('db.php');
  13.  
  14. //Dodawanie rekordów do bazy mysql
  15. $dodaj = mysql_query("INSERT INTO wpisy SET kategoria='$kategoria', data='$data', godzina='$godzina', tytul='$tytul', tresc='$tresc', ");
  16.  
  17. //komunikaty
  18.  
  19. if($dodaj) echo '<div><p>Wpis o tytule "<strong>'.$tytul.'</strong>" został poprawnie dodany do bazy danych w kategorii <strong>'.$kategoria.'</strong> </p></div>';
  20. else echo "<div><p>Błąd - nie udało się dodać nowego wpisu</p></div>";
  21. ?>
  22.  
  23.  


I to działa. Problem pojawia się wtedy, gdy w formularzu (kodu nie przedstawiam - najzwyklejszy form) wpiszę jakieś znaki:
,./<>?;':"[]{}
Nie wiem czy chodzi o jakąś kombinację znaków, czy co. wiem że gdy w formularzu wpiszę np: Forum: nowy temat to już nie doda mi rekordu.

Wszelkie rady konstuktywna krytyka i serdeczne daj nam spokój mile widziane smile.gif

Z góry dzięki i pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
patrix007
post
Post #2





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 18.07.2010

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


Wg mojego zdania takie znaki trzeba odfiltrować bo strona będzie podatna na sql injection - będzie można wstrzyknąć zapytanie przez formularz (zniszczyć bazę danych), będzie można także wpisywać tagi html np taki spamerski iframe do jakiejś innej strony.

Nie napisałeś nic po co Ci obsługa takich znaków...
Go to the top of the page
+Quote Post
thurinon
post
Post #3





Grupa: Zarejestrowani
Postów: 55
Pomógł: 2
Dołączył: 8.10.2009

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


To jest formularz widoczny tylko z panelu administracji, robionego tylko dla mnie, ale dzięki za radę. Mimo wszystko jednak nie wiem dalczego te znaki nie wchodzą. Jednak przy dłuższym tekście pojawiają się taki e znaki. do sytatu muszę mieć "",do linkumuszę mieć /, a nawiasy ogólnie przydatna sprawa. zarówno te zwykłe ostre, jak i kwadratowe. jak na razie nie ma żadnych zabezpieczeń, więc nie rozumiem. "Why db why" tongue.gif
dodam że tabela jest typu TEXT.
Go to the top of the page
+Quote Post
patrix007
post
Post #4





Grupa: Zarejestrowani
Postów: 46
Pomógł: 0
Dołączył: 18.07.2010

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


Nie miałem na myśli oczywiście 100% wycięcie tego tylko jakiś np. taki strip_tags albo fgetss z php


Może sprawdź takim sposobem zapytania
Kod
$sql = 'UPDATE `tabela` SET `zawartosc` = \',./<>?;\'\':"[]{}\' WHERE `tabela`.`idzawartoscr` = 2 ';


$zmienna = ",./<>?;\'\':"[]{}";

Kod
$sql = 'UPDATE `tabela` SET `zawartosc` = \''.$zmienna.'\' WHERE `tabela`.`idzawartoscr` = 2 ';
Go to the top of the page
+Quote Post
mkozak
post
Post #5





Grupa: Zarejestrowani
Postów: 78
Pomógł: 4
Dołączył: 21.03.2005

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


A tą funkcje pan zna??
http://php.net/manual/pl/function.mysql-re...cape-string.php


--------------------
==============================================
Bo ja jestem Wróbelek Htmlek
==============================================
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 Aktualny czas: 22.08.2025 - 06:09