10. februar 2010 - 15:09Der er
8 kommentarer og 1 løsning
mysqli_real_escape_string PHP
Hej eksperter, jeg har et lille problem
Hvis jeg skriver følgende så virker det: $log_name = isset($_POST['log_name'])?addslashes(mysqli_real_escape_string($conn,$_POST['log_name'])):"";
Men jeg vil gerne have lagt den i en funktion, sådan at jeg kan tilføje eller fjerne ting at enkelt sted uden at skulle gøre det alle steder i min kode.
Men hvis jeg skriver sådan her: functio secure($str){ $str = addslashes($str); $str = mysqli_real_escape_string($conn, $str); return $str; }; $log_name = isset($_POST['log_name'])?secure($_POST['log_name']):"";
Så får jeg følgende fejl: Notice: Undefined variable: conn in C:\apache\htdocs\test\login.php on line 16
Warning: mysqli_real_escape_string() expects parameter 1 to be mysqli, null given in C:\apache\htdocs\test\login.php on line 16
Jeg fandt løsningen selv, skulle have skrevet det sådan her: function secure($str=""){ include"include/dbconnect2.php"; $str = mysqli_real_escape_string($conn, $str); return $str; };
Men hvorfor skal min include også ligge inde i min function? Kan den ikke modtage data udefra, med mindre de er sat som parametre i min secure? eller?
En include inden i funktionen er ikke nogen god løsning. Den koster lidt i performance. Hvis du ændrer tegnsæt i connection udenfor er der et potentielt sikkerhedshul.
function secure($conn, $str=""){ return = mysqli_real_escape_string($conn, $str); };
og kald den med:
secure($conn, $val)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.