Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > PHP > PHP-Programmierung > PHP Code wird nicht ausgeführt !
Antwort
 
Themen-Optionen
Alt 12.09.2005, 11:05   Nach oben    #1
Dark Knight
Neuer Benutzer
 
Registriert seit: 12.09.2005
Beiträge: 15
Standard PHP Code wird nicht ausgeführt !

hi @all


Nun ich hab jetzt einen kleinen Parser gecodet der platzhalter ersetz nun ist das Problem ist , dass auch PHP code ersetzt werden muss !

Hier der Parser :

PHP-Code:
<?php
<?php
include("config.php");
connect();

function 
parse($datei="index.htm")
{
   
$datei   file_get_contents($datei) ;
   
   
$select  =  "SELECT * FROM `config`";
   
$query   =  mysql_query($select);
   
$row     =  mysql_fetch_assoc($query);
   
   
$header  =  $row['header'] ;
   
$titel   =  $row['titel'] ;
   
$content =  $row['content'] ;
   
$menu    =  $row['menu'] ;
   
$footer  =  $row['footer'] ;
   
   
$text    str_replace("{header}",$header,$datei) ;
   
$text    str_replace("{titel}",$titel,$text);
   
$text    str_replace("{content}",$content,$text);
   
$text    str_replace("{menu}",$menu,$text);
   
$text    str_replace("{footer}",$footer,$text);
   echo 
$text;
}

?>
?>
Hier die fertig geparste Seite :

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Sliders HP</title>
<style type="text/css">
<!--
body,td,th {
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 10px;
	color: #000000;
}
body {
	background-color: #808080;
}
.border
{
border: 1px solid black;
}
-->
</style></head>

<body>
<div align="center">
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <table width="653" >

    <tr>
      <th width="409" height="95" class="border"><img src="banner.jpg" height="95" width="653"></th>
    </tr>
    <tr>
      <td height="310" class="border" bgcolor="#ACACAC"><div align="center"><?php include("content.php") ; ?></div></td>
	  <td width="130" height="310" >
	  <table width="150" height="154"  align="center" >
        <tr>
          <th height="20" bgcolor="#6A6A6A" class="border" >&nbsp;</th>

        </tr>
		<tr>
          <th scope="col" bgcolor="#ACACAC" class="border">&nbsp;</th>
        </tr>
      </table>
      <div align="center">
	     <?php include("module/Menu/index.php") ; ?>
          <br>
          <br>

          <br>
          <br>
          <br>
          <br>
          <br>
          <br>
          <br>
          <br>
          <br>

          <br>
          <br>
          </div>
      </td>
    </tr>
    <tr>
      <td class="border" bgcolor="#6A6A6A" height="20"><div align="right">Code & Design by Slider</div></td>
    </tr>

  </table>
  <p>&nbsp;</p>
</div>
</body>
</html>
Wie man sieht ist in der geparsten Seite der PHP code zu sehen und mir ist auch klar warum das so ist aber wie kann ich das ändern dass es auch funktioniert ?
Dark Knight ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.09.2005, 11:16   Nach oben    #2
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.588
Standard PHP Code wird nicht ausgeführt !

Ich denke, dass du die Funktion eval() suchst.
Sei vorsichtig mit der Verwendung und sichere auf jeden Fall ab, dass nicht jeder User dort Code ausführen lassen kann.

Grüße Ben.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.09.2005, 12:15   Nach oben    #3
Dark Knight
Neuer Benutzer
 
Registriert seit: 12.09.2005
Beiträge: 15
Standard PHP Code wird nicht ausgeführt !

so jetzt hab ich eval mal benutzt :

PHP-Code:
<?php
<?php
include("config.php");
connect();

function 
parse($datei="index.htm")
{
   
$datei   file_get_contents($datei) ;
   
   
$select  =  "SELECT * FROM `config`";
   
$query   =  mysql_query($select);
   
$row     =  mysql_fetch_assoc($query);
   
   
$header  =  $row['header'] ;
   
$titel   =  $row['titel'] ;
   
$content =  $row['content'] ;
   
$menu    =  $row['menu'] ;
   
$footer  =  $row['footer'] ;
   
   
   
$text    str_replace("{header}",$header,$datei) ;
   
$text    str_replace("{titel}",$titel,$text);
   
$text    str_replace("{content}",eval("\$content"),$text);
   
$text    str_replace("{menu}",$menu,$text);
   
$text    str_replace("{footer}",$footer,$text);
   echo 
$text;
}

?>
?>
Der PHP code wird nicht mehr angezeigt in der geparsten Datei angezeigt
aber sie wird nicht ausgeführt und es kommt ein parse error:
Parse error: parse error in C:\PHP\xampp\htdocs\Unbekannt\parser.php(22) : eval()'d code on line 1
Dark Knight ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.09.2005, 13:31   Nach oben    #4
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.588
Standard PHP Code wird nicht ausgeführt !

Hi,
das heißt, dass der PHP-Code, den du ausführen lassen willst nicht korrekt ist.

Grüße Ben.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.09.2005, 13:46   Nach oben    #5
schifti
Erfahrener Benutzer
 
Benutzerbild von schifti
 
Registriert seit: 06.12.2004
Ort: Bayern
Beiträge: 179
Standard PHP Code wird nicht ausgeführt !

Zitat:
Zitat von Dark Knight
so jetzt hab ich eval mal benutzt :

PHP-Code:
<?php
<?php
zweimal <?php oder kommt das hier vom Forum?
schifti ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.09.2005, 15:15   Nach oben    #6
WarrenFaith
Mensch
 
Benutzerbild von WarrenFaith
 
Registriert seit: 17.08.2005
Ort: Berlin
Beiträge: 1.710
Standard PHP Code wird nicht ausgeführt !

ich denke das kommt durchs copy/paste
mich würde interessieren wie das zustande kommt
Parse error: parse error in C:\PHP\xampp\htdocs\Unbekannt\parser.php(22) : eval()'d code on line 1

es sieht so aus als wenn du irgendwo nen tippfehler hast und er deswegen nicht klarkommt?!
__________________
I did it my way - Senseless-Blog
WarrenFaith ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.09.2005, 15:23   Nach oben    #7
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.588
Standard PHP Code wird nicht ausgeführt !

Er verwendet eval() falsch. Das ist alles.
Die Zeichenkette, welche an eval() übergeben wird muss gültigen, d.h. syntaktisch korrekten, PHP-Code enthalten. Andernfalls kommt es zu dieser Meldung.

Grüße Ben.

EDIT:
Vielleicht noch ein kleines Beispiel:

dummy.php
PHP-Code:
<?php

    $foo 
'require_once("test.php");';
    
    eval(
$foo);
    
?>
test.php
PHP-Code:
<?php

    printf
('Datei: %s <br />
            Zeile: %s'

            
__FILE__,
            
__LINE__);

?>
Ausgabe:
Code:
Datei: C:\apachefriends\xampp\htdocs\[..]\test.php
Zeile: 6
Ändere ich die dummy.php jetzt folgendermaßen ab:
PHP-Code:
<?php

    $foo 
'<?php require_once("test.php"); ?>';
    
    eval(
$foo);
    
?>
erhalte ich
Code:
Parse error: parse error in C:\apachefriends\xampp\htdocs\[..]\dummy.php(5) : eval()'d code on line 1
Sollte das Problem besser darstellen.

Grüße Ben.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.09.2005, 17:15   Nach oben    #8
Dark Knight
Neuer Benutzer
 
Registriert seit: 12.09.2005
Beiträge: 15
Standard PHP Code wird nicht ausgeführt !

danke @Ben für die gute erklärung es funktioniert nun alles ausser dass der Include nicht da statt findet wo er soll es wird alles am anfang includet wie kann ich das ändern ?
Dark Knight ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.09.2005, 17:26   Nach oben    #9
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.588
Standard PHP Code wird nicht ausgeführt !

Hi,
erstmal super, dass es soweit funktioniert und verstanden hast, wo der Haken war

Wäre nicht schlecht, wenn du jetzt mal zeigen könntest, wie das Script aussieht. Also wo welche Funktion aufgerufen wird etc.

Danke.
Grüße Ben.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.09.2005, 18:18   Nach oben    #10
Dark Knight
Neuer Benutzer
 
Registriert seit: 12.09.2005
Beiträge: 15
Standard PHP Code wird nicht ausgeführt !

@ Ben
Ich bin auch ein schlauer :wink:
So sieht der parser aus :

PHP-Code:

<?php
include("config.php");
connect();

function 
parse($datei="index.htm")
{
   
$datei   file_get_contents($datei) ;
   
   
$select  =  "SELECT * FROM `config`";
   
$query   =  mysql_query($select);
   
$row     =  mysql_fetch_assoc($query);
   
   
$header  =  $row['header'] ;
   
$titel   =  $row['titel'] ;
   
$content =  $row['content'] ;
   
$menu    =  $row['menu'] ;
   
$footer  =  $row['footer'] ;
   
   
$text    str_replace("{header}",$header,$datei) ;
   
$text    str_replace("{titel}",$titel,$text);
   
$text    str_replace("{content}",eval($content),$text);
   
$text    str_replace("{menu}",$menu,$text);
   
$text    str_replace("{footer}",$footer,$text);
   echo 
$text;
}

?>
Das ist die index.php :

PHP-Code:
<?php
include 'parser.php';
parse("index.htm");
?>
Dark Knight ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.09.2005, 18:28   Nach oben    #11
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.588
Standard PHP Code wird nicht ausgeführt !

Hm. Du willst so etwas wie ein include innerhalb des Templates realisieren, stimmt das?

Ich weiß gerade nicht so genau, warum du da nochmal eine PHP-Datei einbindest ..
Das ergibt für mich irgendwie keinen Sinn, weil du ja hier schon HTML-Code produzierst .. was genau soll also die .php-Datei noch machen.

Warum arbeitest du die nicht im Parser ab, speicherst die Ausgabe des Scriptes in einer Variable und weißt diese dann dem Template zu?

Grüße Ben.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.09.2005, 20:03   Nach oben    #12
Dark Knight
Neuer Benutzer
 
Registriert seit: 12.09.2005
Beiträge: 15
Standard PHP Code wird nicht ausgeführt !

Wenn ich es anders machen würde dann würde ich es so machen :

PHP-Code:
<?php
include("config.php");
connect();

function 
parse($datei="index.htm")
{
   
$datei   file_get_contents($datei) ;
   
   
$select  =  "SELECT * FROM `config`";
   
$query   =  mysql_query($select);
   
$row     =  mysql_fetch_assoc($query);
   
   
$header  =  $row['header'] ;
   
$titel   =  $row['titel'] ;
   
$content =  $row['content'] ;
   
$menu    =  $row['menu'] ;
   
$footer  =  $row['footer'] ;
   
   
$text    str_replace("{header}",$header,$datei) ;
   
$text    str_replace("{titel}",$titel,$text);
   
$text    str_replace("{content}",eval($content),$text);
   
$text    str_replace("{menu}",$menu,$text);
   
$text    str_replace("{footer}",$footer,$text);
   echo 
$text;
}
parse("index.htm");
?>
und so das template:

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>{titel}</title>
<style type="text/css">
<!--
body,td,th {
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 10px;
	color: #000000;
}
body {
	background-color: #808080;
}
.border
{
border: 1px solid black;
}
-->
</style></head>

<body>
<div align="center">
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <table width="653" >
    <tr>
      <th width="409" height="95" class="border">{header}</th>
    </tr>
    <tr>
      <td height="310" class="border" bgcolor="#ACACAC">
     <div align="center">{content}</div>
     </td>
	  <td width="130" height="310" >
	  <table width="150" height="154"  align="center" >
        <tr>
          <th height="20" bgcolor="#6A6A6A" class="border" >&nbsp;</th>
        </tr>
	<tr>
          <th scope="col" bgcolor="#ACACAC" class="border">
         &nbsp;</th>
        </tr>
      </table>
      <div align="center">
	     {menu}
          <br>
          <br>
          <br>
          <br>
          <br>
          <br>
          <br>
          <br>
          <br>
          <br>
          <br>
          <br>
          <br>
          </div>
      </td>
    </tr>
    <tr>
      <td class="border" bgcolor="#6A6A6A" height="20">
<div align="right">{footer}</div>
</td>
    </tr>
  </table>
  <p>&nbsp;</p>
</div>
</body>
</html>
Dark Knight ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.09.2005, 10:24   Nach oben    #13
DasMööp
Erfahrener Benutzer
 
Registriert seit: 14.12.2004
Beiträge: 214
Standard

PHP-Code:
/* ... */
function parse($datei
/* ... */ 
Oder wofür rufst Du

PHP-Code:
/* ... */
parse("index.htm");
/* ... */ 
auf, hier gibst Du ja schon den Inhalt für $datei mit. Oder hat es einen
Speziellen Grund das Du die Function so schreibst:

PHP-Code:
/* ... */
function parse($datei="index.htm")
/* ... */ 
__________________
Das Leben ist zwar bloß ein Adventure-Game, aber die Grafik ist verdammt gut.
Ich such immer noch den Cheat für unlimited money!
DasMööp ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten