|
| stripslashes? Fra : Tonni Aagesen |
Dato : 23-02-01 18:40 |
|
Hej NG,
Jeg kan ikke rigtig få stripslashes() til at fungere i nedenstående:
$result = mysql_db_query ("database1","ret, smag, drikke from table1 WHERE
id=$id");
while ($row = mysql_fetch_array ($result)) {
stripslashes($row);
echo " <td>".$row["ret"]."</td>
echo " <td>".$row["smag"]."</td>
echo " <td>".$row["drikke"]."</td>
Jeg har prøvet mig lidt frem med at lade stripslashes() omslutte
".$row["ret"]." - men så udskriver den jo bare stripslashes() som en streng.
Hvordan får jeg den til at "stripslashe" samtlige "rows" fra "result" ??
Håber nogen kan hjælpe (hurtigt) - og på forhånd tak
Tonni Aagesen
| |
Troels Arvin (23-02-2001)
| Kommentar Fra : Troels Arvin |
Dato : 23-02-01 18:52 |
|
On Fri, 23 Feb 2001 18:39:41 +0100, "Tonni Aagesen"
<newspost@e-boxspam.dk> wrote:
> Jeg kan ikke rigtig få stripslashes() til at fungere
Hvorfor vil du overhovedet benytte stripslashes() i databasesammenhæng?
--
Greetings from Troels Arvin, Copenhagen, Denmark
| |
Tonni Aagesen (23-02-2001)
| Kommentar Fra : Tonni Aagesen |
Dato : 23-02-01 19:59 |
|
"Troels Arvin" <troels@arvin.dk> skrev i en meddelelse
news:nrxl6.34471$2w6.640931@twister.sunsite.dk...
> Hvorfor vil du overhovedet benytte stripslashes() i databasesammenhæng?
Mit problem er beskrevet i en tråd lidt nede under titlen "Tegn i php?".
Jeg håber, nogen har en løsning.
Mvh
Tonni Aagesen
| |
Andreas Frøsting (23-02-2001)
| Kommentar Fra : Andreas Frøsting |
Dato : 23-02-01 20:41 |
|
>while ($row = mysql_fetch_array ($result)) {
>
>stripslashes($row);
Hov, her smadrer du bogstavelig talt dit array, så den skal du slette.
>Jeg har prøvet mig lidt frem med at lade stripslashes() omslutte
>".$row["ret"]." - men så udskriver den jo bare stripslashes() som en streng.
>Hvordan får jeg den til at "stripslashe" samtlige "rows" fra "result" ??
print "<td>".stripslashes($row[ret])."</td>";
eller echo istedet for print hvis du foretrækker det :)
--
Andreas Frøsting
http://phpwizard.dk
glaf glaf glaf!
| |
John Mørck Hansen (23-02-2001)
| Kommentar Fra : John Mørck Hansen |
Dato : 23-02-01 20:50 |
|
"Tonni Aagesen" <newspost@e-boxSPAM.dk> skrev
>
> Jeg har prøvet mig lidt frem med at lade stripslashes() omslutte
> ".$row["ret"]." - men så udskriver den jo bare stripslashes() som en
streng.
> Hvordan får jeg den til at "stripslashe" samtlige "rows" fra "result" ??
Du skal bruge addscashes og stripslashes når du vil bruge data fra en form
eller lig. for at undgå at nogle bruger ting som DROP DATABASE m.v.
Du skal ikke bruge disse funktioner når du skal vise dine data fra
databasen!!!
(John =
| |
Tonni Aagesen (23-02-2001)
| Kommentar Fra : Tonni Aagesen |
Dato : 23-02-01 22:25 |
|
"John Mørck Hansen" <adilock@it.dk> skrev i en meddelelse
news:976f10$mo0$1@news.cybercity.dk...
> Du skal bruge addscashes og stripslashes når du vil bruge data fra en form
> eller lig. for at undgå at nogle bruger ting som DROP DATABASE m.v.
>
> Du skal ikke bruge disse funktioner når du skal vise dine data fra
> databasen!!!
Jeg bruger addslashes() når jeg indsætter i databasen fra en from og
stripslashes() når jeg skal vi dem igen.
Det gør jeg af to årsager, forhindre at nogle ødelægger databasen ved at
indsætte en kodestump, og give mulighed for at bruge tegnet '
Er det ikke fornuftigt nok, eller er det helt forkert?
Mvh
Tonni Aagesen
| |
Troels Arvin (23-02-2001)
| Kommentar Fra : Troels Arvin |
Dato : 23-02-01 23:12 |
|
On Fri, 23 Feb 2001 22:25:09 +0100, "Tonni Aagesen"
<delphin@worldonline.dk> wrote:
> Jeg bruger addslashes() når jeg indsætter i databasen
Godt! - Med mindre din PHP kører med "magic_quotes_gpc" slået til. Om
den gør det eller ej kan du bl.a. se ved at kigge på output fra
phpinfo() funktionen.
> og stripslashes() når jeg skal vi dem igen.
Det skal du _ikke_ gøre.
Når du får data fra databasen er de, som de skal være.
Umiddelbart forekommer det måske ulogisk: Ved indsættelse skal man gøre
krumspring ved særlige tegn. Men det er _ikke_ tilfældet, når man
trækker data ud igen.
--
Greetings from Troels Arvin, Copenhagen, Denmark
| |
Søren Boll Overgaard (23-02-2001)
| Kommentar Fra : Søren Boll Overgaard |
Dato : 23-02-01 23:45 |
|
On Fri, 23 Feb 2001 22:11:57 GMT, Troels Arvin wrote:
>Umiddelbart forekommer det måske ulogisk: Ved indsættelse skal man gøre
>krumspring ved særlige tegn. Men det er _ikke_ tilfældet, når man
>trækker data ud igen.
Med mindre man, forhåbentlig ved en fejl, har aktiveret "magic quotes", der
jo principielt gør det samme som addslashes, bare automagisk, og ud over det
hele.
--
Søren O.
http://chewbacca.dk/disclaimer/
| |
Tonni Aagesen (24-02-2001)
| Kommentar Fra : Tonni Aagesen |
Dato : 24-02-01 01:20 |
|
"Søren Boll Overgaard" <luser@inet.tele.fw1.dk> skrev i en meddelelse
news:slrn99dput.prr.luser@bilbo.tolkien.dk...
> Med mindre man, forhåbentlig ved en fejl, har aktiveret "magic quotes",
der
> jo principielt gør det samme som addslashes, bare automagisk, og ud over
det
> hele.
Ok venner, nu taler I altså overhovedet på mig.
Jeg spurgte engang om sikkerheden ved INSERT fra forms og fik at vide, at
når bare Magic Quotes var slået til, var der er ingen ko på isen.
Fint, tænkte jeg, og lave mine script. Så fandt jeg ud af, at hvis nogen
forsøgte at skrive f.eks. Per's ville data ikke blive indsat i databasen,
men hvis de skrev Pers, var den god nok. Så lave jeg mine fejlagtige
stripslashes om til addslashes før INSERT, men nu blev Per's til Per\'s.
Godt så, så lavede jeg da bare en stripslashes, når jeg trak data ud igen,
og vupti nu virker det efter hensigten.
Nu siger I altså, at hvis Magic Qoutes er slået fra, og jeg bruger
addslashes inden INSERT, behøves der ingen stripslashes, før jeg trækker
data ud igen?
Er der nogen sikkerhedsfare ved min metode?
Mvh
Tonni Aagesen
- der næsten ikke orker at rette de mange php-sider en_gang_til
| |
Søren Boll Overgaard (24-02-2001)
| Kommentar Fra : Søren Boll Overgaard |
Dato : 24-02-01 09:08 |
| | |
Troels Arvin (25-02-2001)
| Kommentar Fra : Troels Arvin |
Dato : 25-02-01 19:04 |
|
On Sat, 24 Feb 2001 01:20:20 +0100, "Tonni Aagesen"
<delphin@worldonline.dk> wrote:
> Nu siger I altså, at hvis Magic Qoutes er slået fra, og jeg bruger
> addslashes inden INSERT, behøves der ingen stripslashes, før jeg
> trækker data ud igen? Er der nogen sikkerhedsfare ved min metode?
stripslashes() er aldrig nødvendig ved databaseudtræk - med mindre man
har fejl i sin kode, der gør, at éns data på en eller anden måde er
blevet kørt flere gange gennem en addslashes()-lignende behandling.
--
Greetings from Troels Arvin, Copenhagen, Denmark
| |
Allan Andersen (26-02-2001)
| Kommentar Fra : Allan Andersen |
Dato : 26-02-01 10:03 |
|
> stripslashes() er aldrig nødvendig ved databaseudtræk - med mindre man
> har fejl i sin kode, der gør, at éns data på en eller anden måde er
> blevet kørt flere gange gennem en addslashes()-lignende behandling.
Ikke fordi vi behøver at diskutere dette til vores dommedag, men
dokumentationen siger altså at man skal bruge stripslashes() sammen med
addslashes(). Måske kommer det an på hvilken database man bruger?
| |
Peter Brodersen (26-02-2001)
| Kommentar Fra : Peter Brodersen |
Dato : 26-02-01 23:51 |
|
On Mon, 26 Feb 2001 10:03:18 +0100, "Allan Andersen" <aa@midas.com>
wrote:
>Ikke fordi vi behøver at diskutere dette til vores dommedag, men
>dokumentationen siger altså at man skal bruge stripslashes() sammen med
>addslashes(). Måske kommer det an på hvilken database man bruger?
Nej. Når du sætter data ind, er addslashes relevant, overfor din
query.
Forestil dig at $navn er sat til:
Peter 'International Man of Mystery' Brodersen
Din query kan så fejle undervejs, hvis din query går på:
: "INSERT INTO adresse (navn) VALUES ('$navn')"
.... idet det ekspanderer til:
: "INSERT INTO adresse (navn) VALUES ('Peter 'International Man of Mystery' Brodersen');
Og her går der koks i pling'erne. Til gengæld vil addslashes (som en
default PHP vil køre på alle variabler, der ryger ind pr. Get, Post og
Cookie) resultere i at det bliver til:
: "INSERT INTO adresse (navn) VALUES ('Peter \'International Man of Mystery\' Brodersen');
Herefter ligger navnet i databasen som:
Peter 'International Man of Mystery' Brodersen
De slashes er altså udelukkende af hensyn til den ene query, hvor man
lægger dataen ind i databasen. Når man så trækker navnet ud, er det,
som man ser det her. Hvilket betyder, at hvis man så skal kaste det
navn over i en anden database, skal man køre addslashes på det, igen
af hensyn til SQL-query'en.
--
- Pede
Professionel nørd
| |
Allan Andersen (27-02-2001)
| Kommentar Fra : Allan Andersen |
Dato : 27-02-01 16:19 |
|
Jeg ved godt hvad problemstillingen. I sprog som ASP escaper man med '' (to
plinger). Du behøver ikke at gøre noget specielt når du læser fra databasen.
Det er jo godt at PHP fungerer på samme måde
Jeg kender ikke selv PHP endnu, men kommer vel snart til det.
Dokumentationen til PHP er i givet fald forkert, fordi den siger nemlig at
de to funktioner skal bruges sammen.
Allan Andersen
| |
Thomas Jensen, pil.d~ (27-02-2001)
| Kommentar Fra : Thomas Jensen, pil.d~ |
Dato : 27-02-01 16:23 |
|
On Tue, 27 Feb 2001 16:19:28 +0100, "Allan Andersen" <aa@midas.com>
wrote:
>Jeg ved godt hvad problemstillingen. I sprog som ASP escaper man med '' (to
>plinger). Du behøver ikke at gøre noget specielt når du læser fra databasen.
>Det er jo godt at PHP fungerer på samme måde
>
>Jeg kender ikke selv PHP endnu, men kommer vel snart til det.
>Dokumentationen til PHP er i givet fald forkert, fordi den siger nemlig at
>de to funktioner skal bruges sammen.
læs meget gerne http://www.usenet.dk/netikette/quote.html
realsoonnow[tm]... specielt i denne gruppe er vi nogle onde krakiler.
--
vh
Thomas Jensen
http://pil.dk/
| |
Troels Arvin (27-02-2001)
| Kommentar Fra : Troels Arvin |
Dato : 27-02-01 18:31 |
|
On Tue, 27 Feb 2001 16:19:28 +0100, "Allan Andersen" <aa@midas.com>
wrote:
> Dokumentationen til PHP er i givet fald forkert, fordi den siger nemlig
> at de to funktioner skal bruges sammen.
Nej, det er ikke forkert. Men heller ikke helt dækkende.
Hvis du kører addslashes() på en streng, skal du ganske rigtigt køre
stripslashes() på den:
$x='Abekatten hed "Bent"';
$x=addslashes($x);
Hvis jeg nu vil have den oprindelige værdi af $x, bør jeg køre
stripslashes() på $x (og i øvrigt også køre den igennem
htmlspecialchars(), hvis det skal printes ud i en HTML context).
Det, som man skal huske på i forb. med databaser er, at databasesystemet
fjerner effekten af addslashes() så snart data er gemt i basen. Og derfor
skal stripslashes() ikke benyttes på data, som man henter fra
databasesystemet.
--
Greetings from Troels Arvin, Copenhagen, Denmark
| |
|
|