Avatar billede ofirpeter Nybegynder
21. december 2003 - 19:41 Der er 17 kommentarer og
1 løsning

Undgå / når der skrives til SQL

Jeg har lavet en simpel gæstebog. Men har det problem, at når jeg skrivet et " ' " til SQL så omdanner den det til " \' " Hvordan kan jeg undgå dette?

Jeg bruger følgende kode når jeg skrive til databasen:

<?php
if(isset($_REQUEST['submit'])) {
require("conn.php");

$indleg = $_REQUEST["indleg"];
$upbruger = $_SESSION["user"];
$dato_streng = date("j-m-Y G:i:s");


$indleg = strip_tags($indleg, '<a><b><i><u>');
$indleg = nl2br($indleg);
$indleg = addslashes($indleg);


$insertSQL = "insert into 9bgastebog (indleg, upbruger, dato)
            values ('$indleg', '$upbruger', '$dato_streng')";
echo "<script>document.location='gastebog.php';</script>";
mysql_query($insertSQL);
}
?>
Avatar billede squashguy Nybegynder
21. december 2003 - 19:47 #1
http://dk2.php.net/get_magic_quotes_gpc giver dig sikkert forklaringen.

Mht til den måde du laver redirect på, ville jeg nok bruge

header("location: gastebog.php");
Avatar billede erikjacobsen Ekspert
21. december 2003 - 19:47 #2
Drop linien
$indleg = addslashes($indleg);
for det gør din php allerede for dig
Avatar billede ofirpeter Nybegynder
21. december 2003 - 19:54 #3
Jeg kan desvæære ikke benytte header("location: gastebog.php"); da jeg udskriver en header i en session.
Hmm hvordan kommer jeg uden om at den skriver \' kan ikke helt gennemskue det ved at kigge på linien?

erikjacobsen - Den er væk :-) Tak
Avatar billede ofirpeter Nybegynder
21. december 2003 - 20:34 #4
Jeg har prøvet forskelligt men stadig uden held.
Avatar billede erikjacobsen Ekspert
21. december 2003 - 21:13 #5
fik du fjernet de \'-ere. Der er jo ikke væk i eksisterende indlæg - kun nye
Avatar billede Slettet bruger
21. december 2003 - 23:16 #6
Bruger du stripslashes, når du henter indlaeg ud fra db igen?
Avatar billede ofirpeter Nybegynder
21. december 2003 - 23:22 #7
Nej det virker stadig ikke..
Jeg henter på følgende måde:

            <?php
require("conn.php");
$hent = mysql_query("select * from 9bgastebog order by id DESC") or die(mysql_error());
while ($ud = mysql_fetch_array($hent)) {
?>

<? echo nl2br($ud[indleg]); ?>
Avatar billede erikjacobsen Ekspert
21. december 2003 - 23:23 #8
Hvad er det, der ikke virker helt præcist, og hvordan ser din kode ud nu,
der lægger ting i databasen.

De \'-ere, der er i databasen bør du fjerne manuelt.
Avatar billede exp Juniormester
22. december 2003 - 10:37 #9
<?php
require("conn.php");
$hent = mysql_query("select * from 9bgastebog order by id DESC") or die(mysql_error());
while ($ud = mysql_fetch_array($hent)) {
?>

<? echo nl2br($ud[indleg]); ?>


ændres til


<?php
require("conn.php");
$hent = mysql_query("select * from 9bgastebog order by id DESC") or die(mysql_error());
while ($ud = mysql_fetch_array($hent)) {
?>

<? echo stripslashes(nl2br($ud[indleg])); ?>
Avatar billede ofirpeter Nybegynder
23. december 2003 - 11:40 #10
Tak exp. Så virker det. Må jeg få et svar!
Avatar billede erikjacobsen Ekspert
23. december 2003 - 13:17 #11
Det virker måske, men det er bestemt ikke optimalt. De \'-ere skal slet
ikke i databasen. Fjern dem der er (manuelt eller automatisk), og spar
på dine addsalasher, så der ikke kommer nye.
Avatar billede ofirpeter Nybegynder
23. december 2003 - 13:46 #12
Det ville jo være en fuldkommen uoverskuelig opgave at skulle rette i alle indlæg? Eller hvad?
Avatar billede erikjacobsen Ekspert
23. december 2003 - 13:59 #13
Du kan måske bruge exps løsning til at gøre det automatisk.
Avatar billede exp Juniormester
23. december 2003 - 14:22 #14
erikjacobsen >>
Hvad så, hvis der benyttes ' eller " i den tekst der fyres i databasen?


*<:-)
Avatar billede erikjacobsen Ekspert
23. december 2003 - 15:20 #15
Jamen, hvis der bruges ' eller " skal der stå ' og " i databasen, ikke
\' eller \". Som man plejer!
Avatar billede exp Juniormester
23. december 2003 - 15:36 #16
så håber jeg dælme da man bruger magic_quotes = on, for ellers kunne det da hurtigt give bøvl...
Avatar billede erikjacobsen Ekspert
23. december 2003 - 18:01 #17
Ja, naturligvis - enten har man magic_quotes sat til, eller man siger selv
addslashes, men sammenlagt kun een gang. Så står der fx \' i SQL-strengen,
og dermed ' i databasen. Sådan som det har været meningen siden verdens skabelse.
Avatar billede ofirpeter Nybegynder
23. december 2003 - 19:02 #18
Jeg vil give dig ret.
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