Avatar billede hanshenp Nybegynder
23. juli 2003 - 20:40 Der er 18 kommentarer og
1 løsning

Indsætte addslashes() i DB

Jeg har problemer med nedenstående kode, den indsætter topic i databasen, uden at den adder slashes...

Jeg har prøvet at echo addslashes($topic), og der er der slashes på...

Cellen i databasen er af typen: varchar



<?php
include("../db.inc");
//include("./login_tjek.php");
if($settopic == 1) {
    if($topic != "") {
        $topic = trim($topic);
        $topic = addslashes($topic);
        mysql_query("UPDATE site SET overskrift='$topic' WHERE id='$id'");
        echo "<script>
            window.opener.document.location.reload();
            self.close();
        </script>";
        exit;
    }
    else {
        $Error = "<font color='red'>You have to enter a topic</font>";
    }
}

$topicQ = mysql_query("SELECT overskrift FROM site WHERE id='$id'");
$topicR = mysql_fetch_array($topicQ);
$topic = stripslashes($topicR['overskrift']);
//Site start
echo "<body topmargin='0' leftmargin='0' rightmargin='0' bottommargin='0'>
<table width='360' height='100' cellspacing='0' cellpadding='0' border='0'>
    <tr>
        <td width='360'>
            $Error
        </td>
    </tr>
    <tr>
        <td width='360'>
            Write a topic for your page
        </td>
    </tr>
    <tr>
        <td width='360'>
            <form action='' method='post'>
            <input type='hidden' name='settopic' value='1'>
            <input type='hidden' name='id' value='$id'>
            <input type='text' name='topic' value='$topic'>
        </td>
    </tr>
</table>";
?>
Avatar billede nemitz Nybegynder
23. juli 2003 - 22:33 #1
følger lige med her..........
Avatar billede tipsen Nybegynder
23. juli 2003 - 22:49 #2
Hvordan afgør du om addslashes har fungeret?
Avatar billede hanshenp Nybegynder
23. juli 2003 - 22:59 #3
jeg afgører i ovenstående eksempel ikke om addslashes har fungeret, men jeg har forsøgt at fjerne scriptet, som lukker siden, og echo "$topic" og deraf har jeg kunnet afgøre, om addslashes har fungeret
Avatar billede tipsen Nybegynder
23. juli 2003 - 23:21 #4
Dvs. udfra at "echo addslashes($topic);" fungerer har du konstateret at det ikke fungerer i db'en!!?? - det forstår jeg ikke...

Der er ikke umiddelbart noget galt med din kode, så jeg tror nærmere din "metode" til at afgøre om du har haft succes eller fiasko er forkert...
Avatar billede hanshenp Nybegynder
23. juli 2003 - 23:43 #5
lad os antage at $topic = 'hejsa', så bør addslashes($topic) være lige med \'hejsa'\ og det er den desværre ikke, når jeg smider den i DB, men når jeg bare udskriver den... så er den
Avatar billede schaefner Juniormester
23. juli 2003 - 23:47 #6
det skal væl snarere være:
$topic = '"hejsa"';

så bør det blive \"hejsa\"
Avatar billede tipsen Nybegynder
23. juli 2003 - 23:55 #7
Enig med schaefner.
Avatar billede hanshenp Nybegynder
24. juli 2003 - 01:37 #8
om det er " eller ' er vel irellevant, taget i betragtning af, at addslashes bør sætte \ foran dem begge
Avatar billede schaefner Juniormester
24. juli 2003 - 01:38 #9
$topic = '"hejsa"';

nææh, for i dette tilfælde bruger du jo ' til omkranse en streng, de indgår jo ikke som en del af strengen.
Avatar billede hanshenp Nybegynder
24. juli 2003 - 04:01 #10
jamen, selv om strengen indeholder " ' eller \.... så er de ikke med når dataene indsættes i DB...
Avatar billede tipsen Nybegynder
24. juli 2003 - 10:19 #11
hans: I dit tilfælde med $topic = 'hejsa'; vil teksten hejsa blive gemt i db'en - ingen af de 5 bogstaver behøver at blive escapet for at undgå problemer med mysql. I schaefners tilfælde med $topic = '"hejsa"' vil teksten \"hejsa\" blive gemt i databasen - dvs. 9 tegn da anførselstegnene er med og de bliver escapet, så der ikke bliver problemer med mysql.
Avatar billede hanshenp Nybegynder
24. juli 2003 - 14:02 #12
ye, men problemet er bare, at \"hejsa\" ikke bliver gemt i databasen...
Avatar billede tipsen Nybegynder
24. juli 2003 - 14:14 #13
Hvis det ikke bliver gemt i db'en, må der komme en fejlmelding retur fra MySQL...
Avatar billede hanshenp Nybegynder
24. juli 2003 - 14:32 #14
jeg omformulerer lige... det bliver gemt i db, men uden slashes, som det også fremgår af mit spørgsmål
Avatar billede tipsen Nybegynder
24. juli 2003 - 14:38 #15
Hvis det bliver gemt i db'en har det jo fungeret - hvis du kan trække det ud igen og udskrive på en webside er alt jo fint!

De tegn der kan ødelægge en query bliver escapet med \, så hvis din query forløber fint og posten bliver indsat i db'en er det jo tegn på at det har fungeret efter hensigten!
Avatar billede hanshenp Nybegynder
24. juli 2003 - 14:45 #16
det fungerer... men jeg burde stadig kunne se slashes i db... lukker lige det her spørgsmål
Avatar billede repsac Nybegynder
25. juli 2003 - 00:18 #17
hanshenp: ... og det er ikke fordi du stripslash'er dit output? (spørger jeg spydigt ;))
Avatar billede hanshenp Nybegynder
25. juli 2003 - 02:20 #18
nej det er ikke fordi jeg stripslasher min output
Avatar billede hanshenp Nybegynder
05. september 2003 - 00:34 #19
Lukker lige
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