/ 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
stripslashes ?? (newbie)
Fra : Thomas Jensen


Dato : 19-08-02 00:01

Hej,

havd er der galt med flg:

<TEXTAREA NAME="tekst" ROWS=10 COLS=23><? echo stripslashes($myrow["tekst"])
?></TEXTAREA>

burde den ikke fjerne slashes??

skal bruges i forbindelse med en update af mysql data.

Til at smide slashes på bruger jeg :
$new_tekst = addslashes(nl2br(htmlspecialchars($tekst)));

Thomas



 
 
Niels Andersen (19-08-2002)
Kommentar
Fra : Niels Andersen


Dato : 19-08-02 06:25

Thomas Jensen wrote in <ajp8uu$fuv$1@sunsite.dk>:
> havd er der galt med flg:
> <TEXTAREA NAME="tekst" ROWS=10 COLS=23><? echo
> stripslashes($myrow["tekst"]) ?></TEXTAREA>

Når data hives ud af databasen fjernes slashes automatisk, så det behøver du
ikke tænke på.
Der imod er det et godt sted at køre htmlspecialchars() og nl2br().

> burde den ikke fjerne slashes??

Jo, men måske er der puttet slashes på to gange?
Har du prøvet at fjerne stripslashes() for at tjekke det?

> Til at smide slashes på bruger jeg :
> $new_tekst = addslashes(nl2br(htmlspecialchars($tekst)));

Du kan godt køre htmlspecialchars og nl2br her, men jeg vil ikke anbefale
det. Det er noget værre rod.

Men det, du er ude i, er måske at PHP automatisk sætter slashes på. Det er
en møg-irriterende feature, som hedder magic_quotes. Når den feature er
slået til vil PHP automatisk køre addslashes() på alt hvad der kommer fra
browseren, dvs. GET, POST og cookie-data.

Du kan enten slå den feature fra, eller lave et hulens arbejde for at køre
addslashes når PHP ikke gør det, og lade være når PHP gør.

--
Mvh.

Niels Andersen
(la nels. anersyn.)

Johan Holst Nielsen (19-08-2002)
Kommentar
Fra : Johan Holst Nielsen


Dato : 19-08-02 07:49

>>havd er der galt med flg:
>><TEXTAREA NAME="tekst" ROWS=10 COLS=23><? echo
>>stripslashes($myrow["tekst"]) ?></TEXTAREA>
>
>
> Der imod er det et godt sted at køre htmlspecialchars() og nl2br().

Da ikke når det smides i et Textarea! Så mener jeg ikke der bør køres en
nl2br? det er vel ikke meningen at der skal stå f.eks.
Hej,<br>mit navn er Johan
Men derimod
Hej,
mit navn er Johan

??

>>Til at smide slashes på bruger jeg :
>>$new_tekst = addslashes(nl2br(htmlspecialchars($tekst)));
>
>
> Du kan godt køre htmlspecialchars og nl2br her, men jeg vil ikke anbefale
> det. Det er noget værre rod.
>

Hmmm, andet på hvad det skal bruges til? Ved f.eks. CMS eller vil jeg
mene det er en fordel at lave en nl2br med det samme, da det ellers skal
gøres hver gang det hentes ud af databasen...

mvh
Johan


Niels Andersen (19-08-2002)
Kommentar
Fra : Niels Andersen


Dato : 19-08-02 09:51

Johan Holst Nielsen wrote in <3D6094E4.8010701@weknowthewayout.com>:
>>> havd er der galt med flg:
>>> <TEXTAREA NAME="tekst" ROWS=10 COLS=23><? echo
>>> stripslashes($myrow["tekst"]) ?></TEXTAREA>
>> Der imod er det et godt sted at køre htmlspecialchars() og nl2br().
> Da ikke når det smides i et Textarea! Så mener jeg ikke der bør køres en
> nl2br?

Det har du da egentlig ret i.
Well, det viser jo bare at det bør gøres når man viser data (hvis det skal
gøres), og ikke når man putter det i databasen.

>>>Til at smide slashes på bruger jeg :
>>>$new_tekst = addslashes(nl2br(htmlspecialchars($tekst)));
>> Du kan godt køre htmlspecialchars og nl2br her, men jeg vil ikke anbefale
>> det. Det er noget værre rod.
> Hmmm, andet på hvad det skal bruges til? Ved f.eks. CMS eller vil jeg
> mene det er en fordel at lave en nl2br med det samme, da det ellers skal
> gøres hver gang det hentes ud af databasen...

Well, nogle gange må man gå på kompromis. Nogle gange vil noget rod ét sted
give fordele et andet sted.

Hvad lageret angår bør formatering foregå når data skal vises, lageret skal
være så "råt" som muligt.
Spørgsmålet er så, om man vil ofre et pænt lager (som jo kan spare *mange*
bekymringer senere), for lidt performance. Normalt er den smule performance
forskel fuldstændig ligegyldig.

--
Mvh.

Niels Andersen
(la nels. anersyn.)

Johan Holst Nielsen (19-08-2002)
Kommentar
Fra : Johan Holst Nielsen


Dato : 19-08-02 09:54

>>>>Til at smide slashes på bruger jeg :
>>>>$new_tekst = addslashes(nl2br(htmlspecialchars($tekst)));
>>>
>>>Du kan godt køre htmlspecialchars og nl2br her, men jeg vil ikke anbefale
>>>det. Det er noget værre rod.
>>
>>Hmmm, andet på hvad det skal bruges til? Ved f.eks. CMS eller vil jeg
>>mene det er en fordel at lave en nl2br med det samme, da det ellers skal
>>gøres hver gang det hentes ud af databasen...
>
>
> Well, nogle gange må man gå på kompromis. Nogle gange vil noget rod ét sted
> give fordele et andet sted.

Enig...

> Hvad lageret angår bør formatering foregå når data skal vises, lageret skal
> være så "råt" som muligt.
> Spørgsmålet er så, om man vil ofre et pænt lager (som jo kan spare *mange*
> bekymringer senere), for lidt performance. Normalt er den smule performance
> forskel fuldstændig ligegyldig.

Problemet ligger mere i når der f.eks. kommer mere reg exp. ind i
billedet... dette kunne f.eks. være farvegørelse af visse tekster osv.
Så kan man pludselig komme ud for siden bliver langsom at loade pga. den
skal igennem en del reg. exp.

Jeg er enig i at der i dette tilfælde, hvor der reelt bare er tale om en
simpel replace, bør man nok beholde den rå data. Men rent
fremtidsmæssigt i en applikation vil jeg ikke mene det er den bedste
løsning. Så hellere bruge noget ekstra serverkraft på indsætningen af
teksten, samt eventuelt udtræk af denne.

Hvis man er ret sikker på der ikke kommer andet end en enkelt eller 2
replaces, kan det være en fordel af beholde den rå data :)

mvh
Johan



Niels Andersen (19-08-2002)
Kommentar
Fra : Niels Andersen


Dato : 19-08-02 10:07

Johan Holst Nielsen wrote in <3D60B21C.4010807@weknowthewayout.com>:
>> Spørgsmålet er så, om man vil ofre et pænt lager (som jo kan spare
>> *mange* bekymringer senere), for lidt performance. Normalt er den smule
>> performance forskel fuldstændig ligegyldig.
> Problemet ligger mere i når der f.eks. kommer mere reg exp. ind i
> billedet... dette kunne f.eks. være farvegørelse af visse tekster osv.
> Så kan man pludselig komme ud for siden bliver langsom at loade pga. den
> skal igennem en del reg. exp.

Så ville jeg nok stadig beholde rå data, og lave en cache.

Det plejer jeg i hvert fald at gøre.

--
Mvh.

Niels Andersen
(la nels. anersyn.)

Peter Brodersen (19-08-2002)
Kommentar
Fra : Peter Brodersen


Dato : 19-08-02 11:32

On Mon, 19 Aug 2002 10:53:48 +0200, Johan Holst Nielsen
<johan@weknowthewayout.com> wrote:

>Problemet ligger mere i når der f.eks. kommer mere reg exp. ind i
>billedet... dette kunne f.eks. være farvegørelse af visse tekster osv.
>Så kan man pludselig komme ud for siden bliver langsom at loade pga. den
>skal igennem en del reg. exp.

Må jeg spørge om det er et problem, du har oplevet i praksis? Vel er
regulære udtryk tunge i forhold til fx en str_replace(), men
medmindre, man sjofler med sit udtryk, har jeg stadigvæk til gode at
opleve, at det er det regulære udtryk, der har gjort forskellen i
hastighed/belastning for hvad, der gør en afvikling tung.

--
- Peter Brodersen

Johan Holst Nielsen (19-08-2002)
Kommentar
Fra : Johan Holst Nielsen


Dato : 19-08-02 11:57

>>Problemet ligger mere i når der f.eks. kommer mere reg exp. ind i
>>billedet... dette kunne f.eks. være farvegørelse af visse tekster osv.
>>Så kan man pludselig komme ud for siden bliver langsom at loade pga. den
>>skal igennem en del reg. exp.
>
>
> Må jeg spørge om det er et problem, du har oplevet i praksis? Vel er
> regulære udtryk tunge i forhold til fx en str_replace(), men
> medmindre, man sjofler med sit udtryk, har jeg stadigvæk til gode at
> opleve, at det er det regulære udtryk, der har gjort forskellen i
> hastighed/belastning for hvad, der gør en afvikling tung.

Ja, jeg havde en data der blev hentet ud omkring 1500+ gang pr. minut...
og der gav det en del bedre perfermance lav reg. exp. da det blev sat
ind end da det blev hentet ud.

Okay, det her er måske lidt overkill at begynde med en argumentation
hvis her snakkes om 10-20 gange pr. minut... men det var mere det
teoretiske aspekt frem for det praktiske jeg gerne ville ind på.

Det der gør problemstillingen lidt svær efter min mening er rå data vs.
serverkraft. Jeg foretrækker, ligesom Niels, også at gemme datane så rå
som muligt. Men tit er det således at dataene formatteres på samme måde
når de hentes ud... undtaget få gang.

I tilfælde hvor der er mange forskellige måder at formatere data ville
jeg hellere gå ind på noget XML med et XLST... da det giver mere
fleksibilitet...

Men du påstår vel ikke at det er tungere at køre et reg. exp. end blot
at hente dataene? Spørgsmålet er hvor mange gange dette skal køre. Altså
om flaskehalsen ligger på ekskveringen af scriptet (mange besøgende)
eller ved dataene bliver sendt til brugeren.

mvh
Johan


Peter Brodersen (19-08-2002)
Kommentar
Fra : Peter Brodersen


Dato : 19-08-02 11:30

On Mon, 19 Aug 2002 08:49:08 +0200, Johan Holst Nielsen
<johan@weknowthewayout.com> wrote:

>> Der imod er det et godt sted at køre htmlspecialchars() og nl2br().
>Da ikke når det smides i et Textarea! Så mener jeg ikke der bør køres en
>nl2br?

Korrekt. htmlspecialchars() bør man dog smide, selvom ting plejer at
virke i lige præcis et textarea uden den (medmindre der lige præcis
indsættes "</textarea>").

>Hmmm, andet på hvad det skal bruges til? Ved f.eks. CMS eller vil jeg
>mene det er en fordel at lave en nl2br med det samme, da det ellers skal
>gøres hver gang det hentes ud af databasen...

Du får det til at lyde som om, det er et problem at lave en nl2br()
hver gang, det skal outputtes som HTML. Relateret til hvor lang tid,
det fx tager at starte et apache-child op i forhold til at lave en
nl2br(), så er det nærmest teoretisk.

--
- Peter Brodersen

Johan Holst Nielsen (19-08-2002)
Kommentar
Fra : Johan Holst Nielsen


Dato : 19-08-02 11:51

>>Hmmm, andet på hvad det skal bruges til? Ved f.eks. CMS eller vil jeg
>>mene det er en fordel at lave en nl2br med det samme, da det ellers skal
>>gøres hver gang det hentes ud af databasen...
>
>
> Du får det til at lyde som om, det er et problem at lave en nl2br()
> hver gang, det skal outputtes som HTML. Relateret til hvor lang tid,
> det fx tager at starte et apache-child op i forhold til at lave en
> nl2br(), så er det nærmest teoretisk.

Yep... som sagt, så forklaring følger lidt længere nede ;)

mvh
Johan


Søg
Reklame
Statistik
Spørgsmål : 177520
Tips : 31968
Nyheder : 719565
Indlæg : 6408659
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste