[PHP] remote include

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
Ik ben bezig met een pagina die include's maakt over verschillende servers.
De include naar een andere server werkt gewoon naar behoren en als ik daar tekst in zet dan drukt hij deze ook netjes af.

Wanneer ik nu een functie maak in deze include file dan kan ik deze niet aanroepen in de main file die die functie wel met die file include.

Nu ging ik op php.net kijken bij include en daar doen ze iets met if then else om een nummer terug te sturen. Nu dacht ik dus ik maak geen functie maar stop het in een variable en die return ik, ook zonder succes.

PHP:
1
$return = include('http://server/file.php');

werkt dus niet.

Dit werkt ook niet

Main file
PHP:
1
2
include('http://server/file.php');
$return = test();


include file 'file.php'
PHP:
1
2
3
4
function test()
{
  return 'test';
}


als de include file dit doet
PHP:
1
echo 'test';


en je include deze gewoon dus zonder de functie test aan te roepen dan drukt hij het wel af. Maar omdat ik eigenlijk een array wil terugsturen en de opmaak in mijn main file wil afhandelen probeerde ik het met functies.

Heeft iemand een idee hoe dit toch met functies kan of kan dit gewoon helemaal niet...

  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
Includen van andere servers is niet mogelijk. [search="remote include"]

Verwijderd

Als je een remote pagina include via http krijg je alleen de output van dat PHP script. Anders zou je ook bijvoorbeeld sourcecodes van andere sites kunnen openen :)

  • Tux
  • Registratie: Augustus 2001
  • Laatst online: 18-09 21:53

Tux

Je kan niet over het internet de source ophalen van een bestand. Een webserver geeft namelijk alleen de output terug.

PHP:
1
2
3
<?php
echo "function test()\n{\n\treturn 'test';\n}\n";
?>


Dan kan je de output openen en met eval() uitvoeren, maar dat is - vooral als je de source over internet op gaat halen - erg onveilig.

The NS has launched a new space transportation service, using German trains which were upgraded into spaceships.


  • Sjaaky
  • Registratie: Oktober 2000
  • Laatst online: 20-09 23:02
Als je geen php installeert op de server waar je het bestand van include zou het toch moeten werken? Als je een andere extensie gebruikt dan php zou het ook moeten kunnen.
Of het onveilig is hangt maar net af van de gegevens in het bestand. Passworden ed. moet je er idd niet in opslaan.

  • EnnaN
  • Registratie: September 2002
  • Laatst online: 12-09 11:42

EnnaN

Toys in the attic

ik weet alleen niet waarom je op een site waar je geen php hebt, of waar iig de file niet als php wordt geparsed, een file wil gaan zetten om die ergens anders in te includen...dan kan je die txtfile (want dat word het dan voor je webservereenheid) net zo goed op die andere bak copieen toch?

post anders evt het doel, dan dneken we mee :-)

sig


Verwijderd

Topicstarter
Ik heb 3 webservers staan(allen met php) en wil met één systeem (op één websever) alles kunnen beheren op de andere servers.

Nu had ik in gedachte om de layout te maken op één webserver en via include functies uitvoeren op de server zoals deze gegeven is.

Dit kan dus alle drie zijn, dit staat vermeld in de database waar ook de layout draait.

Vanuit daar bepaal ik het include path naar een van de server, kan dus ook zichzelf zijn.

Daar wil dus gewoon het result terugsturen en weer met de main layout verder afhandelen.

Wanneer dan de layout aangepast wordt hoef ik alleen de layout aan te passen en niet de include files.

Dat is een beetje de bedoeling.

[ Voor 80% gewijzigd door Verwijderd op 19-02-2004 13:19 ]


  • 4VAlien
  • Registratie: November 2000
  • Laatst online: 24-06 09:47

4VAlien

Intarweb!

Als je wilt makkelijk wilt updaten etc. dan kan je beter een shell scriptje maken denk ik.

  • Sjaaky
  • Registratie: Oktober 2000
  • Laatst online: 20-09 23:02
Als ik je goed begrijp wil je het volgende:

Op server A zit je in je 'management app'.
Op server A include je een bestand van server B die een functie test() bevat.
Je roept op server A test() aan en wilt dat deze uitgevoerd wordt op server B.

Om een lang verhaal kort te maken, dat kan niet op deze manier.

-edit-
Trouwens als het alleen om de layout gaat kan je het beste de layout van een centrale server includen. De functionaliteit houd je dan op elke server apart (wat uiteraard op html niveau zo gemaakt kan worden dat als 1 systeem oogt).

[ Voor 30% gewijzigd door Sjaaky op 19-02-2004 13:40 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb het op een andere manier opgelost, het is niet helemaal wat ik wilde en bedoelde maar met de onderstaande code kan ik het toch in een variable proppen.

PHP:
1
2
3
4
5
6
7
<?
ob_start();
    include 'http://user:wachtwoord@'.$server_url.'/'.$path.'?'.$var;
    $data = ob_get_contents();
    ob_clean();
ob_end_flush();
?>
Pagina: 1