Avatar billede mpj_86 Nybegynder
08. juli 2006 - 13:58 Der er 6 kommentarer og
2 løsninger

mysql_escape_string vs. stripslashes?

Hvad er forskellen på:

mysql_escape_string og addslashes, stripslashes?
Avatar billede fixxxer Nybegynder
08. juli 2006 - 18:47 #1
http://dk2.php.net/manual/da/function.mysql-real-escape-string.php

mysql_real_escape_string() kalder MySQLs biblioteks funktion mysql_escape_string, hvilket tilføjer en skråstreg, til følgende karakterer: NULL, \x00, \n, \r, \, ', " og \x1a.


http://dk2.php.net/manual/da/function.addslashes.php

Returnerer en streng med backslashes før tegn der skal beskyttes i en database forespørgsel mm. Disse tegn er enkelte citationstegn ('), dobbelte citationstegn ("), backslash (\) og NUL (NULL byte).
Avatar billede mpj_86 Nybegynder
08. juli 2006 - 19:05 #2
Oki, skal man bruge dem begge, eller kan man bare bruge addslashes og stripslashes?
Avatar billede fixxxer Nybegynder
08. juli 2006 - 19:56 #3
Hvis magic_quote_gpc er off, så skal du blot bruge mysql_real_escape_string() når du gemmer data i databasen.

Når du skal trække dataene ud igen, skal du ikke foretage nogen behandling.

Hvis magic_quote_gpc er on, så skal du bruge stripslashes() når du trækker dine data ud igen.
Avatar billede mpj_86 Nybegynder
08. juli 2006 - 19:59 #4
Jeg har fundet disse 2 function her på siden:

function my_addslashes($streng) {
return get_magic_quotes_gpc()?$streng:addslashes($streng);
}

function my_stripslashes($streng) {
return get_magic_quotes_runtime()?stripslashes($streng):$streng;
}

Kan de bruges til det hele?
Avatar billede Slettet bruger
09. juli 2006 - 00:20 #5
Det ligner fra min artikel ;-)

For det første er mysql_escape_string forældet, så man bør benytte mysql_real_escape_string i stedet.

For det andet er addslashes mere generel end mysql_real_escape_string. Hvis du skal bruge det specifikt til at sætte ind i en mysql-query, så bør du benytte mysql_real_escape_string.

Fidusen ved my_addslashes-funktionen er, at den tager en streng og kører kun addslashes på den, hvis PHP ikke er sat til automatisk at lave addslashes på alle indkommende strenge. I denne udgave bruges den altså til at sikre, at der er kørt addslashes på en streng, man har modtaget "udefra". Man kunne i stedet (hvis magic_quote_gpc er slået til) køre stripslashes på alt indkommende data, så der ikke er "overflødige" \er når ens PHP-kode forbehandler data, og derefter køre alle værdier gennem mysql_real_escape_string, når man skal bruge dem til databasekald.

Den anden funktion er beregnet til når man trækker data ud fra databasen og skal udskrive det. Hvis magic_quotes_runtime er slået til, sætter PHP nemlig også slashes i det, man trækker ud fra databasen.

Bemærk forresten, at de slashes, som sættes på ting, man sætter ind i databasen med enten addslashes eller mysql_real_escape_string bliver "spist" af MySQL under brug, så de optræder ikke i databasen, når du trækker dataene ud igen. Uanset om magic_quotes_gpc er slået til eller ej.

Og det er kun hvis magic_quotes_runtime er slået til (eller hvis data fik flere gange slashes før indsættelse), at der kommer slashes i udskriften.
Avatar billede mpj_86 Nybegynder
09. juli 2006 - 09:29 #6
Mange tak for hjælpen sandbox..

Jeg har hævet pointsene til 50.

Så smid et svar begge..
Avatar billede Slettet bruger
09. juli 2006 - 09:53 #7
Ok, kommer her.
Avatar billede fixxxer Nybegynder
09. juli 2006 - 15:52 #8
Og her..
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester