login  Naam:   Wachtwoord: 
Registreer je!
 Forum

include vanaf externe server

Offline XAXIS - 08/11/2006 16:13 (laatste wijziging 08/11/2006 16:15)
Avatar van XAXISNieuw lid Hallo leutes,

Een raar probleem.

Op de localhost staat een PHP bestand waarin een andere PHP-bestand wordt geinclude.

Dit bestand staat op een server en wordt dmv een url geinclude.

Als ik in het geinclude bestand echo's zet, komt dit wel naar voren, maar gebruik ik variabelen of $_SESSION, dan 'negeert' ie deze gewoon.

Enig idee?

Bestand op localhost:
  1. <?php
  2.  
  3. session_register($_POST['gebruikersnaam']);
  4. include("http://www.finaq.nl/controle.php");
  5. ?>


Bestand op Finaq.nl:
  1. <?php
  2. echo 'Test';
  3. echo $_SESSION['gebruikersnaam'];
  4. ?>

de TEST echo werkt wel, maar die van session niet.

11 antwoorden

Gesponsorde links
Offline pj_muller00 - 08/11/2006 16:15
Avatar van pj_muller00 PHP interesse Sessie bestanden zijn gekoppeld aan de server.
En er zal wel een beveiliging opzitten om deze niet door te geven aan externe pagina's.

Persoonlijk zou ik ook niet proberen die beveiliging af te zetten    
Offline XAXIS - 08/11/2006 16:16 (laatste wijziging 08/11/2006 16:21)
Avatar van XAXIS Nieuw lid Okee duidelijk.
Maar ook variabelen: $test = 'test'; werken niet, en laat dit nou net het pluspunt van includes zijn  

Zo kan ik dus ook geen variabelen in de geinclude pagina aanmaken en deze vervolgens weer tonen op de hoofdpagina....
Offline Dark_Paul - 08/11/2006 16:22
Avatar van Dark_Paul PHP ver gevorderde Als je een bestand van een externe server include, wordt alleen de geparste-info geïnclude. Dus niet 't script. Anders zou ik bijvoorbeeld een pagina kunnen maken waarmee ik alle tabellen van jou MySQL database drop. Het enige wat ik dan hoeft te doen om dat werkend te krijgen is de bestandsnaam waar jij je connectie in maakt te weten. Die include ik, er wordt verbinding gemaakt, hopla!
Offline XAXIS - 08/11/2006 16:27 (laatste wijziging 08/11/2006 16:28)
Avatar van XAXIS Nieuw lid Dat wilde ik juist voorkomen, dat een 'gebruiker' óók de connectie naar de mysql dbase weet doordat die php bestand in dezelfde map staat.

Daarom wilde ik dus het bestand wat verbinding maakt met de database op een server gooien, en deze vanuit localhost aanroepen. Zo krijgt de gebruiker niet de kans om de gegevens van de database op te zoeken.

En andere dingen die de gebruiker niet in de source mag zien wil ik ook door een php-bestand op een andere server laten uitvoeren, echter moet ik dus wel variabelen van en naar elkaar kunnen communiceren, daarom dacht ik aan $_SESSIONs.

Hoe kan ik dit het beste oplossen volgens jullie dan?
Offline Ultimatum - 08/11/2006 16:30
Avatar van Ultimatum PHP expert ook maak je een sessie niet dmv: session_register($_POST['gebruikersnaam']);

maar $_SESSION['naam'] = $var, of ik moet session_register ergens andrers voor aanzien 
Offline XAXIS - 08/11/2006 16:33 (laatste wijziging 08/11/2006 16:33)
Avatar van XAXIS Nieuw lid beide kan, ik gebruik normaal ook $_SESSION['blabla'] = $var maar om dit uit te sluiten had ik ook even session_register geprobeerd.
Offline Dark_Paul - 08/11/2006 16:34 (laatste wijziging 08/11/2006 16:36)
Avatar van Dark_Paul PHP ver gevorderde PHP kan je niet in de source zien.. tenzij je een show_source() script maakt waarbij een gebruiker zelf in mag typen welke pagina hij/zij de bron van wil bekijken.
Je geeft een gebruiker niet zomaar toegang tot jou database, hij/zij moet daarvoor op jouw localhost zijn bestanden zetten om de databaseconnectie succesvol te includen.
ALs jij je database connectie vanaf finaq.nl werkend zou kunnen includen op je localhostscript, zou dat niet veilig zijn. Dan kan ik die dus ook vanaf mijn computer includen en overal mee rommelen... Oftewel, als je PHP variabele enzo wilt gebruiken vanuit een include, moeten het 'hoofdbestand' en het bestand dat je include op dezelfde server staan. Anders werkt het dus niet.
Offline XAXIS - 08/11/2006 16:40 (laatste wijziging 08/11/2006 16:42)
Avatar van XAXIS Nieuw lid Het is al opgelost maar toch even een argument waarom.  

De gebruiker krijgt de script op zijn computer. Daarom heeft ie dus ook toegang tot de PHP bestanden, en daarom wil ik niet dat ie direct vanuit die bestanden een verbinding maakt met de databaseserver.

De oplossing overigens was door de geinclude pagina een andere extensie te geven (.inc) zodat deze niet geparsed wordt door de externe server.

En effe Zend eroverheen laten wandelen 
Offline Thomas - 08/11/2006 16:59 (laatste wijziging 08/11/2006 17:00)
Avatar van Thomas Moderator
Citaat:
De gebruiker krijgt de script op zijn computer
Sorry, maar WTF?

Dat is dus een dikke misvatting. De gebruiker krijgt de uitvoer van een script "op zijn computer".

Het is juist super-ONveilig om bestanden met gevoelige informatie geen PHP-extensie te geven. Als deze namelijk in de webdirectory staat, dan kun je deze rechtstreeks aanroepen. Een .inc bestand wordt niet aan de serverzijde behandeld, tenzij jij aangeeft dat bestanden met deze extensie een speciale behandeling nodig hebben.

In jouw geval lijkt het mij het verstandigste om deze "gevoelige" bestanden helemaal buiten je webdirectory te houden, want je hebt er blijkbaar weinig kaas van gegeten.

EDIT: Je bent natuurlijk ook gezien als PHP om wat voor reden dan ook niet meer actief is op je server - dan kun je deze bestanden ook (de niet-verwerkte scripts) rechtstreeks opvragen.
Offline Dark_Paul - 08/11/2006 17:11
Avatar van Dark_Paul PHP ver gevorderde Leuk om te weten, als ik dus jou de naam van het bestand weet warmee jij je databaseconnectie maakt, kan ik dus al je tabellen legen 
Offline Thomas - 08/11/2006 18:42
Avatar van Thomas Moderator Eh, dat is nog steeds lastig dan - tenzij je zo'n licht bent dat je voor FTP en MySQL dezelfde username / password combinatie gebruikt.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.185s