Hvor sikker er det her?

Tags:    php mysqli

Hejsa.

Jeg har aldrig før anvendt mysqli, og er derfor helt ude på dybt vand.

Hvor sikker er denne kode jeg har skrevet her?

Den er testet og virker.
Fold kodeboks ind/udPHP kode 




6 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 9 karma
Sorter efter stemmer Sorter efter dato
Jeg plejer at bruge PDO, så jeg skal ikke kunne udtale mig om det konkrete tilfælde.

Men som tommelfingerregel så skal man altid bruge prepared statements når man har input som kommer fra brugeren.

Desuden skader det ikke med lidt inputvalidering på forhånd - for eksempel bare et tjek på om dit input nu også er af den type du forventer. Der er ingen grund til at starte et mysql kald hvis du på forhånd kan se at id'et der kommer fra brugeren er en streng og ikke et tal... Det er en slags intelligent fejlhåndtering :p

For resten må jeg henvise til de andre debatører eller PHP-manualen. Det fedeste ved PHP er hvor grundig og nemt tilgængelig dokumentationen er. Hvis du ikke på forhånd har gjort det, så kan du med fordel studere den. Og især de følgende links:
http://www.php.net/manual/en/book.mysqli.php
http://www.php.net/manual/en/mysqli.quickstart.prepared-statements.php

For øvrigt kan jeg (af manualen) se, at Kenneth har ret i den måde han bruger bind_param på. http://php.net/manual/en/mysqli-stmt.bind-param.php (Dog skal man være opmærksom på at det første parameter ("ss") er ikke bare antallet af spørgsmålstegn - men også typen af de ubekendte...)



ser ikke ud til du har nogle bruger input, så der er ikke så meget at være bange for =)

ellers har jeg værtfald misforstået



Nej har ingen brugerinput på dette.

Men det vil jo minde en del om det når jeg henter med brugerinput eller hvad?


nu er jeg ikke nogen haj til mysqli, men ved dog du skal bruge prepared statements, når du vil bruge bruger input.

Fold kodeboks ind/udPHP kode 

taget fra: http://php.net/manual/en/mysqli.prepare.php



Nej har ingen brugerinput på dette.

Men det vil jo minde en del om det når jeg henter med brugerinput eller hvad?



Hvad så hvis man har flere parameter?



vil tro man kan sende et array eller gøre sådan her

$stmt = $mysqli->prepare("INSERT INTO tbl (a, b) values (?, ?)");
$a = "str1";
$b = "str2";
$stmt->bind_param('ss', $a, $b);




t