Replacen met php file
Voor een simpele plugin systeem wil ik graag dat er door een map met plugins word gekeken. Er word in elke map gekeken of index.plugin.php bestaat. Vervolgens zou [#pluginnaam] moeten worden gereplaced met de genoemde file.
Jammer genoeg(ook logisch maargoed) werken de ondestaande codes niet:
Code (php)
1
$storage = str_replace("[#".$entry."]", require_once("./Plugins/".$entry."/index.plugin.php"), $storage);
Code (php)
1
$storage = str_replace("[#".$entry."]", file_get_contents("./Plugins/".$entry."/index.plugin.php"), $storage);
file_get_contents weergeeft alleen html(uiteraard logisch) en require_once is het volgende als resulaat:
Quote:
regel 1
[#testplugin]
regel 3
[#testplugin]
regel 3
Quote:
dit is gereplaced
regel 1
1
regel 3
regel 1
1
regel 3
Oftewel een random getal 1 op de plek waar de replace moet staan, en de replace zelf staat boven aan.
Weet iemand raad?
Eerst de file ophalen en dan de replace doen.
Code (php)
1
2
2
$timebased = require_once("./Plugins/".$entry."/index.plugin.php");
$storage = str_replace("[#".$entry."]", $timebased, $storage);
$storage = str_replace("[#".$entry."]", $timebased, $storage);
<< Dit werkt alleen met file_get_contents waarmee je geen php kan uitvoeren.
Je kan toch eerst de file ophalen.
Gewijzigd op 22/12/2013 21:11:14 door phpnuke r
Als ik het goed begrijp wil je het php bestand uitvoeren en vervolgens die waarde gebruiken? Dan kun je als ik het goed heb ob_start() en ob_end_flush() gebruiken. Zo niet dan ben je waarschijnlijk uitgeleverd op file_get_contents() en eval().
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if(isset($_GET['page'])) {
$storage = file_get_contents($connect['root'] . "Sources/pages/" . $_GET['page'] . ".php");
}else{
$storage = file_get_contents($connect['root'] . "Sources/pages/index.php");
}
/* Collect plugins */
if ($handle = opendir("./Plugins/")) {
while (false !== ($entry = readdir($handle))) {
if($entry!="."&&$entry!=".."){
if(file_exists("./Plugins/".$entry."/index.plugin.php")){
ob_start();
$timebased = file_get_contents("./Plugins/".$entry."/index.plugin.php");
$storage = str_replace("[#".$entry."]", $timebased , $storage);
ob_end_flush();
}
}
}
}
$storage = file_get_contents($connect['root'] . "Sources/pages/" . $_GET['page'] . ".php");
}else{
$storage = file_get_contents($connect['root'] . "Sources/pages/index.php");
}
/* Collect plugins */
if ($handle = opendir("./Plugins/")) {
while (false !== ($entry = readdir($handle))) {
if($entry!="."&&$entry!=".."){
if(file_exists("./Plugins/".$entry."/index.plugin.php")){
ob_start();
$timebased = file_get_contents("./Plugins/".$entry."/index.plugin.php");
$storage = str_replace("[#".$entry."]", $timebased , $storage);
ob_end_flush();
}
}
}
}
In het geincluded bestand heb ik zowel met en zonder gewerkt :( Toch blijft deze code staan:
Parse error: syntax error, unexpected '<' in D:\WampServer\www\cms\index.php(30) : eval()'d code on line 1
Gewijzigd op 24/12/2013 13:08:34 door phpnuke r
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
$storage = file_get_contents(...); // haal bestand op
$plugin = file_get_contents(...); // haal plugin bestand op
$plugin = str_replace('[#'.$entry.']', $storage); // replace [#entry] met $storage
eval($plugin); // voer plugin bestand uit
?>
$storage = file_get_contents(...); // haal bestand op
$plugin = file_get_contents(...); // haal plugin bestand op
$plugin = str_replace('[#'.$entry.']', $storage); // replace [#entry] met $storage
eval($plugin); // voer plugin bestand uit
?>
Gewijzigd op 24/12/2013 15:22:28 door phpnuke r