superbarman
2.04.2015, 23:04:41
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?
1. Czy samo echo $_POST[$nazwapola] działa?
2. Nie przekazujesz do funckji $db_connect, może to jest przyczyną?
superbarman
2.04.2015, 23:33:58
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ą
pawwin
2.04.2015, 23:46:20
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:
Nie zabezpiecza od tego jest bindowanie zmienych

lepiej zrob klase i przekaz poloaczenie jako zaleznosc(di) no ale w najgorszym wypadku tak jak powyzej ew jako param do funkcji
superbarman
3.04.2015, 13:38:48
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[]);
$_POST jest superglobalna wiec poco

i nawet jej tam nie uzywasz
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.