Replacen met php file

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Phpnuke r

phpnuke r

22/12/2013 19:02:00
Quote Anchor link
Hallo,

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)
PHP script in nieuw venster Selecteer het PHP script
1
$storage = str_replace("[#".$entry."]", require_once("./Plugins/".$entry."/index.plugin.php"), $storage);

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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


Quote:
dit is gereplaced
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?
 
PHP hulp

PHP hulp

22/12/2024 08:20:45
 
- SanThe -

- SanThe -

22/12/2013 19:16:01
Quote Anchor link
Die 1 is geen random getal maar waarschijnlijk de 1 van (true) gelukt.

Eerst de file ophalen en dan de replace doen.
 
Phpnuke r

phpnuke r

22/12/2013 19:42:33
Quote Anchor link
Hoe dan precies?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
                    $timebased = require_once("./Plugins/".$entry."/index.plugin.php");
                    $storage = str_replace("[#".$entry."]", $timebased, $storage);

<< Dit werkt alleen met file_get_contents waarmee je geen php kan uitvoeren.
 
- SanThe -

- SanThe -

22/12/2013 20:50:39
Quote Anchor link
Je kan toch eerst de file ophalen.
 
Phpnuke r

phpnuke r

22/12/2013 21:11:04
Quote Anchor link
Het is voor een simpele plugin systeem dus ik moet het replacen. Als ik eerst 'require_once' uitvoer kan ik het niet meer in de replace gebruiken :(
Gewijzigd op 22/12/2013 21:11:14 door phpnuke r
 
Wouter J

Wouter J

23/12/2013 01:10:08
Quote Anchor link
require geeft een 1 terug bij succes en een 0 ij een failure. Behalve als je een return in het geïnclude bestand plaatst.

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().
 
Phpnuke r

phpnuke r

24/12/2013 12:58:28
Quote Anchor link
eval heb ik al geprobeerd maar deze wil maar niet werken.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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();
                }
            }
        }
}

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
eval("return $storage;");

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
eval("$storage");

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
eval($storage);


In het geincluded bestand heb ik zowel met
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php ?>
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
 
Wouter J

Wouter J

24/12/2013 13:34:09
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
?>
 
Phpnuke r

phpnuke r

24/12/2013 15:22:05
Quote Anchor link
Dat is precies wat ik doe! Enkel heb ik hier en daar een paar checks bijvoorbeeld of de file index.plugin.php wel bestaat en bovendien moet het mogelijk zijn meerdere plugins te replacen. Daarom staat eval NA
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if ($handle = opendir("./Plugins/")) {}
Gewijzigd op 24/12/2013 15:22:28 door phpnuke r
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.