Wat kan ik hier fout doen?

Status
Niet open voor verdere reacties.

e-mail-user

Gebruiker
Lid geworden
24 apr 2007
Berichten
121
Schermafbeelding 2018-02-13 om 17.25.27.png
Simpel zat toch? require een een bestand dat binnen het project bestaat. Maar toch.
Wat doe ik fout, niet voldoende of juist teveel?
In het voorbeeld een beetje aan de kleine kant, maar met een klik zou het leesbaar moeten zijn.
 
Waarom staat die foutmelding zo in je editor? Of heb je dat even gedaan voor de visualisatie? :)

Je zit al in de dezelfde map, dus je moet die includes-map er niet bij te benoemen.
 
Of een stel variabelen voor een absoluut pad ipv een relatief pad.
Code:
<?php
$subDir  = '';  // hoofdmap ''  of  submap voorbeeld '/sub/mijnsite'
$baseDir = str_replace('\\','/',$_SERVER['DOCUMENT_ROOT']).$subDir;
$cssDir  = $baseDir.'/css/';
$incDir  = $baseDir.'/includes/';
$jsDir   = $baseDir.'/js/';

require($incDir.'config.php');
?>
Het is handig als je index.html hernoemt naar index.php. Dan kan je deze php bovenaan in bestand index.php zetten (logische plek).

Suc6. Have fun.
 
Dit levert nog niet het verwachte resultaat.
Laat in dit statement: "require ('includes/class-db.php');" de "includes/" weg, dan stopt het script new als voorheen.

In document_root staat: '/Applications/MAMP/htdocs', dat begrijp ik want ik werk op de localhost.

In de responsmail die ik in een voorgaand deel van de login applicatie maakte en verstuurde, staat de volgende link:
http://localhost:3000/mylogin/inclu...52ee3eb8f6f43744f3fdb65deec7b6628fec673fb507f

Blijkbaar is bij het versturen van de link, het stukje: "http://localhost:3000/" niet vervangen door: "/Applications/MAMP/htdocs".

De vraag is nu: hoe gaat dit werken?
Het stukje: "http://localhost:3000/" gewoon niet gebruiken maar direct: "/Applications/MAMP/htdocs" invullen?
En wanneer de applicatie "life" gaat de domeinnaam invullen?
 
Uiteraard wordt je script alleen uitgevoerd via de webserver, en in jouw geval via localhost.
 
Een linkje van een responsmail is nooit een volledig directory pad als '/Applications/MAMP/htdocs:3000/mylogin/includes/verify.php?email=....'
Heb je een werkende smtp of sendmail of mail op je mamp? Dat is nodig om de email met het linkje te versturen. Het linkje bij #5 lijkt mij goed.

Als je de variabelen bij #3 gebruikt kan je makkelijk live. Het enige wat je moet veranderen is $subDir (alleen als je live alles in een submap gaat zetten). Laat $subDir = ''; als je alles in htdocs (of public_html) zet.
 
Sorry. ik zet jullie en mezelf op het verkeerde been.
Wanneer ik de link uit #5 aanmaak zonder de "/incudes" map EN
ik zet het script verify.php in de root van de map "MyLogin" dan werkt het vlekkeloos.
Ik land keurig in het script "MyLogin/verify.php" EN het statement "require('includes/class-db.php')" wordt perfect uitgevoerd.
Het enige is dat ik niet snap waarom het nu wel werkt.
Graag een verhelderend antwoord van iemand die het wel snapt.
 
Deze twee verhalen maken het wellicht iets duidelijker:
http://www.phpinternalsbook.com/php7/extensions_design/php_lifecycle.html
https://abhinavsingh.com/how-does-php-echos-a-hello-world-behind-the-scene/
Met name deze opmerking doet een vermoeden rijzen:
"
RINIT method can be thought as an auto_prepend_file directive, which is pre-appended to every PHP script before execution.
A typical RINIT method looks like:

PHP_RINIT_FUNCTION(extension_name) {

/* Initialize session variables, pre-populate variables, redefine global variables etc */

}
"
Helemaal verkeerd misschien, maar als ik "verify.php" niet vanuit de hoofdmap opstart, dan maakt PHP geen of een onvolledige "auto_prepend_file directive" aan; en dan werkt het niet.
Graag een reactie.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan