Stegz Skrevet 5. januar 2008 Del Skrevet 5. januar 2008 (endret) jeg har prøvd litt å lage en database for informasjonen på en nettside. <?php $host = 'localhost'; $username = 'root'; $password = 'abc123'; $con = mysql_connect($host , $username , $password); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("occadest", $con); $result = mysql_query("SELECT * FROM page WHERE id = '$_GET $page = mysql_fetch_array($result); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title><?php echo $page[title]; ?></title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <?php echo "$page[body]"; ?> <!-- /innhold --> </body> </html> <?php mysql_close($con); ?> '"); Dette fungerer ganske bra. Problemet er hvis attributten "body" i databasen min inneholder et script, bli det bare skrevet ut som tekst. hvis $page[body] = '<?php echo 1+1; ?>' blir altså det samme, mens jeg ønsker at svaret skal bli to. Hvordan er det jeg kommer rundt dette? Endret 5. januar 2008 av Stegz Lenke til kommentar
grimjoey Skrevet 5. januar 2008 Del Skrevet 5. januar 2008 (endret) eval(); eller skriv ut databaseinfo til en fil og inkluder filen. Endret 5. januar 2008 av grimjoey Lenke til kommentar
Alex Moran Skrevet 5. januar 2008 Del Skrevet 5. januar 2008 (endret) Du kan bruke eval(...). edit: doh Endret 5. januar 2008 av hans3k Lenke til kommentar
Stegz Skrevet 5. januar 2008 Forfatter Del Skrevet 5. januar 2008 Skal jeg bytte ut <?php echo $page[body]; ?> med <?php eval($page[body]); ?> ? Isåfall fikk jeg en feilmelding Parse error: syntax error, unexpected '<' in D:\wamp\www\sql\index.php(57) : eval()'d code on line 1 Lenke til kommentar
grimjoey Skrevet 5. januar 2008 Del Skrevet 5. januar 2008 (endret) hmm. du må parse body og hente ut <?php ... ?>. så kjøre eval på hver av de. letteste er å lage en tmp.php fil og inkludere den file_put_contents('tmp.php', $page['body']); include('tmp.php'); ellernoe Endret 5. januar 2008 av grimjoey Lenke til kommentar
Stegz Skrevet 5. januar 2008 Forfatter Del Skrevet 5. januar 2008 file_put_contents('tmp.php', $page['body']);include('tmp.php'); Det funket flott Dukket nettopp opp et mindre problem. Jeg har en liten form på en av sidene mine og bruker denne til å teste SQL. Når jeg skriver inn en kode og trykker kommer det opp en liten linje med tekst helt nederst i tilleg til det vanlige. Warning: mysql_close(): 2 is not a valid MySQL-Link resource in D:\wamp\www\sql\index.php on line 68 Hele siden: <?php $host = 'localhost'; $username = 'root'; $password = 'abc123'; $con = mysql_connect($host , $username , $password); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("occadest", $con); $result = mysql_query("SELECT * FROM page WHERE id = '$_GET $page = mysql_fetch_array($result); // some code ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title><?php echo $page[title]; ?></title> <link rel="stylesheet" type="text/css" href="main.css" /> <link rel="shortcut icon" href="images/favicon.ico" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <div id="maincontent"> <div id="header"> <img src="images/header.png" alt="header" /> </div> <div id="menu"> <ul> <?php $result = mysql_query("SELECT * FROM page WHERE menu = 1"); while ($menu = mysql_fetch_array($result)) { echo "<li><a href=\"?page=$menu[id]\">$menu[title]</a></li>"; } ?> </ul> </div> <div id="content"> <!-- innhold --> <?php file_put_contents('tmp.php', $page['body']); require('tmp.php'); ?> <!-- /innhold --> </div> <br class="clearfloat" /> </div> </body> </html> <?php mysql_close($con); ?> '"); Lenke til kommentar
grimjoey Skrevet 5. januar 2008 Del Skrevet 5. januar 2008 (endret) kan hende </body> eller </html> trigger php til å avslutte mysql_connect(). prøv å flytt mysql_close() et par linjer opp. (du kan egentlig fjerne den hvis du vil. link resource trenger du bare å følge med på dersom du har ekstreme mengder queries eller flere databasetilkoblinger.) btw: husk og slette tmp.php etter inkludering. Endret 5. januar 2008 av grimjoey Lenke til kommentar
Stegz Skrevet 5. januar 2008 Forfatter Del Skrevet 5. januar 2008 (endret) Puttet file_put_contents('tmp.php', "") etter include, så nå blir innholdet i tmp.php slettet hver gang. Takk for hjelp! Endret 5. januar 2008 av Stegz Lenke til kommentar
Peter Skrevet 6. januar 2008 Del Skrevet 6. januar 2008 Puttet file_put_contents('tmp.php', "") etter include, så nå blir innholdet i tmp.php slettet hver gang. Takk for hjelp! Hva er poenget med det? Den blir jo overskrevet neste gang uansett. Foreslår heller at du bruker http://no.php.net/tmpfile som er laget for formålet. Når du kaller fclose blir den slettet. Lenke til kommentar
grimjoey Skrevet 6. januar 2008 Del Skrevet 6. januar 2008 poenget er å ikke la gammel info ligge lagret. dersom man ikke fjerner innholdet i filen kan det ligge sensitiv informasjon i filen som er blitt slettet fra databasen, helt til neste sidebesøk hvor filen blir overskrevet. det er kjappere å skrive put_file_contents enn å bruke $var = fopen(); fwrite();fclose(); Lenke til kommentar
Stegz Skrevet 6. januar 2008 Forfatter Del Skrevet 6. januar 2008 Jeg har nå akkurat det samme problemet med upload. Jeg har en liten form der jeg laster opp nye sider til databasen. Den funker veldig bra helt til jeg skriver phpscript. Hvordan gjør jeg nå dette? Lenke til kommentar
grimjoey Skrevet 6. januar 2008 Del Skrevet 6. januar 2008 (endret) $_POST['body'] = mysql_real_escape_string(get_magic_quotes_gpc()?stripslashes($_POST['body']):$_POST['body']); Endret 6. januar 2008 av grimjoey Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå