script in mysql speichern

Alles, was PHP betrifft, kann hier besprochen werden.

script in mysql speichern

Postby rafael » 13. December 2008 11:03

ich hab das script von meiner homepage in eine sql datenbank gepackt um das ganze etwas übersichtlicher zu gestalten
aber iwie kann ich das jetzt nich richtig einbinden ich habs schon mal mit "echo" probiert aber dann kam als augabe der script text(bis auf die html teile) was ja nich ziel des ganzen war was muss ichn da für befehl verwenden damit des funzt?
rafael
 
Posts: 70
Joined: 17. September 2008 17:06

Re: script in mysql speichern

Postby Nobbie » 13. December 2008 13:10

eval()
Nobbie
 
Posts: 13183
Joined: 09. March 2008 13:04

Re: script in mysql speichern

Postby rafael » 13. December 2008 14:19

danke aber iwie kommen da trotzdem immer wieder fehler :?
naja ich glaub ich lass das einfach im script drin
rafael
 
Posts: 70
Joined: 17. September 2008 17:06

Re: script in mysql speichern

Postby Nobbie » 13. December 2008 14:51

Du solltest Dir mal angewöhnen, nicht so "SMS" zu schreiben, sondern richtige Sätze mit vollständigen Fehlermeldungen.

Das Problem bei eval() ist, dass es bereits PHP Code erwartet (also nicht die Tags <?php davor und ?> dahinter), sondern einfach nur die Statements. Es gibt einen genialen Trick, wie man eval() dazu bringt, aus diesem sog. "Interpretermodus" in den Textmodus zu schalten, so wie es bei normalen Scripts am Anfang der Fall ist. Dort werden ja normale Textzeilen (u.a. auch HTML) einfach durchgereicht und erst wenn <?php auftaucht, schaltet PHP in den Interpretermodus. Wenn dann ?> auftaucht, wird wieder in Textmodus geschaltet usw.

Der Trick besteht nun darin, dass man einfach dem eigenen Code ein '?>' voranstellt, um so zu erzwingen, dass PHP im Textmodus beginnt. Das ist sehr einfach:

Code: Select all
<?php

... // hier steht Dein MySQL um den Code zu ermitteln, nehmen wir an, er steht in der Variablen $code;
... // Nun nicht einfach eval($code) schreiben, sondern erst das '?>' voranstellen:

eval('?>'.$code);

...
?>


Du wirst sehen, nun funktioniert es.
Nobbie
 
Posts: 13183
Joined: 09. March 2008 13:04

Re: script in mysql speichern

Postby Xardas der Dunkle » 13. December 2008 15:44

naja ich glaub ich lass das einfach im script drin

Da gehört es auch hin, ... man sollte es vermeiden eval zu verwenden.
Denn eval ist eine große Sicherheitslücke, in deinem Fall ganz besonders, es muss nur irgendwer schaffen bösen php code in deine Datenbank einzuschleusen und schon hast du den Salat.
User avatar
Xardas der Dunkle
 
Posts: 482
Joined: 09. March 2008 19:40
Location: /var/www

Re: script in mysql speichern

Postby rafael » 13. December 2008 17:20

ok danke denn lass ichs wohl doch lieber^^
rafael
 
Posts: 70
Joined: 17. September 2008 17:06

Re: script in mysql speichern

Postby Nobbie » 13. December 2008 17:45

Also ich sehe das nicht so schwarz weiß. Klar, wenn es jemand schafft, an der richtige Stelle in der Datenbank den richtigen Code einzuschmuggeln, dann wird der ausgeführt.

Wenn.

Dann kann es genau so gut jemand schaffen, an der richtigen Stelle im richtigen Ordner die richtige Datei auszutauschen, die ansonsten inkludiert würde.

Wo ist da der Unterschied?

eval() ist nicht einfach so "gefährlich". Es ist immer dann besonders aufzupassen, wenn der zu interpretierende Code aus HTTP Requests generiert wird (das geschah u.a. in manchen Forenscripts), da kann dann eine Sicherheitslücke entstehen. Aber wenn Du (und nur Du) als Entwickler Code in eine Datenbank legen willst, anstatt in eine Datei, ist das nicht einfach so grundsätzlich schlecht. Darüber entscheidet eigentlich viel mehr, ob das einen Sinn hat (Portabilität beispielsweise).

Wenn es einfach nur aus "Spaß an der Freude" ist und man den Code genauso gut als Datei includen könnte, dann würde ich das auch nicht empfehlen. Aber wenn es beispielsweise dynamisch generierter PHP Code ist, der in einer Datenbank landet statt auf Festplatte, sehe ich das schon wieder etwas anders. Letztendlich mußt Du die Entscheidung treffen - aber bitte nicht nur auf Grund der sehr verallgemeindernden Darstellung, eval() wäre evil...
Nobbie
 
Posts: 13183
Joined: 09. March 2008 13:04

Re: script in mysql speichern

Postby rafael » 16. December 2008 15:01

^^ ok
aber ich muss sagen: wär nur aus spass anner freude^^
rafael
 
Posts: 70
Joined: 17. September 2008 17:06


Return to PHP

Who is online

Users browsing this forum: No registered users and 13 guests