require(_once) probleempje

Status
Niet open voor verdere reacties.

Kligham

Gebruiker
Lid geworden
7 jan 2009
Berichten
389
Hallo,

Ik zit weer met een nogal 'dom' probleem: In bijlage zitten een aantal screenshots van mijn directory op mijn host. Het probleem is dat ik in de map public_html een file index.php heb die een php script required die staat in de map output (die dus buiten public_html).

Php-code index.php:

PHP:
<?php
require_once 'output/output_fns.php';
html_header('Homepage');
html_footer();
?>

Php-code output_fns:
PHP:
<?php
function html_header (){
	
if ($title){
	html_header($title);
	}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title><?php echo $title; ?></title>
</head>
<body>
<img src = "test.jpg" alt = "test logo" border = "0"
	 align = "left" height = "160" width = "150" />
<h1>Mag ik u van harte welkom heten op mijn testwebsite</h1>
<?php
}

function html_footer (){
?>
© 2009 Peter Joole
</body>
</html>
<?php
}
?>

Ik weet dat het misloopt met de require functie in mijn index.php file maar weet niet hoe ik de verwijzing naar de juiste map/php file moet maken.

Bijgevolg heb ik nog een vraagje:

Wat is nu eigenlijk het verschil tussen require and require_once te gebruiken.

K'heb ook een paar screenies in gestoken van mijn directory tree op mijn host.
 

Bijlagen

  • directory tree.JPG
    directory tree.JPG
    39,5 KB · Weergaven: 28
  • directory public_html.JPG
    directory public_html.JPG
    41,7 KB · Weergaven: 21
  • directory output.JPG
    directory output.JPG
    30 KB · Weergaven: 27
Waarschijnlijk moet je een map omhoog gaan, voor je naar output verwijst:

PHP:
<?php
require_once '../output/output_fns.php';
html_header('Homepage');
html_footer();
?>

Met ../ kun je iig een directory omhoog gaan :)

Het verschil tussen require en require_once en dat de tweede het bestand maar 1x include, dus als je doet:

PHP:
require_once ( 'hoi.php' );
require_once ( 'hoi.php' );
require_once ( 'hoi.php' );
require_once ( 'hoi.php' );
Wordt hoi.php toch maar 1x erin gezet (bij de eerste)

Dat is erg praktisch als je een file hebt met bijv. een functie of class definitie, want als je die 2x inlaadt ontploft PHP en krijg je een "fatal error: cannot redeclare function"
 
Bedankt, het werkt nu!:thumb:

Als je nu even naar mijn website gaat www.joole.tk , dan zal je zien dat mijn foto niet geladen wordt. Weet je toevallig waaraan dit zou kunnen liggen?

In mijn output_fns.php wordt er een image in mijn body geladen (ik weet niet of hier het probleem zou kunnen liggen?)
PHP:
<?php
function html_header (){
	
if ($title){
	html_header($title);
	}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title><?php echo $title; ?></title>
</head>
<body>
<img src = "test.jpg" alt = "test logo" border = "0"
	 align = "left" height = "160" width = "150" />
<h1>Mag ik u van harte welkom heten op mijn testwebsite</h1>
<h2>Het is de bedoeling dat ik de komende dagen en weken mijn nieuwe scripts upload, zodat ze kunnen getest worden</h2>
<h3>Jullie mogen deze website uittesten naar hartelust en als je ergens een foutmelding of probleem tegen komt,
	mag je dit gerust melden door een mail te zenden naar support@peter.comoj.com</h3>
<?php
}

function html_footer (){
?>
© 2009 Peter Joole
</body>
</html>
<?php
}
?>

Ik moet er bij vermelden dat de foto zich in de map output bevindt. En in de index.php vraag ik gewoon naar de functie html_header, waardoor hij dus zou moeten ingeladen worden.
 

Bijlagen

  • test.jpg
    test.jpg
    11,5 KB · Weergaven: 19
Laatst bewerkt:
Het is HTML, dus de paden gelden vanaf de locatie waarin het bestand van de uiteindelijke output staat. Hij rekent dus vanaf de map waar index.php in staat.
 
Aangezien mijn output_fns.php en test.jpg in dezelfde map staan, mag ik er in principe van uit gaan dat ik dezelfde link mag gebruiken, (of is dit niet zo?). Aangezien mijn require_once werkt vanuit de index.php file met "../output/test.jpg .

Hoe dan ook, als ik dit dus toe pas in mijn script, toont hij nog altijd niet de foto:

PHP:
<?php
function html_header (){
	
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title><?php echo $title; ?></title>
</head>
<body>
<img src = "../output/test.jpg" alt = "test logo" border = "0"
	 align = "left" height = "160" width = "150" />
<h1>Deze website is nog onder constructie!</h1>
<?php
if ($title){
	html_header($title);
	}
}
?>

Ik heb namelijk net hetzelfde probleem met mijn registratie form die zou moeten verschijnen als je op de "registreer je nu!" zou klikken. De verwijzing lukt hier namelijk ook niet:

Dit script wordt geladen in registratie_form.php (die net zoals index.php, in de map public_html staat). Dit is dus volgens mij opnieuw hetzelfde probleem als het eerste:

PHP:
<?php
function html_login (){
?>
Ben u nog geen lid? <a href = "../output/registratie_form">Registreer je nu!</a>
<table bgcolor="#cccccc">
<tr>
	<td colspan="2">Leden kunnen zich hier inloggen:</td>
<tr>
    <td>Gebruikersnaam:</td>
    <td><input type="text" name="gebruikersnaam"></input></td></tr>
<tr>
	<td>Wachtwoord:</td>
    <td><input type="password" name="wachtwoord"></input></td></tr>
<tr>
    <td colspan="2" align="center">
    <input type="submit" value="Log in"></input></tr>
<tr>
    <td colspan="2"><a href="">Uw wachtwoord vergeten?</a></td>
</tr>
</table>
<?php
}
?>
Dit is een heel vervelend probleem, waardoor ik toch een beetje vast zit. Weet iemand hoe ik dit moet oplossen, met de correcte verwijzing naar de nodige file?

Je zult mijn week goed maken ;)
 
Ik denk dat je het plaatje gewoon eens in de public map moet zetten... volgensmij probeert de browser het plaatje namelijk rechtstreeks op te halen, waardoor hij geblokkeerd wordt door de webserver, die wel PHP in die map laat, maar niet de browser die het plaatje zoekt :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan