ERLEDIGT
JA
JA
ANTWORTEN
11
11
ZUGRIFFE
6485
6485
EMPFEHLEN
-
Hallo Leute.
Es gibt ja mittels eval() die Möglichkeit PHP-Codes in einem String auszuführen und somit auch PHP-Scripte aus einer Datenbank auszulesen. Nun ist aber mein Problem dass bei der Funktion eval() dass der String ein kompletter PHP-Code sein muss. Hier ein Beispiel wie ein Eintrag aussieht :
Nun möchte ich dass der PHP-Code geparst wird. Ich habe bereits verschiedene Funktionen für die Ausgabe von gemischten Einträgen probiert jedoch bekam ich immer Fehlermeldungen wiePHP-Code:[h1]Überschrift[/h1]
[b]Beschreibung[/b]
<?php
echo "Hallo".$_SESSION[User];
include("user.php?Name=".$_SESSION[User]);
?>
Ich bin echt am Ende mit meinem Latein. Ich hoffe ihr könnt mir helfen.Parse error: syntax error, unexpected T_ECHO in C:\Programme\Apache Group\Apache2\htdocs\homepage-hilfe\templates\generatoren\generatoren_flash.php(14) : eval()'d code on line 3
mfg daniel
-
Dann Poste doch mal die Datei generatoren_flash.php sonst können wir dir nicht helfen!
-
Hallo.
Hab mal das wichtigste zusammengefügt und hier der Code:
Hier der Eintrag in der Tabelle generatoren_flash:PHP-Code:<?php
/*
** generatoren_flash.php
*/
## Daten aus der Datenbank holen
...
## Check ob ein Eintrag exestiert
...
## Definition Variablen aus der Datenbank
$titel = $result[0][Titel]; //Titel des Generators
$beschreibung = $result[0][Beschreibung]; //Bescheiubung des Generators
$text = bbcode($result[0][Text]); //Text des Generators + Umwandlung der BB-Tags in html tags
?>
...
<h2><?php echo $titel; ?></h2>
<b><?php echo $beschreibung; ?></b>
<br><br>
<?php echo $text; ?>
...
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
ID: 1 ----------------------------------- Titel:Meta Tag Generator ----------------------------------- Beschreibung: Ein Generator zum generieren von Metatags ----------------------------------- Text: [i]Einfach deinen Namen in das Textfeld eintragen und auf Absenden klicken Dann muss der Code nur noch zwischen <head> und </head> eingefügt werden[/i] <?php if($_POST["sent"] && $_POST["copyright"] != "") { $ausgabe = '<meta name="copyright" content="'.$_POST["copyright"].'" />'; } ?> <form action="<?php echo $_SERVER["REQUEST_URI"]; ?>" method="post"> <input type="hidden" name="sent" value="1"> <input type="text" name="copyright" value="<?php echo $_POST["copyright"]; ?>"> <input type="submit" value="Absenden" name="submit"> </form> <hr> Ihr Code: <?php echo $ausgabe; ?>
Der PHP-Code soll nun auch wirklich ausführbar sein.
mfg daniel
-
mhh, eigentlich brauch ich die Zeile 3, aber da du das jetzt so schön bearbeitet hast, hab ich da keine Chance....
-
Aso du willst den Fehler aus den ich gepostet habe suchen. Die Funktion die diesen Fehler verursacht hat ist schon wieder weg (hab jo weiter probiert das Problem zu lösen).
Aber hier der alte Code:
Und dann kommt diese Fehlermeldung zu stande (ist jetzt ne neue da der Datenbankeintrag neu ist ) :PHP-Code:<?php
//Daten aus der Datenbank Holen
$db = new db1();
$sql = "SELECT * FROM generatoren_flash WHERE ID = ".$_GET["ID"];
$result = $db->db_sql($sql);
//Funktion für das Umwandeln von HTML-Code und PHP-Code zu einem geparsten PHP-Code
function eval_mixed_helper($arr){
return ("echo stripslashes(\"".addslashes($arr[1])."\");");
}
function eval_mixed($string){
$string = "<? ?>".$string."<? ?>";
$string = preg_replace("/<\?=\s+(.*?)\s+\?>/", "<? echo $1; ?>", $string);
$string = str_replace('?>', '', str_replace( array('<?php', '<?'), '', preg_replace_callback( "/\?>((.|\n)*?)<\?/","eval_mixed_helper",$string) ) );
return eval($string);
}
//Zuweisen der Variablen
$titel = $result[0][Titel]; //Titel des Generators
$beschreibung = $result[0][Beschreibung]; //Bescheiubung des Generators
ob_start();
eval_mixed($result[0][Text]);
$text = ob_get_clean();
?>
Parse error: syntax error, unexpected T_IF in C:\Programme\Apache Group\Apache2\htdocs\homepage-hilfe\templates\generatoren\generatoren_flash.php(15) : eval()'d code on line 4
-
Da du da ja nun mit Klassen arbeitest, bräuchte man nun noch die Methode (db_sql) also da solltest du mal nach dem Fehler schauen oder das ganze auch posten...oder seh ich da was falsch?
-
Also an der Klasse kann es nicht liegen. Die hab ich mir mal vor einer kleinen Ewigkeit geschrieben und hat bis jetzt immer Funktioniert. Ist nur ne praktische Datenbankklasse die eben den SQL-Code der angegeben wird ausführt. Die Klasse funktioniert doch auch auf dem Rest der Seite aber hier mal die Klasse:
PHP-Code:<?php
## Klasse für einen Datenbankzugriff(class_db.php)##
class db1 {
#### Variablen ####
var $Server = "localhost";
var $User = "user"; //User für den Server
var $Pass = "pass"; //Passwort für den Server
var $DBank = "datenbank"; //Welche Datenbank verwendet werden soll
var $erg; //Ergebnismenge
var $anz; //Datensätze
var $ID; //ID eines neu eingefügten Datensatzes
var $affectedrows; //Anzal der betroffenen Datensätze
var $fehler; //letzte Fehlermedung von MySQL
#### Konstruktor ####
function db1()
{
$this->verbinden();
$select = mysql_select_db($this->DBank,$this->conn);
}//ende Konstruktor
#### Methode für das ausführen des SQL-Codes ####
function db_sql($sql,$debug=0)
{
Static $DBcount;
$this->dbcount=++$DBcount;
$this->erg=@mysql_query($sql, $this->conn);
$this->anz=@mysql_num_rows($this->erg);
$this->ID=@mysql_insert_id();
$this->affectedrows=@mysql_affected_rows();
if($debug==1){echo "<br>".$sql."<br>"; }
if($this->anz > 0)
{
for($i=0;$i<$this->anz;$i++)
{
$back[$i]=mysql_fetch_array($this->erg);
}
}
elseif(!$this->erg)
{
$this->fehler=mysql_error();
if($debug==1){echo "<br>".$this->fehler."<br>"; }
return FALSE;
}
elseif($this->anz==0)
{
return FALSE;
}
else {
return TRUE;
}
return $back;
}//ende Methode
#### Methode für die Verbindung zur Datenbank ####
function verbinden()
{
STATIC $conn;
if(!$conn)
{
$conn = mysql_connect($this->Server,$this->User,$this->Pass);
}
$this->conn=&$conn;
}//ende Methode
}//Ende Klasse
?>Geändert von Danielku15 (02.09.05 um 04:25 Uhr)
-
Boah, kann das sein das der Fehler einfach was mit deiner PHP Konfiguration zu tun hat?!
-
Puh, da bin ich überfragt. Ich werds mal auf nem anderen Server testen und dann bescheid geben.
-
An der PHP-Konfiguration liegts nicht. Ich hab jetzt endlich den Fehler gefunden. Diese Funktion ist nur darauf ausgelegt PHP-Codes mit in <? ?> richtig zu parsen aber nicht <?php ?> und ich hab immer das 2. verwendet. Nur irgendwie komm ich nicht dahintert wie ich die Funktion umschreiben kann sodass <?php ?> und <? ?> akzeptiert wird. Aber mir reicht eigentlich <?php ?> da ich eh nur diese Tags verwende.
mfg daniel
-
wieso speicherst du eigentlich PHP Code in der Datenbank?
Ist das nicht etwas "unperformant"?
Du könntest in diesem Fall auch gleich die PHP Seite erzeugen...
-
Der Code wird in die Datenbank gespeichert weil es eine Art CMS wird. Es gibt ja nicht nur die Datei generatoren_flash.php sondern auch z.b. generatoren_grafik.php. Und in jeder Kategorie werde ich neue Generatoren online stellen und da jedes mal die Datei zu erstellen und dann noch alles zu verlinken wäre ne riesen Arbeit. Und dann sollte die Datei noch über die eingebaute Suche zu finden sein. Da speichre ich lieber den Code in die Datenbank und lies einfach alle Generatoren in der Übersicht und den Inhalt bei der Generatorenansicht aus. Geht so viel einfacher und ist dann auch über das Adminmenü bearbeitbar.
Zitat von aKraus
mfg daniel
Ähnliche Themen
-
HTML/PHP-Code von Datenbank in Textarea
Von lukelukeluke im Forum PHPAntworten: 3Letzter Beitrag: 14.05.07, 11:30 -
PHP code und HTML Code im Forum anzeigen lassen!
Von redheador im Forum PHPAntworten: 1Letzter Beitrag: 09.04.07, 18:44 -
HTML Code auslesen
Von brainsucker im Forum PHPAntworten: 2Letzter Beitrag: 26.01.07, 16:39 -
Probleme mit HTML Code aus Datenbank lesen
Von toboli im Forum PHPAntworten: 0Letzter Beitrag: 09.12.05, 23:35 -
Auslesen aus html code
Von cybermotte im Forum CGI, Perl, Python, Ruby, Power ShellAntworten: 8Letzter Beitrag: 12.03.05, 15:03





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren