[PHP] gebruik klasses uit externe file

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Ik heb een php bestand test.php:
PHP:
1
2
3
include("http://foto.website1.nl/validate.php");

$controleer = new Validate;


in dit bestand wordt middels include een extern php bestand geladen met de volgende inhoud:
PHP:
1
2
3
4
5
6
7
class Validate{
    
    function Validate(){
        print "Validate aangeroepen";
    
    }
}


Ik krijg steeds de fout:
Fatal error: Cannot instantiate non-existent class: validate in /home/erik/domains/website2.nl/public_html/foto/test/test.php on line 4

op een of andere manier kan hij de klasse niet vinden.. als ik in validate.php een simpele print zet en verder niets werkt dit wel dus de include is goed.. of zie ik iets over het hoofd?

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

PHP:
1
$controleer = new Validate();

;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Tofu
  • Registratie: Maart 2003
  • Laatst online: 05-10-2024
code:
1
include('validate.php');

Anders rendeert hij eerst "validate.php", wat gewoon een lege pagina oplevert, en vervolgens include je dus een lege pagina en kan de functie niet gevonden worden

Acties:
  • 0 Henk 'm!

  • Upsal
  • Registratie: Mei 2005
  • Laatst online: 27-08-2024
Je include is misschien toch niet goed, als je een php bestand include met als voorvoegsel http, dan krijg je alleen de output geinclude, dus niet de php code.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Hmm, ik word net door een slim persoon gewezen op een fout die ik zelf nog niet gespot had. :P Als je een bestand vanaf een andere server includet (http:// enz), dan wordt die file, als het een PHP-file is, eerst geparset door die server, en daarna pas geïnclude. Dat betekent dat je een lege file loopt te includen. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
dat lijkt inderdaad te gebeuren...

is daar iets aan te doen?

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Niet een file met de PHP-extensie includen, maar simpelweg een tekstbestand met daarin PHP-code? :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Zorgen dat het bestand gewoon op dezelfde server aanwezig is. Als het bestand op een andere server staat kun je volgens mijn hier niks aan doen. Staat het bestand nu niet gewoon op dezelfde server? Anders kun je hem natuurlijk gewoon aanroepen zonder http:// ;)

[ Voor 31% gewijzigd door Verwijderd op 16-07-2006 21:49 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
-NMe- schreef op zondag 16 juli 2006 @ 21:46:
Niet een file met de PHP-extensie includen, maar simpelweg een tekstbestand met daarin PHP-code? :)
mja maar t gaat erom dat de phpcode niet opvraagbaar is (het is een beveiligingsdeel dat op mijn server staat wat zorgt voor authorisatie voor klanten op andere servers)

de beveiligingscode moet natuurlijk niet opvraagbaar zijn..

Acties:
  • 0 Henk 'm!

  • Tofu
  • Registratie: Maart 2003
  • Laatst online: 05-10-2024
Verwijderd schreef op zondag 16 juli 2006 @ 21:45:
dat lijkt inderdaad te gebeuren...

is daar iets aan te doen?
code:
1
include('validate.php');

Zoals ik al zei dus :P

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Als de code niet opvraagbaar is, hoe wil je hem dan kunnen gebruiken?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op zondag 16 juli 2006 @ 21:48:
Zorgen dat het bestand gewoon op dezelfde server aanwezig is. Is dit nu niet het geval? Anders kun je hem natuurlijk gewoon aanroepen zonder http:// ;)
het is wel aanwezig op dezelfde server nu (ander account) maar ik wil het graag werkend hebben op verschillende servers.. maar als het alleen op een server werkt is dat opzich ook goed.. maar vanuit account 1 heb ik natuurlijk geen bestandsrechten naar account 2

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik heb al een oplossing.. ik ga een soort API maken die simpelweg een waarde retourneerd.. (1 of 0 bijvoorbeeld)

bedankt voor de hulp.. op deze manier kan het dus niet...

Acties:
  • 0 Henk 'm!

  • Tofu
  • Registratie: Maart 2003
  • Laatst online: 05-10-2024
Dan zet je dat bestand gewoon op die andere servers ook?

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Heel handig ook als mensen niet meer willen valideren. Je zal nu iets doen als dit:
PHP:
1
2
3
if (!$controleer->CheckHost($_SERVER['HTTP_HOST'], $password)) {
  die();
}

Als mensen niet meer willen valideren halen ze dat regeltje eruit, en alles werkt. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • DexterDee
  • Registratie: November 2004
  • Laatst online: 13:59

DexterDee

I doubt, therefore I might be

Middels een directive in httpd.conf en php.ini kun je trouwens de extensie veranderen van .php in .phps en zo alsnog de source renderen. Puur ter info eigenlijk, want daarmee los je je beveiliging niet op en volgens mij gooit de color syntax highlighting roet in het eten als je de source rechtstreeks door PHP wilt laten parsen.

Het idee dat je hebt voor die API kan wel werken, maar ik zou wel een vorm van encryptie of op z'n minst obfuscatie gebruiken. Ik zorg meestal dat ik al mijn argumenten van een PHP in dergelijke constructie voor het oog in een onleesbare brij verander. In plaats van validate.php?name=henk&site=mysite maak ik er iets van als validate.php?q=AE4BED35S78SD8F7GSD8GSD

Voor simpele "op het oog" beveiliging is een welgeplaatste base64 encodering samen met een str_rot13 al heel wat. Extreem simpel te maken en weer terug te draaien, maar werpt net een iets hogere barriere doordat de resulterende parameter geen enkele zichtbare informatie geeft. En de beveiliging van zulke informatie is makkelijk op te schalen door het gebruik van strong encryption.

Overigens is het heel link om een php file rechtstreeks van een andere host te includen, tenzij je die site 100% kunt vertrouwen. Je geeft zulke hosts effectief zowat 100% controle over jouw executiepad. Een database object is zo uitgevraagd en cookies en andere privacy gevoelige dingen kunnen bij elke sessie doorgestuurd worden naar die derde partij. Beter is om bijvoorbeeld een vast formaat af te spreken, bijvoorbeeld het populaire XML formaat. Ik gebruik ook nog wel eens een simpelere variant van XML door bijvoorbeeld alleen de begin en eind tags te maken. Gewoon een string retourneren met <naam>henk</naam><leeftijd>25</leeftijd> en tussen de tags de juiste waarden uitparsen.

Dat laatste heet trouwens een webservice ;)

[ Voor 4% gewijzigd door DexterDee op 17-07-2006 00:42 ]

Klik hier om mij een DM te sturen • 3245 WP op ZW

Pagina: 1