Avatar billede janorakel Nybegynder
08. oktober 2003 - 20:15 Der er 79 kommentarer og
1 løsning

Stripslashes? Hvor?

Jeg har dette script, som viser samtlige forfattere i databasen grupperet. Jeg har netop smidt addslashes på alle posterne og vil gerne have dem ud uden"\".
Hvor og hvordan smider man stripslashes på denne?

<?php require("tjeklogin.php"); ?>
<html>
<head>
<title>Forfatter oversigt</title>
<link rel="stylesheet" href="css/greenstyle1.css" type="text/css">
</head>
<body>
<div id="Layer1" style="position:absolute; left:646px; top:13px; width:25px; height:20px; z-index:1"><a href="#" onClick="Print();"><img src="/img/print.gif" width="16" height="15" border="0"></a></div>
<div id="Layer2" style="position:absolute; left:678px; top:12px; width:42px; height:28px; z-index:2"><a href="sog.php"><img src="/img/kikkert.gif" border="0"></a></div>
<div id="Layer3" style="position:absolute; left:618px; top:14px; width:15px; height:15px; z-index:3"><a href='java script:history.go(-1)'><img src='/img/back1.gif' border="0"></a></div>
<center>
<table>
<?php
echo "<font face='Verdana' size='1'>Denne side er genereret kl. ";
echo date("H:i:s");
echo "<tr><td><strong><em>Nom</em></strong></td><td><strong><em>Prènom</em></strong></td><td><strong><em>Le nombre total</em></strong></td></tr>";
echo "<tr><hr colspan=3><td>";

$db = mysql_connect("localhost", "xxx", "xxx") or die ("Desværre ingen forbindelse til databasen"); mysql_select_db("book", $db) or die ("Kunne ikke vælge databasetabel");

$q = mysql_query("SELECT forfatternavn_efternavn, forfatternavn_fornavn, COUNT(*) AS antal FROM second GROUP BY forfatternavn_efternavn, forfatternavn_fornavn ORDER BY forfatternavn_efternavn ASC");
while($row=mysql_fetch_array($q))
{
echo "<tr><td><a href='info.php?efternavn=" .$row[forfatternavn_efternavn]. "&&fornavn=".$row[forfatternavn_fornavn]. "'>" .$row[forfatternavn_efternavn]. "</a></td><td>" .$row[forfatternavn_fornavn]. "</td><td align='center'>" .$row[antal]. "</align></td></tr>";
}
?>
</table>
</center>
</body>
</html>
Avatar billede Slettet bruger
08. oktober 2003 - 20:20 #1
Der hvor du udskriver $row:

stripslashes($row[forfatternavn_efternavn]) osv....
Avatar billede erikjacobsen Ekspert
08. oktober 2003 - 20:26 #2
Hvis du får de \-ere ud ved udtræk fra databasen, så siger du addslashes én gang
for meget. Din PHP er sikkert sat til at gøre det automatisk, og så behøver du ikke.
Avatar billede janorakel Nybegynder
08. oktober 2003 - 20:29 #3
Ja, men det har jeg prøvet. Kig på koden
Den highlighter navnet som stripped og søger stripped.
Avatar billede janorakel Nybegynder
08. oktober 2003 - 20:31 #4
erikjacobsen--> Nej, for jeg fik hjælp her i eksperten til addslashes, og før det var det ikke automatisk.
Avatar billede erikjacobsen Ekspert
08. oktober 2003 - 20:33 #5
*g* Det jeg skriver er nu stadig korrekt ...
Avatar billede janorakel Nybegynder
08. oktober 2003 - 20:34 #6
ok da
Avatar billede detox Nybegynder
08. oktober 2003 - 20:35 #7
Ja, det er ikke nødvendigt at bruge stripslashes() på databaseudtræk.
Avatar billede janorakel Nybegynder
08. oktober 2003 - 20:39 #8
Hvis jeg eks. søger på (asa'qwq) uden stripslashes kommer der til at stå (asa)
Hvis jeg eks. søger på (asa'qwq) med stripslashes kommer der til at stå (asa\)
Den skulle jo gerne søge på hele udtrykket. Men hvordan?? Det fatter jeg ikk.
Avatar billede janorakel Nybegynder
08. oktober 2003 - 20:41 #9
Og i databasen står der (asa\'qwq)
Avatar billede janorakel Nybegynder
08. oktober 2003 - 20:44 #10
detox--> Jamen, så står der jo (asa\'qwq) fremme så folk kan se det.
Avatar billede detox Nybegynder
08. oktober 2003 - 20:47 #11
Hvis der står: asa\'qwq i databasen, vil outputet fra forespørgslen være: asa'qwq.
Avatar billede detox Nybegynder
08. oktober 2003 - 20:49 #12
Eller rettere der skal stå: asa'qwq i din tabel, ellers har du brugt addslashes en gang for meget.
Avatar billede janorakel Nybegynder
08. oktober 2003 - 20:50 #13
Ja, det står der - men når man klikker på navnet kan man se nederst at den søger på asa\ og ikke andet. Derfor viser den en blank side.
Avatar billede janorakel Nybegynder
08. oktober 2003 - 20:52 #14
Øh, skal der stå asa'qwq i databasen?
Avatar billede janorakel Nybegynder
08. oktober 2003 - 20:54 #15
Hmm, jeg har lige fjernet "\" i tabellen, og problemet er det samme.
Det er lige meget om jeg bruger stripslashes eller ikke.
Avatar billede erikjacobsen Ekspert
08. oktober 2003 - 20:56 #16
Hvis du kan *fjerne* en \ i din tabel i databasen, så har du brugt addslashes een gang
for meget.

Men når det så er sagt er første rettelse af dit næste problem:

echo "<tr><td><a href=\"info.php?efternavn=" .$row[forfatternavn_efternavn]. "&fornavn=".$row[forfatternavn_fornavn]. "\">" .$row[forfatternavn_efternavn]. "</a></td><td>" .$row[forfatternavn_fornavn]. "</td><td align='center'>" .$row[antal]. "</align></td></tr>";

Og når det så virker kan du få næste rettelse ;)
Avatar billede detox Nybegynder
08. oktober 2003 - 20:56 #17
Nu kender jeg ikke rigtigt din søgemetode, men mon ikke du skal bruge addslashes() på selve søgeordet?
Avatar billede detox Nybegynder
08. oktober 2003 - 20:59 #18
Hvis du har: magic_quotes_gpc=On i din php.ini, tilføjes der automatisk \ til GET, POST og COOKIES, så vidt jeg ved.
Avatar billede janorakel Nybegynder
08. oktober 2003 - 21:03 #19
hmm, den er svær.
Ovenstående script grupperer alle forfattere i tabellen og viser antal poster for hver forfatter. Når man klikker på en forfatters efternavn uden de umulige "'" viser en anden side samtlige poster af denne forfatter.
Så om man kan kalde det søgning, så sker det i dette script.
Avatar billede detox Nybegynder
08. oktober 2003 - 21:19 #20
Følg erikjacobsen's råd!
Avatar billede janorakel Nybegynder
08. oktober 2003 - 21:21 #21
Jamen, nu har jeg jo slettet de "\" fra databasen og det virker stadig ikke...
Avatar billede detox Nybegynder
08. oktober 2003 - 21:23 #22
Osse rettelsen kl. 20.56?
Avatar billede janorakel Nybegynder
08. oktober 2003 - 21:28 #23
Hmm, du siger noget!
Det står rent i databasen..
Er det <a href=\"info.php?efternavn=" .$row[forfatternavn_efternavn]. "&fornavn=".$row[forfatternavn_fornavn]. "\">
en søgning?
Avatar billede janorakel Nybegynder
08. oktober 2003 - 21:31 #24
Det var det ikke..
Avatar billede erikjacobsen Ekspert
08. oktober 2003 - 21:34 #25
Så kommer vi ikke videre uden et link til siden.
Avatar billede janorakel Nybegynder
08. oktober 2003 - 21:36 #26
Vent 10 min.
Avatar billede janorakel Nybegynder
08. oktober 2003 - 22:27 #27
Hej igen...
Jeg har lige smidt det hele op på http://www.fangst.net
Bruger: test
PW: test
Og det er under "Chercher dans la base de données" I finder "Index des noms d'auteurs"
Avatar billede janorakel Nybegynder
08. oktober 2003 - 22:29 #28
Se f.eks. Arlincourt Victor d', Arbouville Sophie d' og asa'qwq a'sewe som i ovenstående.
Avatar billede detox Nybegynder
08. oktober 2003 - 22:45 #29
Når jeg tester med:

<?
$row['forfatternavn_fornavn'] = "a'sewe";
$row['forfatternavn_efternavn'] = "asa'qwq";
$row['antal'] = 29;
echo "<table>";
echo "<tr><td><a href=\"info.php?efternavn=" .$row['forfatternavn_efternavn']. "&fornavn=".$row['forfatternavn_fornavn']. "\">" .$row['forfatternavn_efternavn']. "</a></td><td>" .$row['forfatternavn_fornavn']. "</td><td align='center'>" .$row['antal']. "</align></td></tr>";
echo "</table>";
?>

Fungerer det fint nok, så noget tyder på, du får data forkert ud fra tabellen.
Avatar billede detox Nybegynder
08. oktober 2003 - 22:58 #30
Det virker mest af alt, som om du ikke har fået en \ med i din tabel, siden den korter asa'qwq af til asa.
Avatar billede detox Nybegynder
08. oktober 2003 - 23:11 #31
Måske har du haft en \ for meget i starten, hvorimod den nu mangler. Hvis ikke du har magic_quotes_gpc=On, skal du bruge addslashes() når du smider dataene ind, men intet når du hiver dem ud. Brug evt.: addslashes(stripslashes($data)), når du lægger dem ind. Så kan det ikke gå helt galt. Ellers brug: magic_quotes_gpc, det gør livet meget lettere.
Avatar billede detox Nybegynder
08. oktober 2003 - 23:13 #32
Du kan undersøge sagen med:

<?
echo ini_get('magic_quotes_gpc');
?>
Avatar billede janorakel Nybegynder
08. oktober 2003 - 23:20 #33
hmm, selv om der er en \ som asa\'qwq forkorter den stadig udsagnet.
Data kan vel kun stå på en måde i en tabel, jeg mener at det man ser er vel det der står..
Avatar billede janorakel Nybegynder
08. oktober 2003 - 23:21 #34
Så vil der bare stå "asa\"
Avatar billede janorakel Nybegynder
08. oktober 2003 - 23:23 #35
'magic_quotes_gpc' er off, og det kan jeg ikke ændre.
Avatar billede janorakel Nybegynder
08. oktober 2003 - 23:25 #36
Men det kan jeg vel skrive i en .htaccess fil..
Avatar billede detox Nybegynder
08. oktober 2003 - 23:27 #37
Det tvivler jeg på du kan ændre på. Så må du bruge addslashes når du lægger data ind.
Avatar billede detox Nybegynder
08. oktober 2003 - 23:30 #38
Du kan prøve:

set_magic_quotes_runtime(1);
Avatar billede janorakel Nybegynder
08. oktober 2003 - 23:31 #39
Dvs. når jeg bruger addslashes, vil alle de umulige navne stå med et "\" i sit navn, men jeg skal ikke bruge stripslashes når jeg skal have dem ud?
Så kommer de jo til, at stå med et "\" i navnet og det skal jo ikke være synligt.
Avatar billede janorakel Nybegynder
08. oktober 2003 - 23:32 #40
Øverst i scriptet?
Avatar billede detox Nybegynder
08. oktober 2003 - 23:33 #41
Nej, selvom du bruger addslashes() kommer der ikke til at være et "\" i tabellen.
Avatar billede janorakel Nybegynder
08. oktober 2003 - 23:34 #42
Jeg har sat det ind og nu står det med "\" i navnet.
Avatar billede detox Nybegynder
08. oktober 2003 - 23:34 #43
Ja, du kan forsøge dig med:

<?
set_magic_quotes_runtime(1);
echo get_magic_quotes_gpc();
?>

(Det fungerer ikke for mig)
Avatar billede janorakel Nybegynder
08. oktober 2003 - 23:36 #44
Dvs. når der nu er "\" i de navne i en anden tabel pga. addslashes er det fordi der er en addslashes for meget. Ok, så langt så godt.
Avatar billede janorakel Nybegynder
08. oktober 2003 - 23:39 #45
aha, nu kom denne:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /data/virtual/fangst/info.php on line 30
Avatar billede janorakel Nybegynder
08. oktober 2003 - 23:40 #46
Og den udskriver et 0
Avatar billede detox Nybegynder
08. oktober 2003 - 23:41 #47
Ja, så må du ty til addslashes(). Men hvad er der nu galt med din query?
Avatar billede janorakel Nybegynder
08. oktober 2003 - 23:42 #48
Det er kun når vi klikker på et umuligt navn...
Avatar billede detox Nybegynder
08. oktober 2003 - 23:47 #49
Så skal du formodentlig bruge addslashes i 'info.php'
Avatar billede janorakel Nybegynder
08. oktober 2003 - 23:47 #50
Dette står i mit "smid i databasen script":
  $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;
Så smider den da addslashes på - ikk..
Avatar billede janorakel Nybegynder
08. oktober 2003 - 23:50 #51
info.php ser sådan ud:
<?php
$efternavn = $_GET[efternavn];
$fornavn = $_GET[fornavn];
?>
<html>
<Script language="JavaScript">
function Print()
{
window.print();
}
</Script>
<head>
<title>Information for <?php echo "" . $efternavn . ", " . $fornavn . ""; ?></title>
<link rel="stylesheet" href="css/greenstyle1.css" type="text/css">
</head>
<body>
<div id="Layer1" style="position:absolute; left:666px; top:13px; width:25px; height:20px; z-index:1"><a href="#" onClick="Print();"><img src="/img/print.gif" width="16" height="15" border="0"></a></div>
<div id="Layer2" style="position:absolute; left:698px; top:12px; width:42px; height:28px; z-index:2"><a href="sog.php"><img src="/img/kikkert.gif" border="0"></a></div>
<div id="Layer3" style="position:absolute; left:638px; top:14px; width:15px; height:15px; z-index:3"><a href='java script:history.go(-1)'><img src='/img/back1.gif' border="0"></a></div>
<table width="50%" border="0" align="center" cellpadding="1" cellspacing="0" bordercolor="#333333" bgcolor="#FFFFFF">
    <tr bordercolor="#333333">
<?php
    echo "<font face='Verdana' size='1'>Denne side er genereret kl. ";
    echo date("H:i:s");
    echo "<br/><hr>";
$db = mysql_connect("localhost", "xxx", "xxx") or die ("Desværre ingen forbindelse til databasen");

mysql_select_db("book1", $db) or die ("Kunne ikke vælge databasetabel");
$q = mysql_query("SELECT * FROM second WHERE forfatternavn_efternavn='$efternavn' AND forfatternavn_fornavn='$fornavn' ORDER BY udgivelsestidspunkt_oversaettelse");
while($row=mysql_fetch_array($q))
{
if ($row[antal_bind] == "")
{ $row[antal_bind] = "1"; }

    echo "<td width='60px'><font face='Verdana' size='1'><a href=dethele.php?id=$row[id]><img src=img/lup.gif border=0></a><td width='90px'><br/><tr>";
    echo "<td><font face='Verdana' size='1'>Pays:<td><font face='Verdana' size='1'>$row[land]<br/><tr>";
              echo "<td><font face='Verdana' size='1'>Titre original:<td><font face='Verdana' size='1'><em> $row[originalvaerkets_titel]</em><br/><tr>";
    echo "<td><font face='Verdana' size='1'>Date de publication:<td><font face='Verdana' size='1'> $row[udgivelsestidspunkt_original]<br/><tr>";
              echo "<td><font face='Verdana' size='1'>Auteur:<td><font face='Verdana' size='1'> $row[forfatternavn_efternavn], $row[forfatternavn_fornavn]<br/><tr>";
            echo "<td><font face='Verdana' size='1'>Pseudonyme:<td><font face='Verdana' size='1'> $row[alias], $row[alias_fornavn]<br/><tr>";   
              echo "<td><font face='Verdana' size='1'>Titre de la traduction:<td><font face='Verdana' size='1'><em> $row[oversættelsens_titel]</em><br/><tr>";
    echo "<td><font face='Verdana' size='1'>Date de publication:<td><font face='Verdana' size='1'> $row[udgivelsestidspunkt_oversaettelse]<br/><tr>";
    echo "<td><font face='Verdana' size='1'>Traducteur:<td><font face='Verdana' size='1'> $row[oversaetterens_efternavn], $row[oversaetterens_fornavn]<br/><tr>";
    echo "<td colspan=2><hr></td><tr>";
}
?>
</table>
</center>
</body>
</html>
Avatar billede janorakel Nybegynder
08. oktober 2003 - 23:53 #52
Nej, det kan næsten kun være det andet script
Avatar billede detox Nybegynder
08. oktober 2003 - 23:55 #53
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;
Er korrekt.
Avatar billede detox Nybegynder
08. oktober 2003 - 23:57 #54
Ja, så længe den ikke viser hele navnet i bundlinien, når man kører curseren over navnet, er der noget galt et sted i det første script (eller måske rettere i databasen)
Avatar billede detox Nybegynder
08. oktober 2003 - 23:59 #55
Nu har jeg lavet en lille testtabel. Og når jeg tester med dette, fungerer det fint (og det er jo det samme, som du bruger?):

$q = mysql_query("SELECT forfatternavn_efternavn, forfatternavn_fornavn, COUNT(*) AS antal FROM second GROUP BY forfatternavn_efternavn, forfatternavn_fornavn ORDER BY forfatternavn_efternavn ASC");
while($row=mysql_fetch_array($q))
{

echo "<table>";
echo "<tr><td><a href=\"info.php?efternavn=" .$row['forfatternavn_efternavn']. "&fornavn=".$row['forfatternavn_fornavn']. "\">" .$row['forfatternavn_efternavn']. "</a></td><td>" .$row['forfatternavn_fornavn']. "</td><td align='center'>" .$row['antal']. "</align></td></tr>";
echo "</table>";
}
?>
Avatar billede detox Nybegynder
09. oktober 2003 - 00:03 #56
Har du husket qoutes her: $row['forfatternavn_efternavn']
Avatar billede janorakel Nybegynder
09. oktober 2003 - 00:04 #57
Ja, det er mærkeligt. Den server kører linux med en ver. mysql og min lokale maskine kører windoze og en anden mysql - selv anden ver. php. Det giver samme resultat - Jeg fatter det ikke.
Avatar billede janorakel Nybegynder
09. oktober 2003 - 00:05 #58
qoutes - hvordan?
Avatar billede detox Nybegynder
09. oktober 2003 - 00:07 #59
$row[forfatternavn_efternavn] vs $row['forfatternavn_efternavn']
Avatar billede janorakel Nybegynder
09. oktober 2003 - 00:08 #60
Jeg har lige smidt dem på, men de ville ikke hjælpe os..
Avatar billede detox Nybegynder
09. oktober 2003 - 00:10 #61
Nej, det er forunderligt at navnet vises rigtigt på siden, men bliver kortet af i bundlinien.
Avatar billede detox Nybegynder
09. oktober 2003 - 00:12 #62
Hov, nu funker det da. Så er det info.php vi skal se på!
Avatar billede detox Nybegynder
09. oktober 2003 - 00:14 #63
Prøv med:

<?php
$efternavn = addslashes($_GET['efternavn']);
$fornavn = addslashes($_GET['fornavn']);
?>
Avatar billede janorakel Nybegynder
09. oktober 2003 - 00:14 #64
Jeg fjernede en "'" i "a href='info.php?"
Avatar billede janorakel Nybegynder
09. oktober 2003 - 00:16 #65
ok, men nu viser den intet.
Avatar billede janorakel Nybegynder
09. oktober 2003 - 00:16 #66
Og det er info.php
Avatar billede detox Nybegynder
09. oktober 2003 - 00:19 #67
Den skal se sådan ud:

echo "<tr><td><a href=\"info.php?efternavn=" .$row['forfatternavn_efternavn']. "&fornavn=".$row['forfatternavn_fornavn']. "\">" .$row['forfatternavn_efternavn']. "</a></td><td>" .$row['forfatternavn_fornavn']. "</td><td align='center'>" .$row['antal']. "</align></td></tr>";
Avatar billede detox Nybegynder
09. oktober 2003 - 00:20 #68
Anyway, det er info.php vi skal fokusere på nu.
Avatar billede janorakel Nybegynder
09. oktober 2003 - 00:26 #69
ok, den giver nogle errors som tidligere i linie 30.
Avatar billede detox Nybegynder
09. oktober 2003 - 00:28 #70
Og du bruger:

$efternavn = addslashes($_GET['efternavn']);
$fornavn = addslashes($_GET['fornavn']);
Avatar billede janorakel Nybegynder
09. oktober 2003 - 00:30 #71
yes
Avatar billede detox Nybegynder
09. oktober 2003 - 00:31 #72
Skift linie 29 til:

$q = mysql_query("SELECT * FROM second WHERE forfatternavn_efternavn='$efternavn' AND forfatternavn_fornavn='$fornavn' ORDER BY udgivelsestidspunkt_oversaettelse") or die(mysql_error());
Avatar billede janorakel Nybegynder
09. oktober 2003 - 00:32 #73
FUCK MAND!! Undskyld mig - men det virker nu!!
Avatar billede janorakel Nybegynder
09. oktober 2003 - 00:33 #74
Ikke nødvendigt..
Avatar billede janorakel Nybegynder
09. oktober 2003 - 00:35 #75
Tak detox, du bliver nødt til at smide et svar.
Avatar billede detox Nybegynder
09. oktober 2003 - 00:35 #76
RART!
Avatar billede detox Nybegynder
09. oktober 2003 - 00:35 #77
c",)
Avatar billede janorakel Nybegynder
09. oktober 2003 - 00:37 #78
Så vil' jeg 'gå' i seng''" Mange tak for hjælpen''' '' ''''' '
Avatar billede detox Nybegynder
09. oktober 2003 - 00:39 #79
Velbekommen.
Overvejede lige at ændre det til:

$efternavn = (!get_magic_quotes_gpc()) ? addslashes($_GET['efternavn']) : $_GET['efternavn'];
$fornavn = (!get_magic_quotes_gpc()) ? addslashes($_GET['fornavn']) : $_GET['fornavn'];

Så den vil virke i alle tilfælde.
Avatar billede janorakel Nybegynder
09. oktober 2003 - 00:40 #80
'hehe'
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

IT-JOB

BEC Financial Technologies

Senior Platform/System Engineer

Capgemini Danmark A/S

Java Engineer

BEC Financial Technologies

Development Manager for Document Lifecycle

Det Nationale Forskningscenter for Arbejdsmiljø

IT-sikkerhedsspecialist med fokus på AI inden for forskning