/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
addslashes() og get_magic_quotes_gpc().
Fra : [x]


Dato : 14-07-04 10:10

Lad os antage at jeg har et webhotel hvor magic_quotes_gpc er slået til.
Kunne man forestille sig at jeg kunne få problemer hvis jeg vælger at
bruge addslashes() alligevel, på de data der skrives til databasen ?
--
mvh. [x] - www.ionline.dk

 
 
Johan Holst Nielsen (14-07-2004)
Kommentar
Fra : Johan Holst Nielsen


Dato : 14-07-04 10:35

[x] wrote:

> Lad os antage at jeg har et webhotel hvor magic_quotes_gpc er slået til.
> Kunne man forestille sig at jeg kunne få problemer hvis jeg vælger at
> bruge addslashes() alligevel, på de data der skrives til databasen ?

Jah...

Lad os sige du sender denne streng..

"Hej, dette er et ' eksempel"


"magic_quotes_gpc = on" + "addslashes" vil resultere i
"Hej, dette er et \\\' eksempel"


"magic_qoutes_gpc = on" (og ingen addslashes) vil resultere i
"Hej, dette er et \' eksempel";


"magic_qoutes_gpc = off" + "addslashes" vil resultere i
"Hej, dette er et \' eksempel"


"magic_quotes_gpc = off" (og ingen addslashes) vil resultere i
"Hej, dette er et ' eksempel"


mvh
Johan


[x] (14-07-2004)
Kommentar
Fra : [x]


Dato : 14-07-04 10:50

Johan Holst Nielsen wrote:

> [x] wrote:
>
>> Lad os antage at jeg har et webhotel hvor magic_quotes_gpc er slået
>> til. Kunne man forestille sig at jeg kunne få problemer hvis jeg
>> vælger at bruge addslashes() alligevel, på de data der skrives til
>> databasen ?
>
>
> Jah...
>
> Lad os sige du sender denne streng..
>
> "Hej, dette er et ' eksempel"
>
>
> "magic_quotes_gpc = on" + "addslashes" vil resultere i
> "Hej, dette er et \\\' eksempel"
>
>
> "magic_qoutes_gpc = on" (og ingen addslashes) vil resultere i
> "Hej, dette er et \' eksempel";
>
>
> "magic_qoutes_gpc = off" + "addslashes" vil resultere i
> "Hej, dette er et \' eksempel"
>
>
> "magic_quotes_gpc = off" (og ingen addslashes) vil resultere i
> "Hej, dette er et ' eksempel"
>
>
> mvh
> Johan
>

Så med andre ord, nej ? Det er lidt sådan jeg opfatter det, og egentligt
også havde tænkt det.

Jeg takker.

--
mvh. [x] - www.ionline.dk

Johan Holst Nielsen (14-07-2004)
Kommentar
Fra : Johan Holst Nielsen


Dato : 14-07-04 10:51

[x] wrote:

> Johan Holst Nielsen wrote:
>
>> [x] wrote:
>>
>>> Lad os antage at jeg har et webhotel hvor magic_quotes_gpc er slået
>>> til. Kunne man forestille sig at jeg kunne få problemer hvis jeg
>>> vælger at bruge addslashes() alligevel, på de data der skrives til
>>> databasen ?
>>
>>
>>
>> Jah...
>>
> Så med andre ord, nej ? Det er lidt sådan jeg opfatter det, og egentligt
> også havde tænkt det.

Du _vil_ få problemer...

Hvis du har magic_quotes_on og bruger addslashes og der f.eks. er en ' i
strengen - så vil du få "\'" i databasen i stedet for "'".

Det vil se lidt underligt ud når du outputter dataen ;)

mvh
Johan


[x] (14-07-2004)
Kommentar
Fra : [x]


Dato : 14-07-04 11:03

Johan Holst Nielsen wrote:

> Du _vil_ få problemer...
>
> Hvis du har magic_quotes_on og bruger addslashes og der f.eks. er en ' i
> strengen - så vil du få "\'" i databasen i stedet for "'".
>
> Det vil se lidt underligt ud når du outputter dataen ;)

Jeg kan også se at jeg tilsyneladende var lidt for hurtigt ude med den
konklusion. Jeg prøvede lige. Det tyder på at hvis jeg bruger
addslashes, men ikke stripslashes så bliver de fjernet alligevel.....?
Det kan jeg ikke umiddelbart få til at give mening....

--
mvh. [x] - www.ionline.dk

[x] (14-07-2004)
Kommentar
Fra : [x]


Dato : 14-07-04 11:14

[x] wrote:


> Jeg kan også se at jeg tilsyneladende var lidt for hurtigt ude med den
> konklusion. Jeg prøvede lige. Det tyder på at hvis jeg bruger
> addslashes, men ikke stripslashes så bliver de fjernet alligevel.....?
> Det kan jeg ikke umiddelbart få til at give mening....
>

Lol, se lige bort fra den post, det var mig der lavede en fejl.. *rødme*

Ang. brug af begge, så er det taget til efterretning, Johan.

Jeg takker endnu en gang.
--
mvh. [x] - www.ionline.dk

[x] (14-07-2004)
Kommentar
Fra : [x]


Dato : 14-07-04 11:19

Johan Holst Nielsen wrote:

> Du _vil_ få problemer...
>
> Hvis du har magic_quotes_on og bruger addslashes og der f.eks. er en ' i
> strengen - så vil du få "\'" i databasen i stedet for "'".
>
> Det vil se lidt underligt ud når du outputter dataen ;)

Men er det reelt ikke ligemeget hvis der stripslashes når data hentes igen ?

--
mvh. [x] - www.ionline.dk

Johan Holst Nielsen (14-07-2004)
Kommentar
Fra : Johan Holst Nielsen


Dato : 14-07-04 11:36

[x] wrote:

> Johan Holst Nielsen wrote:
>
>> Du _vil_ få problemer...
>>
>> Hvis du har magic_quotes_on og bruger addslashes og der f.eks. er en '
>> i strengen - så vil du få "\'" i databasen i stedet for "'".
>>
>> Det vil se lidt underligt ud når du outputter dataen ;)
>
> Men er det reelt ikke ligemeget hvis der stripslashes når data hentes
> igen ?

Jo kan du sige - men hvad gør du så - hvis du flytter dataene til et
webhotel med magic_qoutes_gpc = off?

Så vil nye data ikke indeholde \' ... derved (hvis en bruger eller du
skriver) \' vil det blive til ' når det outputtes...

Derfor er det en uholdbar løsning :)

mvh
Johan


[x] (14-07-2004)
Kommentar
Fra : [x]


Dato : 14-07-04 11:46

Johan Holst Nielsen wrote:

> Jo kan du sige - men hvad gør du så - hvis du flytter dataene til et
> webhotel med magic_qoutes_gpc = off?
>
> Så vil nye data ikke indeholde \' ... derved (hvis en bruger eller du
> skriver) \' vil det blive til ' når det outputtes...
>
> Derfor er det en uholdbar løsning :)

Ja, set i et større perspektiv har du jo ret. Selvom jeg pt. ikke har
planer om at flytte webhotel, og dermed er fristet til at gøre det
alligevel, bør jeg nok lade være. Endnu en gang tak.
--
mvh. [x] - www.ionline.dk

[x] (14-07-2004)
Kommentar
Fra : [x]


Dato : 14-07-04 19:44

Johan Holst Nielsen wrote:

> Jo kan du sige - men hvad gør du så - hvis du flytter dataene til et
> webhotel med magic_qoutes_gpc = off?
>
> Så vil nye data ikke indeholde \' ... derved (hvis en bruger eller du
> skriver) \' vil det blive til ' når det outputtes...
>
> Derfor er det en uholdbar løsning :)

Hey igen.

Jeg ahr nu lavet en løsning, som jeg denne gang har testet bedre end de
andre gange har har troet det var ok. Hvis du eller en anden har tid til
at kigge på det, og evt. sige et par ord om det, vil jeg sætte pris på
det. Det jeg tænker på er:

- er der en/flere bedre løsninger end jeg har valgt ?
- er der nogle dårlige vaner jeg allerede nu har, og bør ligge fra mig ?
- er strukturen overskuelig ? (måske mest en personlig vurdering)

....og evt. andre ting i den dur.

Koden kan findes her: www.ionline.dk/usenet/tag_kode.txt

På forhånd tak.
--
mvh. [x] - www.ionline.dk

Johan Holst Nielsen (15-07-2004)
Kommentar
Fra : Johan Holst Nielsen


Dato : 15-07-04 08:29

[x] wrote:
> Johan Holst Nielsen wrote:
>
>> Jo kan du sige - men hvad gør du så - hvis du flytter dataene til et
>> webhotel med magic_qoutes_gpc = off?
>>
>> Så vil nye data ikke indeholde \' ... derved (hvis en bruger eller du
>> skriver) \' vil det blive til ' når det outputtes...
>>
>> Derfor er det en uholdbar løsning :)
>
>
> Hey igen.
>
> Jeg ahr nu lavet en løsning, som jeg denne gang har testet bedre end de
> andre gange har har troet det var ok. Hvis du eller en anden har tid til
> at kigge på det, og evt. sige et par ord om det, vil jeg sætte pris på
> det. Det jeg tænker på er:
>
> - er der en/flere bedre løsninger end jeg har valgt ?
> - er der nogle dårlige vaner jeg allerede nu har, og bør ligge fra mig ?
> - er strukturen overskuelig ? (måske mest en personlig vurdering)
>
> ...og evt. andre ting i den dur.
>
> Koden kan findes her: www.ionline.dk/usenet/tag_kode.txt

Der er nogle småting (sorry jeg først svarer nu :D har slappet lidt af
:D)...

Denne linie:
$tagArr =
array(username=>"$username",website=>"$website",msg=>"$msg",subject=>"$subject");

Du bør skrive:
$tagArr = array("username"=>$username,
"website"=>$website,"msg"=>$msg,"subject"=>$subject);


Dit db_open() og udførelse af SQL'en kan lige så godt ligge _efter_ if
sætningen - og du ikke skriver de samme 5 linier 2 gange.


$tagArr["$k"] = "$v2";
Ingen grund til at smide " rundt om variabler ;)
$tagArr[$k] = $v2; er lige så god - og mindre tegn er brugt.


Er der nogen grund til du bruger en refresh parameter?
header("refresh: 0; $self?l=$l&p=tstatus&t=t_usm");
og ikke
header("Location: $self?l=$l&p=tstatus&t=t_usm");

mvh
Johan


[x] (15-07-2004)
Kommentar
Fra : [x]


Dato : 15-07-04 18:17

Johan Holst Nielsen wrote:

> Der er nogle småting (sorry jeg først svarer nu :D har slappet lidt af
> :D)...

Jamen, det er da helt i orden. Igen grund til stress. Det var jo også
kun hvis der var tid og lyst til det. :) (..og jeg har alligevel også
været ude i kolonihaven så det passer jo meget godt.)

> Denne linie:
> $tagArr =
> array(username=>"$username",website=>"$website",msg=>"$msg",subject=>"$subject");

> Du bør skrive:
> $tagArr = array("username"=>$username,
> "website"=>$website,"msg"=>$msg,"subject"=>$subject);

Okay. Jeg kan i et hvist omfang forstå hvorfor der ikke skal være "" om
variablerne i denne sammenhæng, men ikke helt hvorfor de skal være om
array key i stedet..

> Dit db_open() og udførelse af SQL'en kan lige så godt ligge _efter_ if
> sætningen - og du ikke skriver de samme 5 linier 2 gange.

Ja, nu hvor du siger det, kan jeg godt se det... Jeg ved ikke lige hvad
jeg tænkte på der.

> $tagArr["$k"] = "$v2";
> Ingen grund til at smide " rundt om variabler ;)
> $tagArr[$k] = $v2; er lige så god - og mindre tegn er brugt.

Ja, ved heller ikke lige hvorfor jeg har gjort det der, når det nu ikke
er enoget jeg konsekvent har gjort i denne kode.

> Er der nogen grund til du bruger en refresh parameter?
> header("refresh: 0; $self?l=$l&p=tstatus&t=t_usm");
> og ikke
> header("Location: $self?l=$l&p=tstatus&t=t_usm");

Ikke andre end at de gange jeg har brugt location i stedet for refresh,
har jeg af en eller anden grund ikke kunne få det til at virke. Hvorfor
ved jeg ikke, da jeg formoder at syntaksen vil være den samme. Brugen af
location variationen er vel at foretrække, da refresh "sløver"
afviklingen af siden ? Nu hvor vi alligevel er ved det. Hvad skal der
skrives hvis jeg fra en fil i en given undermappe vil henvise til en
anden fil i en anden undermappe ?

F.eks sådan her:

Aktiv sti:

dir/subdir/fil.ext

ny fil der skal henvises til:

dir2/subdir2/fil2.ext

Jeg kan ikke sige meget andet end mange tak for den tid du indtil vidre
har brugt på at kigge koden igennem og hjælpe mig. Det sætter jeg stor
pris på.

--
mvh. [x] - www.ionline.dk

[x] (15-07-2004)
Kommentar
Fra : [x]


Dato : 15-07-04 22:30

[x] wrote:
> Johan Holst Nielsen wrote:

>> Er der nogen grund til du bruger en refresh parameter?
>> header("refresh: 0; $self?l=$l&p=tstatus&t=t_usm");
>> og ikke
>> header("Location: $self?l=$l&p=tstatus&t=t_usm");
>
>
> Ikke andre end at de gange jeg har brugt location i stedet for refresh,
> har jeg af en eller anden grund ikke kunne få det til at virke. Hvorfor
> ved jeg ikke, da jeg formoder at syntaksen vil være den samme. Brugen af
> location variationen er vel at foretrække, da refresh "sløver"
> afviklingen af siden ? Nu hvor vi alligevel er ved det. Hvad skal der
> skrives hvis jeg fra en fil i en given undermappe vil henvise til en
> anden fil i en anden undermappe ?

Jeg har i mellemtiden fundet ud af at det var pænt dumt at bruge refresh
andre steder på min side. Hvor det gav det ønskede resultat i Firefox,
gav det et, i den forbindelse, temmeligt ubrugeligt i IE. :( Well, nogle
ting skal åbenbart læres på den måde....

--
mvh. [x] - www.ionline.dk

Johan Holst Nielsen (15-07-2004)
Kommentar
Fra : Johan Holst Nielsen


Dato : 15-07-04 22:35

[x] wrote:
> Johan Holst Nielsen wrote:
>
>> Denne linie:
>> $tagArr =
>> array(username=>"$username",website=>"$website",msg=>"$msg",subject=>"$subject");
>
>> Du bør skrive:
>> $tagArr = array("username"=>$username,
>> "website"=>$website,"msg"=>$msg,"subject"=>$subject);
>
> Okay. Jeg kan i et hvist omfang forstå hvorfor der ikke skal være "" om
> variablerne i denne sammenhæng, men ikke helt hvorfor de skal være om
> array key i stedet..

Dine array keys er strenge = der skal " eller ' rundt om dem.
" rundt om blot variabler er overflødige - og er en unødvendig
overbelastning af tastaturet - det er dog reelt intet problem i det -
men jeg foretrækker klart ikke at gøre det - da jeg synes det er en del
mere gennemskueligt.

>> Dit db_open() og udførelse af SQL'en kan lige så godt ligge _efter_ if
>> sætningen - og du ikke skriver de samme 5 linier 2 gange.
>
>
> Ja, nu hvor du siger det, kan jeg godt se det... Jeg ved ikke lige hvad
> jeg tænkte på der.

;)

>> $tagArr["$k"] = "$v2";
>> Ingen grund til at smide " rundt om variabler ;)
>> $tagArr[$k] = $v2; er lige så god - og mindre tegn er brugt.
>
> Ja, ved heller ikke lige hvorfor jeg har gjort det der, når det nu ikke
> er enoget jeg konsekvent har gjort i denne kode.

:D Reelt set er der tale om det samme som beskrevet ovenfor.

>> Er der nogen grund til du bruger en refresh parameter?
>> header("refresh: 0; $self?l=$l&p=tstatus&t=t_usm");
>> og ikke
>> header("Location: $self?l=$l&p=tstatus&t=t_usm");
>
> Ikke andre end at de gange jeg har brugt location i stedet for refresh,
> har jeg af en eller anden grund ikke kunne få det til at virke. Hvorfor
> ved jeg ikke, da jeg formoder at syntaksen vil være den samme. Brugen af
> location variationen er vel at foretrække, da refresh "sløver"
> afviklingen af siden ? Nu hvor vi alligevel er ved det. Hvad skal der
> skrives hvis jeg fra en fil i en given undermappe vil henvise til en
> anden fil i en anden undermappe ?

Altså pr. defination skal du sende en fuldstændig adresse til siden...

Dvs. hvis du skal henvise fra http://foo.bar/test1.php til
http://foo.bar/test2.php

Så skal du reelt skrive <?php header("Location:
http://foo.bar/test2.php"); ?>

Dog vil de i de fleste tilfælde (læs - har aldrig set en browser der
ikke forstår det) virke med <?php header("Location: ./test2.php"); ?>

> F.eks sådan her:
>
> Aktiv sti:
>
> dir/subdir/fil.ext
>
> ny fil der skal henvises til:
>
> dir2/subdir2/fil2.ext

Den aktive sti? Nu skal jeg lige forstå - det vil sige det drejer sig om
http://foo.bar/dir/subdir/fil.ext eks?

I så fald skal du i fil.ext (som i dette tilfælde vil hedde .php) skrive:

<?php
header("Location: http://dit.domaine.dk/dir2/subdir2/fil2.ext");
exit();
?>

exit(); forhindrer eventuelt kode som er indsat nedenunder for _ikke_ at
blive ekskveret.

Ovenstår skal virke - hvis den står aller øverst i filen. (Ikke engang
mellemrum eller ny linie må der være før <?php).

> Jeg kan ikke sige meget andet end mange tak for den tid du indtil vidre
> har brugt på at kigge koden igennem og hjælpe mig. Det sætter jeg stor
> pris på.

Det var så lidt :)

mvh
Johan

[x] (15-07-2004)
Kommentar
Fra : [x]


Dato : 15-07-04 23:01

Johan Holst Nielsen wrote:

> Den aktive sti? Nu skal jeg lige forstå - det vil sige det drejer sig om
> http://foo.bar/dir/subdir/fil.ext eks?
>
> I så fald skal du i fil.ext (som i dette tilfælde vil hedde .php) skrive:
>
> <?php
> header("Location: http://dit.domaine.dk/dir2/subdir2/fil2.ext");
> exit();
> ?>
>
> exit(); forhindrer eventuelt kode som er indsat nedenunder for _ikke_ at
> blive ekskveret.
>
> Ovenstår skal virke - hvis den står aller øverst i filen. (Ikke engang
> mellemrum eller ny linie må der være før <?php).

Okay, så er jeg med på den. Hvad hvis det er med include eller require ?
Skal det ligeledes være den fuldstændige sti ?

--
mvh. [x] - www.ionline.dk

Johan Holst Nielsen (15-07-2004)
Kommentar
Fra : Johan Holst Nielsen


Dato : 15-07-04 23:08

[x] wrote:
> Johan Holst Nielsen wrote:
>
> Okay, så er jeg med på den. Hvad hvis det er med include eller require ?
> Skal det ligeledes være den fuldstændige sti ?

Nej - include og require kan du både inkludere via den absolutte sti
(/et/eller/andet/mappe/fil.php) eller den relative (../../mappe/fil.php).

I visse tilfælde kan du også inkludere via f.eks. http
(http://anden.server.foo/fil.php) - men her vil PHP'en være parset - så
det er reelt det samme som at hente et HTML dokument fra siden.

For mere info om require/include er der glimerende eksempler og
forklaring på php.net
http://dk.php.net/include/

mvh
Johan

[x] (15-07-2004)
Kommentar
Fra : [x]


Dato : 15-07-04 23:16

Johan Holst Nielsen wrote:

> Nej - include og require kan du både inkludere via den absolutte sti
> (/et/eller/andet/mappe/fil.php) eller den relative (../../mappe/fil.php).
>
> I visse tilfælde kan du også inkludere via f.eks. http
> (http://anden.server.foo/fil.php) - men her vil PHP'en være parset - så
> det er reelt det samme som at hente et HTML dokument fra siden.
>
> For mere info om require/include er der glimerende eksempler og
> forklaring på php.net
> http://dk.php.net/include/

Jeg takker atter :)

--
mvh. [x] - www.ionline.dk

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste