2017-03-03 4 views
0

Gibt es eine Möglichkeit, ein PHP-Skript, das in einer MySQL-Zeile festgelegt ist, auszuführen?Ausführen von PHP-Skript von MySQL-Zeile

Zum Beispiel habe ich eine Tabelle in meiner Datenbank mit haben: id, Skript

Jede Zeile seine eigene ID & Skript hat, möchte ich eine PHP-Schleife machen, alle Zeilen mit dem PHP-Skript auszuführen, in es.

+0

http://php.net/manual/en/function.eval.php – Dimi

Antwort

0

hängt davon ab, wie Sie es in der Db gespeichert haben ... wenn sie roh PHP-Code ist Sie

$rows = whatever_query_type_you_are_using("SELECT script from table where id > 10"); 

foreach($rows as $row){ 
    exec('php '.escapeshellcmd($row['script'])); 
} 

tun könnte, oder wenn es zu einer Seite, so etwas wie dies funktionieren würde zeigen wird

foreach($rows as $row){ 
    exec('php -f '.$row['script']); 
} 
1

Sie können diese verwenden:

eval('your script'); 

VORSICHT Das Konstrukt eval() ist sehr gefährlich, da es die Ausführung von beliebigem PHP-Code erlaubt. Seine Verwendung wird daher abgeraten. Wenn Sie sorgfältig überprüft haben, dass es keine andere Möglichkeit gibt, als dieses Konstrukt zu verwenden, achten Sie besonders keine Benutzerdaten zur Verfügung gestellt, in sie zu passieren, ohne es vorher ordnungsgemäß zu validieren.

http://php.net/manual/en/function.eval.php

0

Es ist generell eine schlechte Idee, so etwas zu tun, da es für einige wichtige Sicherheitslücken erlauben kann.

Eine bessere Idee ist in der Regel eine ID zur ActionID-Tabelle, die Ihr PHP-Skript verwenden kann, um die Aktion zu validieren, bevor sie schließlich ausgeführt wird. Zum Beispiel:

$actions = array('somescript.php','someotherscript.php','another.php'); 

$rows = query("SELECT ActionId FROM table"); 

foreach ($rows as $row) { 
    if (exists($actions[$row['ActionId']])) 
     include $actions[$row['ActionId']]; 
    } 
} 

Dies verhindert wirksam das Ausführen von beliebigem Code. Sie können nur eine von einer festgelegten Anzahl vordefinierter Dinge tun.

Selbst das Ausführen und Ausführen von Dateipfaden in einer Tabelle kann gefährlich sein.

Wenn Sie unbedingt müssen, dann ist die eval function, die zuvor erwähnt wurde, wahrscheinlich, was Sie suchen. Aber ich würde dich davon abhalten, es zu benutzen.