Gå til innhold

hente script fra en database


Anbefalte innlegg


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 av Stegz
Lenke til kommentar
Videoannonse
Annonse

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

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 av grimjoey
Lenke til kommentar

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...