Avatar billede Slettet bruger
25. februar 2003 - 13:43 Der er 8 kommentarer og
1 løsning

Magic quotes eller hvad?

Hej!

Jeg har lokalt kørt PHP med MySQL og har aldrig haft brug for addslashes eller stripslashes, det gjorde PHP selv når man sendte noget i en formular.

Den gemte det dog i databasen uden \ så alt fungerede skønt og af sig selv.

Nu har jeg uploadet til serveren på domænet, og nu tilføjer PHP ikke selv \.

Det kan jeg slå til med get_magic_quotes_gpc() men det resulterer i at mit indhold også gemmes med \ i databasen. Så løber jeg ind i problemer når jeg vil stripslashes på dette, og det hele kager...

Hvad er forskellen på min egen (standard) PHP og MySQL og serverens? Det er hos azero.dk

Jeg kan ikke overskue hvilken del af phpinfo() der er interessant?
Avatar billede erikjacobsen Ekspert
25. februar 2003 - 13:51 #1
Er det ikke nok med denne funktion? Du skal jo ikke lave stripslashes.

myAddSlashes($st) {
if (get_magic_quotes_gpc()==1) {
  return $st;
} else {
  return AddSlashes($st);
}
}
Avatar billede Slettet bruger
25. februar 2003 - 14:05 #2
Jeg er ikke sikker på hvor du vil have den hen den funktion?

Problemet er jo også at jeg ikke gider at se på \" i tekstfelterne. Og når jeg fjerner dem med stripslashes mangler de når jeg skal opdatere i databasen. Så får jeg en SQL-fejl.

På min lokale maskine sker der det her:

Feltet indeholder f.eks. dette:

Very large at 27 1/2" 7" high post 1952 marks.

Når jeg submitter udskriver jeg min query, for at se hvad den indeholder.

Den indeholder det her:

UPDATE tabelnavn SET tekst = "Very large at 27 1/2\" 7\" high post 1952 marks."

Og når jeg så kigger i databasen står der det her:

Very large at 27 1/2" 7" high post 1952 marks.

Hvordan sker det helt af sig selv?
Avatar billede erikjacobsen Ekspert
25. februar 2003 - 14:09 #3
Du har magic-quotes sat til på din hjemmeserver. Derfor kommer der \" -ere
på. Databasen fjerner dem ved indsættelse.

Ønsker du at bruge et submitted felt til
visning på efterfølgende side, når du har magic-quotes sat til, skal
du strippe dem af igen. Faktisk den "omvendte" funktion af ovenstående.

Jeg mener du skal bruge funktionen sådan

  $sql="UPDATE tabelnavn SET tekst=\"".MyAddSlashes(mitfeltnavn),"\"";

så vil det altid virke.
Avatar billede Slettet bruger
25. februar 2003 - 14:15 #4
Jeg kan godt se at koden umiddelbart løser mit problem men:

- jeg skal ind og lave stripslashes på alle felter der vises fra databasen
- jeg skal rette al min kode til at anvende din funktion

Det var det jeg gerne ville kunne på en lidt let måde :/
Avatar billede erikjacobsen Ekspert
25. februar 2003 - 14:21 #5
Du kan ikke gøre det nemt :)

Du skal ikke lave stripslashes på det du tager ud af databasen. Det
er bare OK som det er.

Men hvis du fra en form submitter til en side, OG vil vise teksten
på denne side, skal du måske lave stripslashes (hvis magic_quotes er sat
til).

Så værsgo': Masser af manuelt arbejde forude - og noget at tænke over
næste gang du tænker på at lave et portabelt program i PHP. Og så kan
du også filosofere lidt over det hensigtsmæssige i den beslutning
PHP-designerne engang har lavet: nemlig at gøre magic_quotes optional.
Det ville være bedre altid at have den slået til, eller altid slået fra.
Dette er lidt bøvlet.
Avatar billede erikjacobsen Ekspert
25. februar 2003 - 14:21 #6
Nå, ja, isoleret set, hvis den anden server er en Apache, kan du
formentlig lige dér, i .htaccess filen, slå magic_quotes til og fra.
Avatar billede Slettet bruger
25. februar 2003 - 14:26 #7
Tak for hjælpen Erik, og ja du har nok ret i at jeg bør fundere lidt over om koden kan bruges andre steder end lokalt.

Der er åbenbart lidt for meget man kan pille ved ved PHP, så jeg bruger din funktion og holder nallerne fra magic_quotes.

Lægger du ikke et svar?
Avatar billede erikjacobsen Ekspert
25. februar 2003 - 14:27 #8
Tak, ellers tak, ingen point til mig
Avatar billede Slettet bruger
25. februar 2003 - 15:17 #9
Fair nok, men tak alligevel :)
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