Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dodawanie rekordów do bazy
Forum PHP.pl > Forum > Bazy danych > MySQL
thurinon
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
patrix007
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...
thurinon
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.
patrix007
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 ';
mkozak
A tą funkcje pan zna??
http://php.net/manual/pl/function.mysql-re...cape-string.php
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.