Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Problem wstawienie zmiennej do $_POST w funkcji
superbarman
post 2.04.2015, 23:04:41
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 2.04.2015

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


Witam, męczyłem się już na wiele sposobów, dlaczego to nie chce działać i jeżeli tak się nie da, to jak najłatwiej jest to rozwiązać?

function zabezpieczpole($nazwapola) {
echo mysqli_real_escape_string(htmlentities($_POST[$nazwapola], ENT_QUOTES, "UTF-8"), $db_connect);
}

zabezpieczpole(nazwapola);

Dlaczego ta funkcja nie chce mi wyświetlić $_POST jak wstawiam prawidłową nazwę pola?
Czy real_escape_string jest w 100% skuteczne przed sqlinjection?

Ten post edytował superbarman 2.04.2015, 23:06:04
Go to the top of the page
+Quote Post
Aqu
post 2.04.2015, 23:15:11
Post #2





Grupa: Zarejestrowani
Postów: 279
Pomógł: 58
Dołączył: 14.07.2012

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


1. Czy samo echo $_POST[$nazwapola] działa?
2. Nie przekazujesz do funckji $db_connect, może to jest przyczyną?
Go to the top of the page
+Quote Post
superbarman
post 2.04.2015, 23:33:58
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 2.04.2015

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


Cytat(Aqu @ 3.04.2015, 00:15:11 ) *
1. Czy samo echo $_POST[$nazwapola] działa?
2. Nie przekazujesz do funckji $db_connect, może to jest przyczyną?


1. umieszczone w funkcji? nie
2. to funkcja nie pobierze zmiennej ustawionej w dokumencie php? na początku skryptu mam tą zmienną

Go to the top of the page
+Quote Post
pawwin
post 2.04.2015, 23:46:20
Post #4





Grupa: Zarejestrowani
Postów: 6
Pomógł: 3
Dołączył: 2.04.2015

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


1) Zrób sobie var_dump na $_POST i zobacz czy na pewno pod kluczem który przekazujesz w parametrze znajduje się jakaś wartość
2) W PHP funkcje nie mają dostępu do zmiennych ustawionych poza nimi, możesz to rozwiązać dodając linijke kodu na początku funkcji:
  1. global $db_connect;


Ten post edytował pawwin 2.04.2015, 23:46:53
Go to the top of the page
+Quote Post
com
post 2.04.2015, 23:55:50
Post #5





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


Nie zabezpiecza od tego jest bindowanie zmienych smile.gif lepiej zrob klase i przekaz poloaczenie jako zaleznosc(di) no ale w najgorszym wypadku tak jak powyzej ew jako param do funkcji smile.gif
Go to the top of the page
+Quote Post
superbarman
post 3.04.2015, 13:38:48
Post #6





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 2.04.2015

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


uporałem się, podaje rozwiązanie

function safeinput($pole) {
global $polaczenie;
global $_POST;
return mysqli_real_escape_string($polaczenie, htmlentities($pole, ENT_QUOTES, "UTF-8"));
}

echo safeinput($_POST['maslo']);

trzeba ustawić zmienną z połączeniem jako globalną w funkcji i $_POST tak samo, teraz w miejscu w którym chcemy wprowadzić zabezpieczoną zawartość pola wystarczy wstawić funkcję safeinput($_GET[] albo $_POST[]);

Ten post edytował superbarman 3.04.2015, 14:01:35
Go to the top of the page
+Quote Post
com
post 3.04.2015, 16:22:35
Post #7





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

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


$_POST jest superglobalna wiec poco smile.gif i nawet jej tam nie uzywasz wink.gif
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: 12.06.2025 - 20:20