Avatar billede KHHP Juniormester
29. oktober 2012 - 16:38 Der er 11 kommentarer og
1 løsning

Server laver escaping af de forkerte ting

Hej
Jeg har fornylig bemærket en fejl på min side, hvor serveren laver escaping af links og javascript, som bliver gemt i databasen. Jeg har forsøgt at fjerne javascriptet, og dette virker også, men den laver stadig escaping af mine links, divs, javascript osv.
Jeg har dog fixet problemet fra phpmyadmin, men det er jo ikke noget der holder i længden. Jeg har ikke rettet fejlen for at I kan se hvad den helt præcist gør.
Fejlen kan ses her: http://khansen-it.dk/index.php?page_id=5
Hvis I holder musen hen over de to links nederst på siden, så kan I se problemet.
Jeg har lagt mit script der opdaterer indholdet her: http://pastebin.com/QsH9d4wr
Jeg ved at min webhost for nylig har flyttet nogle af deres servere for at forbedre ydelsen, men det kunne jo være at der var en fejl i min kode der gør at problemet opstår. Dog kan jeg ikke se at der skulle være nogen fejl. Såfremt fejlen ikke ligger i min kode, så må jeg jo blot have fat i min webhost for at se hvad de siger til problemet.
Blot for at udelukke et problem i min connection-fil, så er den her indtastet med demo værdier: http://pastebin.com/sLNzqS0p
Avatar billede michael_stim Ekspert
29. oktober 2012 - 16:44 #1
Nu har jeg ikke kigget på hverken side eller kode, men umiddelbart lyder det som om du bare skal adde en stripslashes, der hvor du kalder på dine ting:

http://www.php.net/manual/en/function.stripslashes.php
Avatar billede olebole Juniormester
29. oktober 2012 - 17:58 #2
<ole>

Jeg tror, dine problemer skyldes noget andet. Prøv lige denne kode, som burde udskrive et korrekt link, hvis du skriver noget tekst med et link i TEXTAREA'et:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
</head>
<body>

<p>
<?php
if (!empty($_POST)) {
    $db = new mysqli('SERVER', 'USER_NAME', 'PASS_WORD', 'DATABASE');
   
    $db->query("CREATE TABLE `baz` (`tekst` VARCHAR(255) NOT NULL) COLLATE='utf8_danish_ci' ENGINE=InnoDB");
   
    $stmt = $db->prepare('INSERT INTO `baz` SET `tekst`=?');
    $stmt->bind_param('s', $_POST['tekst']);
    $stmt->execute();
    $stmt->close();
   
    $res = $db->query('SELECT * FROM `baz`');
    $row = $res->fetch_array(MYSQLI_ASSOC);
    $res->free();
   
    $db->query("DROP TABLE `baz`");
   
    $db->close();
   
    echo $row['tekst'];
}
?>
</p>

<form action="" method="post">
<p><textarea name="tekst" cols="50" rows="20"></textarea></p>
<p><button type="submit">Send</button></p>
</form>

</body>
</html>

/mvh
</bole>
Avatar billede olebole Juniormester
29. oktober 2012 - 18:02 #3
Prøv lige at skrive dette i en tom PHP-fil:

<?php phpinfo() ?>

- og søg efter magic_quotes_gpc. Den skulle meget gerne være sat til Off
Avatar billede olebole Juniormester
29. oktober 2012 - 18:10 #4
Er magic_quotes sat til On - og du ikke har adgang til php.ini - kan du skrive dette øverst i alle dine dokumenter:

<?php
ini_set('magic_quotes_gpc', 0);

// resten af din kode
?>

- men det er noget rod. Det bør helt klart sættes i php.ini
Avatar billede KHHP Juniormester
29. oktober 2012 - 18:41 #5
magic_qoutes_gpc var sat til On.
Jeg har forsøgt det ole foreslog i #2 og det gav et resultat der så således ud:
<a href=\"admin/opret.php\">Dette er en test</a>

Normal tekst har den ingen problemer med.
Jeg har forsøgt med ini_set('magic_qoutes_gpc',0); i det test dokument fra #2. Det giver samme resultat.
<a href=\"index.php\">Dette er igen en test</a>

Men hvis det har virket inden de ændrede på deres servere, så kan det jo være en fejl. Så måske burde jeg kontakte dem alligevel.
Avatar billede olebole Juniormester
29. oktober 2012 - 19:18 #6
Hmmm ... jeg kan nu heller ikke slå det til og fra med den linje på min lokale server  =)

Anyway, så bør du helt klart forlange af udbyderen, at han ændrer opsætningen. Det hører ikke til i moderne PHP. Hvis de brokker sig, så send dem dette link. Hvem har du som udbyder?
Avatar billede KHHP Juniormester
29. oktober 2012 - 19:23 #7
Har Meebox.
Avatar billede olebole Juniormester
29. oktober 2012 - 20:49 #8
Jeg har ikke personlig erfaring med dem, men prøv at skrive til dem  =)
Avatar billede KHHP Juniormester
30. oktober 2012 - 22:09 #9
Har i dag skrevet til meebox og forklaret problemet. De svarede hurtigt tilbage og sagde at selvfølgelige skulle magic_qoutes_gpc være slået fra og de ændrede det straks.

@olebole: Jeg går ud fra at jeg blot selv skal lukke spørgsmålet da du vel som sædvanligvis ikke samler på point?
Avatar billede olebole Juniormester
30. oktober 2012 - 22:16 #10
Andet ville også undre mig. De virker ret professionelle  =)

Præcis! Jeg er zq for kedelig til at finde på noget nyt  *D
Avatar billede olebole Juniormester
30. oktober 2012 - 22:19 #11
Det ville da også være en grum gang skæbnens ironi, hvis du ikke kunne få det slået fra, når du nu har slidt med at få lært prepared statements  *o)
Avatar billede KHHP Juniormester
31. oktober 2012 - 14:42 #12
Ja. det har du ret i.
Så lukker og slukker jeg for denne gang. Og nok en gang tak for hjælpen.
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