Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
[PHP] Befehle in Variablen speichern
- Ersteller HighTec
- Erstellt am
-=Renegade=-
Lt. Junior Grade
- Registriert
- Nov. 2006
- Beiträge
- 427
Warum probierst du es nicht ganz einfach aus
Also ich hab jetzt auch nicht mehr gemacht
Die Ausgabe lautet allerdings echo "Hallo"; anstatt Hallo, wie du das gebraucht hättest.
Meinem Versuch nach würd ich also sagen, es funktioniert nicht. Allerdings müsste es funktionieren, wenn du die Befehle in MySQL Tables speicherst und dort wieder abrufst.
so far
mfg
Also ich hab jetzt auch nicht mehr gemacht
PHP:
<?php
$test = 'echo "Hallo"; ';
echo $test;
?>
Die Ausgabe lautet allerdings echo "Hallo"; anstatt Hallo, wie du das gebraucht hättest.
Meinem Versuch nach würd ich also sagen, es funktioniert nicht. Allerdings müsste es funktionieren, wenn du die Befehle in MySQL Tables speicherst und dort wieder abrufst.
so far
mfg
davidbaumann
Commodore
- Registriert
- Aug. 2004
- Beiträge
- 4.867
Zweipunktnull
Commander
- Registriert
- Dez. 2004
- Beiträge
- 2.546
Nein. Du musst den String immer durch die Funktion eval() jagen. Auch wenn du sie aus einer Datenbank abrufst funktioniert es nicht ohne diesen Schritt.-=Renegade=- schrieb:Allerdings müsste es funktionieren, wenn du die Befehle in MySQL Tables speicherst und dort wieder abrufst.
bassti
Lt. Junior Grade
- Registriert
- Mai 2005
- Beiträge
- 265
Da ist doch gar kein Array drin. Das Semikolon ist ja in der Variable und dient damit nicht als Trennzeichen für das Skript, sondern nur für die in dem Moment noch nicht geparste Variable. Damit sind es zwei Befehle. Zuweisung und Ausgabe. Wenngleich da auch noch ein logischer Fehler in der Benennung der Variablen. Ein mal hast du 'test' und ein mal 'blah' als Bezeichner aber nicht die Rede wert
-=Renegade=-
Lt. Junior Grade
- Registriert
- Nov. 2006
- Beiträge
- 427
Computer Freak schrieb:Nein. Du musst den String immer durch die Funktion eval() jagen. Auch wenn du sie aus einer Datenbank abrufst funktioniert es nicht ohne diesen Schritt.
Gut zu wissen. Muss man bei eval() auf irgendwas acht geben. Ich bin mir zwar jetzt nicht ganz sicher, aber ich hab mal gehört, bei PHP Programmierung ist eval = evil
Was genau ist da dran und welche Fehler / Sicherheitslücken kann man damit aufreißen?
so far
mfg
AoE-Maniac
Lt. Commander
- Registriert
- Apr. 2004
- Beiträge
- 1.407
Nun, wenn du eval z.B. auf Benutzereingaben loslässt erlaubst du dem Benutzer einen beliebigen PHP-Code auszuführen, was natürlich eine große Sicherheitslücke ist.
bassti
Lt. Junior Grade
- Registriert
- Mai 2005
- Beiträge
- 265
Klar gibt es mit dieser Version vor allem in Zusammenhang mit Datenbanken erhöhte Sicherheitslücken. Denn: Wenn du es nur als File hast, weiß du was drin steht, und was es so machen soll. Wenn du es in eine Datenbank schreibst, und es dann mit eval() parst kann es z.B. durch von Usern vorgenomme Datensätze erheblich Sicherheitslücken geben. Stell dir nur mal vor, du machst eine Seite auf der jeder User eine Seite hat auf der er machen kann, was er will. Wenn er da dann mal auf deine Datenbank zugreift und mal einfach "SELECT password FROM users" sagt hat er alle Passwörter in der Hand. Nicht so ganz toll, oder? Deswegen muss du immer darauf achten, was dann am Ende geparst wird.
Meistens geht es bei guter und bedachter Programmierung auch komplett ohne eval(), aber manchmal kommt man nicht drum herum...
Meistens geht es bei guter und bedachter Programmierung auch komplett ohne eval(), aber manchmal kommt man nicht drum herum...
- Registriert
- Sep. 2006
- Beiträge
- 761
Naja Also bau ich das ganze per array so ein wenn ich das zweite array verarbeiten möchte:
Ist das richtig so oder gehört da noch was zu?
PHP:
$test = array {'echo "haalllooo";';'echo "selber hallo";'}
eval ($test[2]);
- Registriert
- Apr. 2006
- Beiträge
- 1.276
In diesem Fall gibst du aber nur einen der beiden Werte aus. Da reicht dann "echo" bzw. "print".
Wenn ich mir deinen Code so ausgeben lasse, bekomme ich lediglich eine "PHP Parse error":
Deswegen musst du es durch "echo" oder "print" ersetzen. Dein Code lautet richtig übrigens, um das "selber hallo" auszugeben:
Bei Arrays fängt PHP bei 0 an zu zählen, den Wert 2 gibt es also gar nicht.
Wenn ich mir deinen Code so ausgeben lasse, bekomme ich lediglich eine "PHP Parse error":
PHP Parse error: syntax error, unexpected T_STRING in C:\Inetpub\wwwroot\text.php(3) : eval()'d code on line 1
Deswegen musst du es durch "echo" oder "print" ersetzen. Dein Code lautet richtig übrigens, um das "selber hallo" auszugeben:
PHP:
<?php
$test = array ("haalllooo","selber hallo");
echo $test[1];
?>
Zuletzt bearbeitet:
davidbaumann
Commodore
- Registriert
- Aug. 2004
- Beiträge
- 4.867
Amosh: Lies mal den ganzen Thread!
So gehört es:
Ausgegeben wird dann
.
Du brauchst deswegen normale klammern, array() ja auch nur eine normale Funktion ist.
Ob du jetzt in deinem Array das abschliessende ; brauchst weiss ich nicht.
Gruss
So gehört es:
PHP:
$test = array ('echo "haalllooo";','echo "selber hallo";')
eval ($test[1]);
Code:
selber hallo
Du brauchst deswegen normale klammern, array() ja auch nur eine normale Funktion ist.
Ob du jetzt in deinem Array das abschliessende ; brauchst weiss ich nicht.
Gruss
- Registriert
- Sep. 2006
- Beiträge
- 761
Ja das ist mir jetzt hinterher auch aufgefallen thx..
@anosh
Es ging darum PHP Befehle in Variablen bzw. in Arrays zu Speichern und diese dann auszuführen.
Abr ich muss im allgemeinen sagen.. VIELEN DANK für die die Hilfe!
@anosh
Es ging darum PHP Befehle in Variablen bzw. in Arrays zu Speichern und diese dann auszuführen.
Abr ich muss im allgemeinen sagen.. VIELEN DANK für die die Hilfe!
- Registriert
- Apr. 2006
- Beiträge
- 1.276
@davidbaumann, nicht wirklich, ich hab es eben (wieder einmal) getestet:
@Highweb, und Arrays gibt man nunmal mit "echo" bzw. "print" aus. So hab ich das jedenfalls gelernt.
Mein Code dagegen funktioniert einwandfrei.PHP Parse error: syntax error, unexpected T_EVAL in C:\Inetpub\wwwroot\eval.php on line 3
@Highweb, und Arrays gibt man nunmal mit "echo" bzw. "print" aus. So hab ich das jedenfalls gelernt.
AoE-Maniac
Lt. Commander
- Registriert
- Apr. 2004
- Beiträge
- 1.407
Am Ende der ersten Zeile hat er ein Semikolon vergessen, wenn du das dranhängst sollte es gehen.
davidbaumann
Commodore
- Registriert
- Aug. 2004
- Beiträge
- 4.867
Macht er ja auch, nur steht der echo-Befehl in dem Array, eben das war ja im 1. Post die FrageAmosh schrieb:[...]
@Highweb, und Arrays gibt man nunmal mit "echo" bzw. "print" aus. So hab ich das jedenfalls gelernt.
Ähnliche Themen
- Antworten
- 3
- Aufrufe
- 6.605
R
- Antworten
- 13
- Aufrufe
- 1.727
- Antworten
- 18
- Aufrufe
- 2.648
- Antworten
- 12
- Aufrufe
- 7.265
- Antworten
- 3
- Aufrufe
- 4.282