Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL] Zmiennie w zapytaniu SQL
--mobo--
post
Post #1





Goście







Oto fragment kodu z mojego scryptu

  1. <?php
  2. if (!empty($_POST['wiadomosc']) && !empty($_POST['user_login']) ) {
  3. $login=$_POST['user_login'];
  4. $wiad=$_POST['wiadomosc'];
  5. $pytanie = "INSERT INTO `users` ( user_id , user_login , wiadomosc ) VALUES 
  6. (NULL , '$login', '$wiad')";
  7. ?>


I mój problem polegał na tym że jak chciałem bezpośrednio w zapytanie sql wstawić te dwie zmienne z $_POST to ciągle wywalało mi jakieś błędy składni a gdy utworzyłem sobie najpierw te dwie zmienne pomocnicze $login i $wiad to za ich pomocą już bez problemu wpisuje w SQL. I moje pytanie brzmi jak powinna wyglądać prawidłowa składnia jakbym chciał wstawić bezpośrednio te zmienne $_POST bez zmiennych pomocniczych. Pozdrawiam
Go to the top of the page
+Quote Post
webdice
post
Post #2


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




  1. <?php
  2. $sql = "INSERT INTO `table` VALIES ('" . $POST['name'] . "')";
  3. ?>


Tylko licz się z tym ze jest to dość niebezpieczne, nie filtrujesz danych zapisywanych do bazy.
Go to the top of the page
+Quote Post
Shili
post
Post #3





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


Niech Cię ręka boska broni przed wstawianiem otrzymanych zmiennych bezpośrednio do zapytania!
Poszukaj sobie o sql injection - trochę nie to co chciałeś co prawda, ale się przyda.

Nie wiem jak dla innych, dla mnie jest dużo lepiej, jeśli zmienne wyrzucam poza string.

  1. <?php
  2. $pytanie = "INSERT INTO `users` ( user_id , user_login , wiadomosc ) VALUES (NULL , ".$_POST['user_login'].", ".$_POST['wiadomosc'].")";
  3. ?>


Ale jak już pisałam - to coś jest podatne na ataki - osoba która się zna może usunąć Ci całą bazę danych!

@edit
Kurcze, znowu spóźniona (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Ten post edytował Shili 8.06.2008, 13:17:45
Go to the top of the page
+Quote Post
kallosz
post
Post #4





Grupa: Zarejestrowani
Postów: 272
Pomógł: 19
Dołączył: 29.07.2006

Ostrzeżenie: (10%)
X----


  1. <?php
  2. $pytanie = "INSERT INTO `users` (user_login, wiadomosc) VALUES ('{$login}', '{$wiad}');";
  3. ?>
albo
  1. <?php
  2. $pytanie = "INSERT INTO `users` (user_login, wiadomosc) VALUES ('".$login."', '".$wiad."');";
  3. ?>
Go to the top of the page
+Quote Post
Maxik
post
Post #5





Grupa: Zarejestrowani
Postów: 726
Pomógł: 129
Dołączył: 10.01.2008
Skąd: Gdańsk

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


Chyba, że na serwerze jest włączone gpc_magic_quotes (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Shili
post
Post #6





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


@up
Właśnie niekoniecznie ^^
I przy magic quotes i addslashes też można narobić sporo zamieszania (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
Maxik
post
Post #7





Grupa: Zarejestrowani
Postów: 726
Pomógł: 129
Dołączył: 10.01.2008
Skąd: Gdańsk

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


Ciekawe jak skoro wszystkie przekazane zmienne są filtrowane i żadnego SQL nie da się wykonać. Jeśli znasz jakiś sposób to opisz mi to na PW :]
Go to the top of the page
+Quote Post
-mobo-
post
Post #8





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 8.06.2008

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


Dzieki za pomoc (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Już sie nawet zarejestrowałem bo widzę że forum jest bardzo wartościowe.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 21:17