/ 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
hvornår skal der slashes?
Fra : Thomas Jensen


Dato : 25-09-02 20:01

Hej,

Er ved at lave et lille nyhedssystem vha php og mysql.
Jeg kan tilføje, opdatere og slette og virker ok, men hvordan får jeg
formetteringen til at virke?

fx liniebreak.

Hvornår skal jeg (hvis jeg skal) tilføje add slashes og nl2br etc?
skal det gøres før jeg smider det over i mysql eller hvordan og skal der
konverteres tilbage igen når nyheden skal vises?

I må meget gerne skære det ud i pap, da jeg er lidt newbie i dette her.

Mvh
Thomas



 
 
Ukendt (25-09-2002)
Kommentar
Fra : Ukendt


Dato : 25-09-02 20:22

On Wed, 25 Sep 2002 21:01:07 +0200, "Thomas Jensen"
<cobra3011@hotmail.com> wrote:

>Hej,
>
>Er ved at lave et lille nyhedssystem vha php og mysql.
>Jeg kan tilføje, opdatere og slette og virker ok, men hvordan får jeg
>formetteringen til at virke?
>
>fx liniebreak.
>
>Hvornår skal jeg (hvis jeg skal) tilføje add slashes og nl2br etc?
>skal det gøres før jeg smider det over i mysql eller hvordan og skal der
>konverteres tilbage igen når nyheden skal vises?
>
>I må meget gerne skære det ud i pap, da jeg er lidt newbie i dette her.
>
>Mvh
>Thomas
>

en god regel er at hvor en bruger kan skrive hvad han lyster (fx
textarea og diverse input bokse) - Så skal man bruge addslashes() når
man smider det ind i databasen ...

fx
$sql = "INSERT INTO blabla VALUES('addslashes($var)')";
$sql = mysql_query($sql) OR DIE (mysql_error());

stripslashes() bruges så når du smider det ud til brugeren igen

fx.
Her er sørme den tekst ole Pedersen fra \"Sønderbørge\" skrev
sådan ville det se ud hvis du ikke brugte stripslashes()
og sådanne ser det ud efter
Her er sørme den tekst ole Pedersen fra "Sønderbørge" skrev


Så er der nl2br

Den skal du også bruge når du smider den ind i databasen

fx
$sql = "INSERT INTO blabla VALUES('nl2br($var)')";
$sql = mysql_query($sql) OR DIE (mysql_error());

Håber det var nok til at forstå det ... MEN ellers så næste gang, så
prøv at slå op i manualen ... så ka du læse dig til det

Niels Andersen (25-09-2002)
Kommentar
Fra : Niels Andersen


Dato : 25-09-02 21:09

-Martin- <martin_aarhof(AT)hotmail.com> wrote in
<bt24pucd2evsb3lpv7emb6qdlifl78ore9@4ax.com>:
> stripslashes() bruges så når du smider det ud til brugeren igen

Nej! Stripslashes skal du aldrig bruge!

Det er kun hvis addslashes køres ved en fejl. Fx. at PHP kører addslashes
automatisk, og du så selv køre det igen bagefter.

> Så er der nl2br
> Den skal du også bruge når du smider den ind i databasen

Det kan man gøre. Jeg foretrækker at gøre det når jeg trækker data ud.

Det er et generelt princip, jeg vil gerne have at formatet i databasen er så
generelt som muligt. Det kunne jo fx. være, at jeg ville sende teksten pr.
email, eller hvad ved jeg.

--
Mvh.

Niels Andersen
(la nels. anersyn.)

Kim Emax - ayianapa.~ (30-09-2002)
Kommentar
Fra : Kim Emax - ayianapa.~


Dato : 30-09-02 12:59


"Niels Andersen" <niels-usenet@myplace.dk> skrev

> Det kan man gøre. Jeg foretrækker at gøre det når jeg trækker data ud.
>
> Det er et generelt princip, jeg vil gerne have at formatet i databasen er

> generelt som muligt. Det kunne jo fx. være, at jeg ville sende teksten pr.
> email, eller hvad ved jeg.

well, det afhænger af om du har magic quotes slået til

--
Take Care
Kim Emax - Freelance programmør - Pt. Job og opgavesøgende.
http://www.emax.dk - http://www.ayianapa.dk
Køb din vin online på http://www.gmvin.dk,
Danmarks måske mest avancerede VinWebShop



Niels Andersen (30-09-2002)
Kommentar
Fra : Niels Andersen


Dato : 30-09-02 13:17

Kim Emax - ayianapa.dk wrote in
<u%Wl9.57702$Qk5.2244812@news010.worldonline.dk>:
>> Det kan man gøre. Jeg foretrækker at gøre det når jeg trækker data ud.
>> Det er et generelt princip, jeg vil gerne have at formatet i databasen er
>> så generelt som muligt. Det kunne jo fx. være, at jeg ville sende teksten
>> pr. email, eller hvad ved jeg.
>
> well, det afhænger af om du har magic quotes slået til

Hvad i alverden har det med magic quotes at gøre?

Jeg foretrækker data i databasen på så simpelt et niveau, som muligt.
Indeholder teksten ikke mere, end hvad plaintext kan byde på, ser jeg ingen
grund til at lagre det i html-format.

--
Mvh.

Niels Andersen
(la nels. anersyn.)

Kim Emax - ayianapa.~ (30-09-2002)
Kommentar
Fra : Kim Emax - ayianapa.~


Dato : 30-09-02 13:42


"Niels Andersen" <niels-usenet@myplace.dk> skrev

> Hvad i alverden har det med magic quotes at gøre?

Sorry, jeg tænkte tanken at man smed addslashes() efter data til databasen,
så der røg slashes med i databasen. Det var ikke det du skrev...

> Jeg foretrækker data i databasen på så simpelt et niveau, som muligt.
> Indeholder teksten ikke mere, end hvad plaintext kan byde på, ser jeg
ingen
> grund til at lagre det i html-format.

Jeg er helt enig.

--
Take Care
Kim Emax - Freelance programmør - Pt. Job og opgavesøgende.
http://www.emax.dk - http://www.ayianapa.dk
Køb din vin online på http://www.gmvin.dk,
Danmarks måske mest avancerede VinWebShop





Martin Seebach (25-09-2002)
Kommentar
Fra : Martin Seebach


Dato : 25-09-02 21:13


"-Martin-" <martin_aarhof(AT)hotmail.com> wrote in message
news:bt24pucd2evsb3lpv7emb6qdlifl78ore9@4ax.com...

> en god regel er at hvor en bruger kan skrive hvad han lyster (fx
> textarea og diverse input bokse) - Så skal man bruge addslashes() når
> man smider det ind i databasen ...
......
> stripslashes() bruges så når du smider det ud til brugeren igen

Jep. Hold den regel i baghovedet.. ALT tekst skal addslashes ÉN gang før det
kommer i db og stripslashes ÉN gang efter det er kommet ud.. Har siddet
nogle gange og ryddet op i kode (tror det var phPay nogle steder hvor der
var forvirring) hvor man ikke har helt styr på det.


--
Venlig hilsen
Martin Seebach
- min email adresse virker..



Niels Andersen (25-09-2002)
Kommentar
Fra : Niels Andersen


Dato : 25-09-02 21:20

Martin Seebach wrote in <3d921926$0$70236$edfadb0f@dspool01.news.tele.dk>:
>> stripslashes() bruges så når du smider det ud til brugeren igen
> Jep. Hold den regel i baghovedet.. ALT tekst skal addslashes ÉN gang før
> det kommer i db og stripslashes ÉN gang efter det er kommet ud.. Har
> siddet nogle gange og ryddet op i kode (tror det var phPay nogle steder
> hvor der var forvirring) hvor man ikke har helt styr på det.

Den har sikkert forventet at magic-quotes var slået fra, hvilket den nok
ikke har været.
Magic-quotes forsøger at gætte hvornår der skal slashes på. Hvis man ikke er
klar over dette, og også selv kører add-slashes, så skal der fjernes
slashes igen efter udtræk fra databasen.

I gamle versioner af PHP er funktionen slået til i default opsætning, da man
mente det var brugervenligt for newbies.
Man har senere fundet ud af at det forvirer mere end det gavner, og er
ganske skadeligt for sikkerheden. Derfor er det nu slået fra i default
opsætning.

--
Mvh.

Niels Andersen
(la nels. anersyn.)

Martin Seebach (25-09-2002)
Kommentar
Fra : Martin Seebach


Dato : 25-09-02 21:32


"Niels Andersen" <niels-usenet@myplace.dk> wrote in message
news:sUok9.29505$Qk5.1323057@news010.worldonline.dk...

> Den har sikkert forventet at magic-quotes var slået fra, hvilket den nok
> ikke har været.
> Magic-quotes forsøger at gætte hvornår der skal slashes på. Hvis man ikke
er
> klar over dette, og også selv kører add-slashes, så skal der fjernes
> slashes igen efter udtræk fra databasen.
>
> I gamle versioner af PHP er funktionen slået til i default opsætning, da
man
> mente det var brugervenligt for newbies.
> Man har senere fundet ud af at det forvirer mere end det gavner, og er
> ganske skadeligt for sikkerheden. Derfor er det nu slået fra i default
> opsætning.

Manden har jo ret.. Det forklarer en del



Peter Brodersen (25-09-2002)
Kommentar
Fra : Peter Brodersen


Dato : 25-09-02 21:40

On Wed, 25 Sep 2002 22:12:51 +0200, "Martin Seebach"
<martin-nospam@g-bach.dk> wrote:

>ALT tekst skal addslashes ÉN gang før det
>kommer i db og stripslashes ÉN gang efter det er kommet ud..

Nej, det skal ikke stripslashes'es, når det kommer ud af databasen. De
ekstra slashes er blot for at få hældt dataen ordentlig i, udelukkende
af hensyn til ens SQL-query, idet værdien optræder i query'en.

Dataen bliver ikke gemt i databasen "med slashes", de bliver blot
brugt til at få snørklet dataen ind.

--
- Peter Brodersen

Michael Hansen (25-09-2002)
Kommentar
Fra : Michael Hansen


Dato : 25-09-02 21:00

Hejsa !

<SNIP>
>
> Hvornår skal jeg (hvis jeg skal) tilføje add slashes og nl2br etc?
> skal det gøres før jeg smider det over i mysql eller hvordan og skal der
> konverteres tilbage igen når nyheden skal vises?
>
Eftersom du bruger mySQL til at gemme user inputs i, så vil jeg nok anbefale
at du slasher alt tekst fra brugeren. Ellers kan brugeren i værste fald
slette fra databasen !!!
nl2br kan med fordel bruges efter du har fjernet slashes fra db-udtrækket.

--
Mvh
Michael Hansen



Finn Nielsen (26-09-2002)
Kommentar
Fra : Finn Nielsen


Dato : 26-09-02 06:31

"Thomas Jensen" <cobra3011@hotmail.com> writes:

> Hvornår skal jeg (hvis jeg skal) tilføje add slashes og nl2br etc?

Nu har du fået besvaret hvornår du skal køre addslashes(). Men jeg vil
lige komme med en lille note:

Det er forskelligt hvad de forskellige databaser accepterer, så når du
smider ting i en database er det god kodestil at bruge den database
specifikke escape function (hvis der er en) på data istedet for
addslashes().

Dvs. hælder du ting i MySQL så bør du bruge mysql_escape_string() istedet
for addslashes(), bruger du PostgreSQL er det pg_escape_string().

--
Finn Nielsen - http://www.finnnielsen.dk/

Thomas Jensen (26-09-2002)
Kommentar
Fra : Thomas Jensen


Dato : 26-09-02 08:36

Herunder er hvad jeg bruger som tilføj:

<?

if($add_question)
{
include("dbinfo.inc.php");
mysql_connect($localhost,$username,$password)or die (mysql_error());
mysql_select_db($database) or die (mysql_error());

$new_tekst = addslashes(nl2br(htmlspecialchars($tekst)));

$query = mysql_query("INSERT INTO riber (overskrift, besvaret, resume,
tekst)" . "VALUES ('$overskrift','$besvaret','$resume','$new_tekst')");
//husk at checke komma og punktum//
echo "Din nyhed er tilføjet. Tilføj flere eller vis dine nyheder <a
href=\"index.php\">her.</a>";
}
?>
men min update del ser mærkelig ud:
<TEXTAREA NAME="tekst" ROWS=10 COLS=23><? echo stripslashes($myrow["tekst"])
?></TEXTAREA>

her får jeg alle liniebreak til at se sådan ud:
<BR /> (med mellemrum og med slash). Kan det lade sig gøre at hente dataene
udfra MySQL hvor der ikke står html koderne, men bare teksten som jeg skal
opdatere?
mvh
Thomas



Larz (26-09-2002)
Kommentar
Fra : Larz


Dato : 26-09-02 08:39

Thomas Jensen wrote:
> Herunder er hvad jeg bruger som tilføj:
> $new_tekst = addslashes(nl2br(htmlspecialchars($tekst)));
> men min update del ser mærkelig ud:
> <TEXTAREA NAME="tekst" ROWS=10 COLS=23><? echo stripslashes($myrow["tekst"])
> ?></TEXTAREA>
>
> her får jeg alle liniebreak til at se sådan ud:
> <BR /> (med mellemrum og med slash). Kan det lade sig gøre at hente dataene
> udfra MySQL hvor der ikke står html koderne, men bare teksten som jeg skal
> opdatere?

Ja, lad være med at gemme html koderne eller lav søg/erstat med
str_replace, preg_replace eller ereg_replace.

--
-
Lars
http://coder.dk/sohofaq.php - Uofficiel WOL SOHO 77 FAQ
To mail me remove your pants.


Niels Andersen (26-09-2002)
Kommentar
Fra : Niels Andersen


Dato : 26-09-02 08:42

Thomas Jensen wrote in <3d92b8cd$0$18123$edfadb0f@dspool01.news.tele.dk>:
> $new_tekst = addslashes(nl2br(htmlspecialchars($tekst)));

Jeg ville ikke køre nl2br og htmlspecialchars mens data puttes ind i
databasen. Jeg forklarede noget om det i går (kan dog ikke huske om det var
i din tråd), og du kommer her med et glimrende eksempel.

> men min update del ser mærkelig ud:
> <TEXTAREA NAME="tekst" ROWS=10 COLS=23><? echo
> stripslashes($myrow["tekst"]) ?></TEXTAREA>

Som vi vist fik slået grundigt fast i går, skal stripslashes aldrig bruges.
Hvis den overhovedet gør noget, så skjuler den bare en fejl, eller fjerner
backslashes som skal være der.

> her får jeg alle liniebreak til at se sådan ud:
> <BR /> (med mellemrum og med slash). Kan det lade sig gøre at hente
> dataene udfra MySQL hvor der ikke står html koderne, men bare teksten som
> jeg skal opdatere?

Ja, lad være med at putte html-koderne i databasen.

Du kan selvfølgelig også køre en masse søg-og-erstat, som gør det modsatte
af nl2br og htmlspecialchars. Men det er en ups-løsning, ligesom
strip-slashes.

--
Mvh.

Niels Andersen
(la nels. anersyn.)

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

Månedens bedste
Årets bedste
Sidste års bedste