Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
include [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
include


 
hanspeter
14-05-2006, 11:01 
 
hi

wenn ich eine datei mit include in ein script einlese, kann ich ja die variablen aus include verarbeiten...

geht das jetzt auch irgendwie umgekehrt, dass ich variablen, die ich auf der eigentlichen seite deklariere in der include-datei verarbeite?
die include-datei befindet sich auf einem anderen server.

index.php
...
$a = 'test';
include('http://www.andererserver.de/include.php');
...

include.php
<?
echo $a;
?>

wie krieg ich hin, dass das funktioniert?
gruß hanspeter

 
Morri
14-05-2006, 11:05 
 
das geht nur dann, sofern auf dem externen server kein PHP installiert ist oder du die Datei nicht .php sondern z.B. .txt nennst da sie sonst ansonsten bevor sie zu dir kommt durch den PHP-Parser geht und somit der Code :

<?
echo $a;
?>

als eine leere Datei interpretiert wird, da ja $a leer ist.

Grüße
Matthias

 
ghostgambler
14-05-2006, 11:07 
 
Original geschrieben von hanspeter
...
include('http://www.andererserver.de/include.php');
...
*headdesk* *headdesk* *headdesk* *headdesk*


include ('/www/htdocs/sonstwas/blabla/direkt_übers_filesystem/include.php');

in den seltesten Fällen will man wirklich das ERGEBNIS eines php-Skriptes includieren ~_~



Was kommt denn wenn du
http://www.andererserver.de/include.php
im Browser aufrufst? Nicht der php-Source! (sollte zumindest nicht...) D.h. du includierst eine schon vollzogene Ausgabe von $a und das ist doch nicht was du willst!
Du musst die Datei über das Filesystem includieren (siehe mein Beispiel)

 
hanspeter
14-05-2006, 14:10 
 
also das mit der .txt datei klappt nicht.

was ich aber ausprobiert habe, und was auch klappt, ist:
ich gebe die variablen wie get-variablen mit:

...include.php?a=test

@ghostgambler: versteh ich nicht. wie soll ich auf das script zugreifen?

aber auch nicht mehr geht das auswerten von variablen, die in include.php deklariert wurden. hab das gefühl, das hat was mit dem was ghostgambler sagt, zu tun...

 
ghostgambler
14-05-2006, 14:56 
 
Original geschrieben von hanspeter
aber auch nicht mehr geht das auswerten von variablen, die in include.php deklariert wurden. hab das gefühl, das hat was mit dem was ghostgambler sagt, zu tun...
hat es ... du musst die Datei direkt über das Filesystem includieren, also unter Windows z.B.


include('C:/xampp/htdocs/blabla/index.php');

oder unter Linux eben

include('/xampp/htdocs/blabla/index.php');

und nicht über

include('http://localhost/blabla/index.php');

weil du bei letzterem die schon geparste Datei includierst!

 
hanspeter
14-05-2006, 15:40 
 
irgentwie funktioniert das noch immer nicht.

kann ich jetzt folgendes eingeben?
include('/www/htdocs/meinserver.de/unterordner/include.php');

wenn ich in der includedatei schreibe:
echo 'test' dann gibt er 'test auch aus, aber wenn ich
echo $a schreibe, dann gibt er das nicht aus. (ich arbeite jetzt ohne meine methode mit dem per get weitergeben)

was auch nicht funkt ist, dass ich in include.php $b ein wert zuweise und dieser wert dann durch echo $b in der normalen datei ausgegeben wird...

 
penizillin
14-05-2006, 15:50 
 
bitte den kompletten test-code zeigen.

 
hanspeter
14-05-2006, 16:09 
 
seite.php:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Unbenanntes Dokument</title>
</head>

<body>
<?php
$a = 'test';
$seite = 'http://web3.vs247071.vserver.de/lil/include2.php';
echo $seite;
include($seite);
echo $c;
?>
</body>
</html>


include2.php

<?php
echo '<br>include2.php: ';
echo $a;
$c = 'test2';
?>


ist $seite = '/www/htdocs/web3.vs247071.vserver.de/lil/include2.php' funktioniert garnichts mehr

 
hanspeter
14-05-2006, 17:12 
 
also das mit dem pfad hab ich jetzt gescheckt. weiß neuerdings auch, dass sich der pfad durch getcwd() anzeigen lässt. aber wei das ganze serverübergreifend gehen soll weiß ich noch immer nicht, denn der pfad, der bei getcwd() rauskommt ist ja nur der pfad auf dem aktuellen server...

 
chrigu99
14-05-2006, 17:22 
 
Gar nicht, da Du Serverübergreifend immer nur die bereits geparste PHP-Seite erhältst. Entweder musst Du Deine Variablen per URL mitgeben oder das Ganze anders lösen.

Grüsse, Chris

 
ghostgambler
14-05-2006, 17:30 
 
oder du speicherst den Source auf dem anderen Server in einer .txt-Datei, sodass du den php-Code ungeparst erhälst

 
chrigu99
14-05-2006, 18:44 
 
Original geschrieben von ghostgambler
oder du speicherst den Source auf dem anderen Server in einer .txt-Datei, sodass du den php-Code ungeparst erhälst

Jedoch wäre dies dann eine grössere Sicherheitslücke... Besonders wenn etwa in der txt noch MySQL-Zugangsdaten oder so stehen... :cool:

Grüsse, Chris

 
hanspeter
14-05-2006, 22:00 
 
hab mal gelesen, dass man eine variable über return an das hauptscript zurückgeben kann. aber das funkt auch irgendwie nicht serverübergreifend.

kennt sonst irgendwer eine methode, wie man serverübergreifend von der includeten datei variablen an das hauptscript zurückgibt?

 
onemorenerd
14-05-2006, 22:44 
 
Das Include muß PHP-Code ausgeben, alles andere wandert sowieso gleich in den Ausgabepuffer des Hauptscripts.

PHP-Code gibt es aus, wenn es
a) nur eine Textdatei ist oder
b) sich selbst ausgibt

Letzteres kann man mit einem schwachen(!) Sicherheitscheck kombinieren.

include2.php:
<?php
$hard_key = 'foobar';
if (isset($_GET['key']) && $_GET['key'] == $hard_key) {
echo <<<OUT
<?php
echo '<br>include2.php: ';
echo $a;
$c = 'test2';
?>
OUT;
} else echo 'piss off!';
?>

seite.php fast wie gehabt:
<?php
$a = 'test';
$seite = 'http://web3.vs247071.vserver.de/lil/include2.php?key=foobar';
echo $seite;
include($seite);
echo $c;
?>

 
hanspeter
14-05-2006, 22:59 
 
schön gedacht! funktioniert aber nicht

 
onemorenerd
14-05-2006, 23:59 
 
Du mußt die Dollarzeichen in der Ausgabe von include2.php escapen.

 
muh (newbie)
15-05-2006, 00:36 
 
wem gehört überhaupt die zu inkludierende Datei? Vielleicht möchtest Du eher mit <iframe> einen fremden Inhalt einbauen?

 
muh (newbie)
15-05-2006, 00:38 
 
kommt mir grad noch was in den Sinn, müsste er nicht den php-Disassembler benützen, um aus dem php output wieder auf den Quellcode zu kommen?

 
chrpun
15-05-2006, 00:47 
 
php-Disassembler??:rocks: :rocks:

mir fallen spontan 17908366592^56621 Möglichkeiten ein, den Output

<strong>Hallo DAU!</strong>

mit PHP zu produzieren...:rofl: :goth:

 
ghostgambler
15-05-2006, 14:29 
 
mittlerweile hat das Thema seinen Tiefpunkt erreicht ... wie kann man nur 2 Seiten über dumme includes palabern ~_~


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:52 Uhr.