|
| 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
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
--
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.)
| |
|
|