phpbar.de logo

Mailinglisten-Archive

[php] PHP Code wiedergeben

[php] PHP Code wiedergeben

Schaefer, Sebastian sebastian.schaefer at built.de
Mit Okt 15 16:41:20 CEST 2003


Hallo liebe Gruppe,

auch wenn ich nicht viel helfen kann bin ich dankbar für eure Hilfe.
Ich habe eine Index.php der immer eine PageID (pid) übergeben wird
und in der DB wird das template ausgewählt und per index.php
ausgelesen.

hier das index.php
****************************************************************************
<?php
[snip...]

if ($pid == "") {$pid = 0;}
/* get link content and data from DB */

$result = $data_db->query(" SELECT page_title, page_template
FROM cms_pages
WHERE pkey = '$pid'");

/* get number of assigned pages */
$exists = $data_db->num_rows($result);

/* valid pid */
if(!is_numeric($pid) or $exists == 0)
die("Invalid pid specified");
$row = $data_db->fetch_array($result);

/* open template */
$tp_file = fopen("/var/www/htdoc/crminfo/templates/$row[page_template]", "r");
$tp_content = fread ($tp_file, 4096);
fclose($tp_file);

/* free query */
$data_db->free_result($result);

/* get possible template marks ands values from DB */
$rpl_result = $data_db->query(" SELECT field_name, field_type, field_contents
FROM cms_page_fields
WHERE cms_pages_pkey = '$pid'");

/* get number of marks in specified template */
$repltimes = $data_db->num_rows($rpl_result);
/* replace marks (@@@NAME@@@) with DB content */
for ($i=1;$i<=$repltimes;$i++) {
$replacement = $data_db->fetch_row($rpl_result);
switch($replacement[1]){
case 'TXT': 
$tp_content = str_replace("@@@$replacement[0]@@@","$replacement[2]",$tp_content);
break;
case 'ELK': 
$tp_content = str_replace("@@@$replacement[0]@@@","<a href=\"$replacement[2]\" target=\"_blank\">$replacement[2]</a>",$tp_content);
break;
case 'ILK': 
$tp_content = str_replace("@@@$replacement[0]@@@","<a href=\"$replacement[2]\" target=\"_intern\">$replacement[2]</a>",$tp_content);
break;
case 'EML': 
$tp_content = str_replace("@@@$replacement[0]@@@","<a href=\"mailto:$replacement[2]\" target=\"blank\">$replacement[2]</a>",$tp_content);
break;
case 'IMG': 
$tp_content = str_replace("@@@$replacement[0]@@@","<img src=\"$replacement[2]\" border=\"0\">",$tp_content);
break;
case 'PHP':
$phpscript = "\$php_out = ".$replacement[2];
eval("$phpscript");
$tp_content = str_replace("@@@$replacement[0]@@@",$php_out,$tp_content);
break;
default:
$tp_content = str_replace("@@@$replacement[0]@@@","$replacement[2]",$tp_content);
} // switch
}
/* free query */
$data_db->free_result($rpl_result); 
/* send content output back to client browser */
echo $tp_content;
?>
****************************************************************************
die template datei sieht so aus...

****************************************************************************
<html>
<head>
	<title>@@@PAGE_TITEL@@@</title>
</head>
<body>
<table width="80%" hight="90%" align="center" bgcolor="#CCCCFF" border="0">
	<tr>
		<td align="left" valign="middle">
			<a href="?pid=2">Login</a><br>
			<br>
			<a href="?pid=3">Nutzer werden</a><br>
			<br>
			<a href="?pid=4">Impressum</a>
		</td>
		<td align="left" valign="middle">
			@@@NEWSTEXT@@@
			<br>
			Bei Fragen wenden Sie sich bitte an<br>
			@@@ADMINEMAIL@@@
			<br><br>
			Sessiondata: @@@SESSION@@@
			<?php echo "TEST"; ?>
		</td>
	</tr>
</table>
</body>
</html>
****************************************************************************
aber der PHP teil am Ende "<?php echo "TEST"; ?>" wird 1:1 einfach
wiedergegeben und nicht nur "TEST".

ich würde gerne auch funktionen einbauen, aber irgendwo hängt es
und ich finde kein Ansatz... hat jemand eine Idee wie ich besser
vorgehen könnte?

also noch mal kurz ... es sollen auch PHP Befehle, die im Template sind
ausgeführt werden.


Vielen vielen Dank ...

Sebastian Schäfer

php::bar PHP Wiki   -   Listenarchive