Inhalt in include ändern.

Alles, was PHP betrifft, kann hier besprochen werden.

Inhalt in include ändern.

Postby ds80 » 17. June 2015 15:38

Hallo,

ich habe ein kleines Problem und suche eine Möglichkeit, Inhalte (Links) in einer per Include eingebundenen PHP-Datei zu ändern, da ich keine zwei Webseiten bereithalten will und kann.

Bis dato werden die PHP Dateien durch die einfache Funktion

<?php include($_GET['id'].'.php'); ?>

bereitgestellt. Speziell geht es darum das die Links in den PHP-Dateien angepasst werden sollen.

von: .../index.php?funk=...
nach: .../index1.php?funk=...

Ich suche schon nach Möglichkeiten (z.B. str_replace), aber bekommen keine zum Laufen. Würde mich freuen wenn mir jemand helfen würde.
ds80
 
Posts: 16
Joined: 06. April 2008 17:30

Re: Inhalt in include ändern.

Postby Nobbie » 17. June 2015 19:52

ds80 wrote:Ich suche schon nach Möglichkeiten (z.B. str_replace), aber bekommen keine zum Laufen. Würde mich freuen wenn mir jemand helfen würde.


Dann zeig uns doch mal die Dinge (den Source), die da nicht laufen. Vielleicht sehen wir den Fehler.
Nobbie
 
Posts: 13165
Joined: 09. March 2008 13:04

Re: Inhalt in include ändern.

Postby ds80 » 17. June 2015 21:02

Code: Select all
<?php
$var = file_get_contents ($_GET['id'].'.php');
$var = str_replace("index.php?id=","index2.php?id=",$var);
echo $var;
?>


Das Problem ist hierbei das das Echo die Seite zwar ausgibt, aber der PHP-Code in den PHP Dateien nicht ausgeführt wird, sondern halt nun als Quellcode. Ich muss aber den Code darin ausführen können
ds80
 
Posts: 16
Joined: 06. April 2008 17:30

Re: Inhalt in include ändern.

Postby glitzi85 » 17. June 2015 21:07

Gefährlicher Tipp wäre jetzt eval, aber so wie dein Script bis jetzt aussieht solltest du da dringend die Finger von lassen, du hast jetzt schon genug Sicherheitslöcher.

ob_start und ob_get_clean sind deine Freunde: http://de2.php.net/manual/en/ref.outcontrol.php

Das vor und hinter das include und du hast deinen geparsten output, allerdings nur wenn du den inhalt im Output ändern möchtest und nicht vor dem parsen.
User avatar
glitzi85
 
Posts: 1920
Joined: 05. March 2004 23:26
Location: Dahoim

Re: Inhalt in include ändern.

Postby Altrea » 17. June 2015 21:33

Ich kann mich glitzi vorbehaltlos in allen Belangen anschließen.
Möchtest du vor dem Parsen manipulieren musst du auf eval() zurückgreifen um den String anschließend zu parsen.
Ansonsten ist der output buffer mit ob_start(), ob_end(), etc das Mittel der Wahl.

Aber vielleicht versuchst du gerade auch ein Problem auf eine Weise zu lösen, das man anders viel besser lösen kann. Dein Konstrukt ist zumindest hochgradig ungewöhnlich.
Vielleicht könnte man dir zielgerichteter helfen, wenn du etwas ausführst wie solch ein Konstrukt zustande kommt und was das Ziel und der Zweck des Ganzen ist.
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 11926
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 10 Pro x64

Re: Inhalt in include ändern.

Postby ds80 » 17. June 2015 22:54

Externe URLs als Sicherheitsloch habe ich per htaccess gestopft.

Code: Select all
RewriteEngine On
RewriteCond %{QUERY_STRING}   (.*)=http(.*)   [NC,OR]
RewriteCond %{QUERY_STRING}   (.*)=ftp(.*)   [NC,OR]
RewriteCond %{QUERY_STRING}   (.*)urlx=(.*)   [NC]
RewriteCond %{REQUEST_METHOD} !^(GET|POST)$ [NC,OR]
RewriteRule ^(.*)  - [F]



Ich habe eine Website, die ich auf HTML5/CSS3 umgestellt habe. Einige User haben nun Probleme, vor allem durch älteren Browsern und/oder deaktivierten Javascript. Daher wollte ich das alte Layout (index2.php) zusätzlich zur neuen (index.php) bereitstellen. Grundsätzlich kein Problem, wäre die Verlinkung in den inkludierten php-Dateien nicht. Diese heißen immer "index.php?...".

Da Aktualisierungen recht aufwändig sind, will ich keine zwei Seiten parallel up-to-date halten, sondern nur eine. Dafür muss ich es nur hinbekommen das das Script die index.php in index2.php in den inkludierten PHP-Dateien umschreibt.

In der index.php bzw. index2.php ist das komplette Seiten-Design drin und das include bringt den eigentlichen Inhalt auf die Seite.

Image
ds80
 
Posts: 16
Joined: 06. April 2008 17:30

Re: Inhalt in include ändern.

Postby Nobbie » 18. June 2015 15:27

ds80 wrote:Diese heißen immer "index.php?...".


Dafür gibt es aber auch andere Lösungen, nicht nur das Umbenennen der Datei, man kann auch dafür sorgen, dass zwar der Dateiname gleich bleibt (index.php), die Datei aber von einem anderen Ort kommt. Ein anderer Ordner, ein anderer Server, ein anderer VirtualHost, irgendetwas anderes. Es gibt so viele Schrauben, die man dafür verstellen kann, man muss nur wissen, wie die Dinge zusammenhängen.

Wie wäre es beispielsweise, wenn Du die neue Seite unter "www.blablabla.de" (ich kenne Deine Servernamen nicht) anbietest und dazu einen VirtualHost anlegst, der nennt sich "old.blablabla.de" und da befindet sich die alte Seite (natürlich auch dort mit index.php usw.). Die Dateien kommen in einen anderen Ordner und dieser andere Ordner ist der DocumentRoot von old.blablabla.de
Nobbie
 
Posts: 13165
Joined: 09. March 2008 13:04


Return to PHP

Who is online

Users browsing this forum: No registered users and 49 guests