Avatar billede mpj86 Nybegynder
09. juni 2003 - 19:54 Der er 18 kommentarer og
1 løsning

Txt til db via form?

Hej

Hvis jeg sætter noget txt ind i db'en via en form bør jeg så bruge:

$post_navn = mysql_escape_string($_POST['navn']);

Eller er det nok med: $navn = $_POST['navn']
Avatar billede ahv Nybegynder
09. juni 2003 - 19:56 #1
Hvis du mener med sikkerhed bør du nok lave sådan her:

$_POST['navn'] = addslashes($_POST['navn']);
Avatar billede ahv Nybegynder
09. juni 2003 - 19:56 #2
også når du skal bruge det igen stripslaches($str);
Avatar billede ahv Nybegynder
09. juni 2003 - 19:57 #3
Hvis du også ønsker at komme af med html-tags:

$_POST['navn'] = ereg_replace("<([^>]+)>", "", $_POST['navn']);
Avatar billede mpj86 Nybegynder
09. juni 2003 - 19:57 #4
Ja jeg mener med sikkerhed.

Hvad bruger man mysql_escape_string($_POST['navn']) til?
Avatar billede ahv Nybegynder
09. juni 2003 - 19:58 #5
Den har jeg ikke set før, slå den op på www.mysql.com
Avatar billede mpj86 Nybegynder
09. juni 2003 - 20:00 #6
Skal jeg bruge stripslaches($str) til når jeg skal udskrive?

sådan?

echo stripslaches($navn);
Avatar billede ahv Nybegynder
09. juni 2003 - 20:00 #7
$_POST['navn'] = addslashes($_POST['navn']);
$_POST['navn'] = ereg_replace("<([^>]+)>", "", $_POST['navn']);

Det skulle være nok.
Avatar billede mpj86 Nybegynder
09. juni 2003 - 20:00 #8
Hvad sker der hvis jeg ikke bruger addslashes($_POST['navn']) og kun bruger $navn?
Avatar billede ahv Nybegynder
09. juni 2003 - 20:01 #9
Så lægger du bare $_POST['navn'] overi variablen $navn
Avatar billede ahv Nybegynder
09. juni 2003 - 20:02 #10
addslaches tilføjer en \ (backslaches) til ' hvilket gør at den tekst man poster ikke ville kunne udføre SQL kommandoer.
Avatar billede mpj86 Nybegynder
09. juni 2003 - 20:06 #11
Altså jeg skal gøre sådan?

<?php
$navn = addslashes($_POST['navn']);
mysql_query("INSERT INTO table (navn) VALUES ('$navn')");
?>
<form method="POST" action="<? $_SERVER['PHP_SELF'] ?>">
<input type="text" name="navn" size="20"> <input type="submit" value="Skriv">
</form>
Avatar billede mpj86 Nybegynder
09. juni 2003 - 20:09 #12
Og når jeg skal udskrive det skal det så se sådan ud??

$query=mysql_query("SELECT * FROM table ORDER BY id DESC");
while($row = mysql_fetch_array($query)) {
    echo $row['navn'];
}
Avatar billede ahv Nybegynder
09. juni 2003 - 20:12 #13
$query=mysql_query("SELECT * FROM table ORDER BY id DESC");
while($row = mysql_fetch_array($query)) {
    echo stripslashes($row['navn']);
}
Avatar billede mpj86 Nybegynder
09. juni 2003 - 20:13 #14
Og med de 2 eks. som jeg kom med er sikkere nok?

Skal jeg også bruge addslashes($_POST['navn']) til UPDATE ?
Avatar billede ahv Nybegynder
09. juni 2003 - 20:20 #15
Du skal bruge det alle de steder du vil tro at folk kan skrive sql kommandoer, hvilket de også kan når de opdatere deres tekst.
Avatar billede mpj86 Nybegynder
09. juni 2003 - 20:22 #16
De steder hvor jeg kun kan skrive så er det vel nok med $_POST['navn'] ?

Og de steder hvor alle kan skrive skal jeg vel bruge addslashes($_POST['navn']) ?
Avatar billede ahv Nybegynder
09. juni 2003 - 20:23 #17
Ja, som sagt alle steder hvor du tror det kan blive misbrugt og der skrives sql kommandoer skal du have det.
Avatar billede mpj86 Nybegynder
09. juni 2003 - 20:27 #18
takker
Avatar billede tipsen Nybegynder
09. juni 2003 - 20:58 #19
Se: http://dk.php.net/manual/en/function.mysql-real-escape-string.php

Dit eget forslag med mysql_escape_string() var fint nok, men ovennævnte variant er en anelse bedre, da den også tager forbehold for sprog-variationer. En løsning med add- og stripslashes er dog også udmærket til formålet.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester