php include vraag

Status
Niet open voor verdere reacties.

tombalfoort

Gebruiker
Lid geworden
25 sep 2006
Berichten
386
Hallo lezer,

Ik heb een vraag. Ik heb met lange tijd dit script gebruikt en het heeft een updat nodig. Ik kan het echter niet voor elkaar krijgen. Daarom mijn vraag:

Ik heb onderstaande script. Echter wordt nu als iemand naar de index.php gaat de index toegevoegd. Als ik ?page=about doe voegt hij netjes de about pagina toe. Die kan hij vinden op de server. Als ik echter about-me doet krijg ik een php error. Namelijk onderstaande. Wie weet hoe ik dit kan oplossen? Ik wil een eigen 404 pagina invoegen namelijk.

De foutmelding en scripts:

PHP:
Warning: include(error/404) [function.include]: failed to open stream: No such file or directory in /home/tombalf/domains//public_html/index.php on line 59
Warning: include(error/404) [function.include]: failed to open stream: No such file or directory in /home/tombalf/domains//public_html/index.php on line 59
Warning: include() [function.include]: Failed opening 'error/404' for inclusion (include_path='.:/usr/local/lib/php') in /home/tombalf/domains//public_html/index.php on line 59

PHP:
<?php
$GetPage= "index";
if((isset($_GET["page"])==true) && ($_GET["page"] != "")){
$GetPage = $_GET["page"];
}
?>

PHP:
<?php include ("include/$GetPage.php"); ?>
 
PHP gaat er vanuit dat dit: $GetPage.php een php bestand is.
Je zit namelijk een variabele in een stuk tekst te schrijven en dat wordt gezien als tekst, niet als variabele.

Dit zou dan de oplossing moeten zijn.
PHP:
<?php include ("include/".$GetPage.".php"); ?>

Dit is vrij basis van elke programmeertaal om tekst en variabele gescheiden te houden.
 
Beste Woutertjuhh88,

Ik heb de include aangepast. Echter krijg ik nog steeds de foutmelding. Ik ben verder geen programmeer held en heb hulp gekregen bij het script wat ik heb geplaatst.
Ik wil dus eingelijk het script aangepast hebben. Echter zou ik niet zo 123 weten hoe. Ik heb al op google gezocht maar ook daar hield het snel op.

Het zit zo. De index.php opent (omdat de get functie niet gebruikt wordt) de index (deze zit in het mapje include en kan hij vinden). Deze wordt dan weergeven. Ook het bestand about.php zit in het mapje. Als ik index.php?page=about gebruik krijg ik de about pagina. Echter als ik bijv. index.php?aboutt doe (met dubbel 't') krijg ik die foutmelding. Die foutmelding wil ik niet.
 
een 404 pagina invoegen kan ook met .htaccess die op je server staat
ik heb zo een 404 pagina ingevoegt

code: ErrorDocument 404 /404.php

dan plaats je gewoon 404.php bestandje op je site en bent klaar.
 
Er gaat nog meer fout in je script zie ik nu, misschien handig om alle code van het bestand te posten.

PHP:
2
3
4
5
6
<?php
$GetPage= "index";
if( isset($_GET["page"]) && ( !empty($_GET["page"]) ) ){ 
$GetPage = $_GET["page"];
}
?>
 
Hallo Wouterjuh88,

Dit is de source van de hele pagina. Ik heb alleen aan het begin php en gebruik php om een bestand in te voegen.

PHP:
<?php
$GetPage= "index";
if((isset($_GET["page"])==true) && ($_GET["page"] != "")){
$GetPage = $_GET["page"];
}
?>
<!DOCTYPE HTML>
<!--[if lt IE 7 ]> <html lang="en" class="ie ie6"> <![endif]--> 
<!--[if IE 7 ]>    <html lang="en" class="ie ie7"> <![endif]--> 
<!--[if IE 8 ]>    <html lang="en" class="ie ie8"> <![endif]--> 
<!--[if IE 9 ]>    <html lang="en" class="ie ie9"> <![endif]--> 
<!--[if !IE]><!--> <html lang="en"> <!--<![endif]-->
<head>
<meta charset="utf-8">
<title>test</title>
<script type="text/javascript" src="js/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="js/jquery.vegas.js"></script>
<link rel="stylesheet" type="text/css" href="css/jquery.vegas.css" />
<link rel="stylesheet" type="text/css" href="css/div.css" />
<script type="text/javascript">
$( function() {
  $.vegas({
    src:'css/images/background/bg1.jpg' 
  })('overlay', {
    src:'css/overlays/04.png' 
  });
});

$.vegas('slideshow', {
  delay:8000,
  backgrounds:[
    { src:'css/images/background/bg1.jpg', fade:2000  },
    { src:'css/images/background/bg2.jpg', fade:2000  },
    { src:'css/images/background/bg3.jpg', fade:2000  },
    { src:'css/images/background/bg4.jpg', fade:2000  },
    { src:'css/images/background/bg5.jpg', fade:2000  },
    { src:'css/images/background/bg6.jpg', fade:2000  },
    { src:'css/images/background/bg7.jpg', fade:2000  },
    { src:'css/images/background/bg8.jpg', fade:2000  },
    { src:'css/images/background/bg9.jpg', fade:2000  },
    { src:'css/images/background/bg10.jpg', fade:2000  },
    { src:'css/images/background/bg11.jpg', fade:2000  }
  ]
});

</script>
</head>
<body>
<!-- Begin Wrapper -->
<div id="wrapper">
<!-- Begin Header -->
<div id="header">
<h1></h1>         
<i><b><b></i>
<hr>
</div>
<!-- End Header -->
<!-- Include functie php -->

<?php include ("include/".$GetPage.".php"); ?>

<!-- end Include functie php -->
<!-- Begin Right Column -->
<div id="rightcolumn">

<a href="?">Home</a> <br> <a href="?page=about">About me</a> <br> <a href="?page=contact">Contact me</a> <br> <a href="?page=links">Links</a>

<div class="clear"></div>
</div>
<!-- End Right Column -->
</div>       
<!-- End Faux Columns --> 
<!-- Begin Footer -->
<div id="footer">
<a href="#">&copy; 2005-2013</a>    
</div>
<!-- End Footer -->
</div>
<!-- End Wrapper -->
</div>
</div>
</body>
</html>

een 404 pagina invoegen kan ook met .htaccess die op je server staat
ik heb zo een 404 pagina ingevoegt

code: ErrorDocument 404 /404.php

dan plaats je gewoon 404.php bestandje op je site en bent klaar.

Helaas heb ik hier al aan gedacht. Dit is alleen niet de oplossing. Wel bedankt voor het meedenken. Echter wordt er binnen php wat gedaan en dan wordt er niet gelezen uit de .htaccess wat er voor de 404 code staat.
 
Laatst bewerkt door een moderator:
Bedankt voor de reacties. Ik heb inmiddels al een ander include script gevonden die precies doet wat ik wil. Ik wil jullie bedanken voor de reacties. Maar zoals aangegeven weet ik zelf bijna niks van php af en heb ik veel hulp gekregen bij het eerste script wat ik had. Dit is het script, met een stuk beveiliging wat injecties moet voorkomen:

PHP:
<?php
$page = $_GET['page'];

$def = "index";
$dir = "include";
$ext = "php"; 

if (isset($page)) {    
$page = substr(strtolower(preg_replace('([^a-zA-Z0-9-/])', '', $page)), 0, 20);    
if (file_exists("$dir/$page.$ext") and is_readable("$dir/$page.$ext")) {        
include("$dir/$page.$ext");    
}    
else {        
include("$dir/error/404.php");    
}
}
else {    
include("$dir/$def.$ext");
}
?>

Misschien dat iemand hier nog iets aan heeft. Als iemand nog een verbetering ziet voor dit script, voel je vrij om me een bericht te sturen.
 
Zit nog een foutje in, boven aan de pagina haal je meteen de GET waarde op. Als die er niet is krijg je een error, nu heb je heel mooi gebruik gemaakt van isset alleen je controleert de verkeerde variable. In isset moet je $_GET['page'] controleren en dan haal je pas de GET gegeven op.

PHP:
<?php
$def = "index";
$dir = "include";
 
if (isset($_GET['page'])) {    
	$page = substr(strtolower(preg_replace('([^a-zA-Z0-9-/])', '', $_GET['page'])), 0, 20);   
	if (file_exists("$dir/$page.php") && is_readable("$dir/$page.php"))       
		$def = $page;    
	else      
		$def ="error/404";    
}
include("$dir/$def.php");
?>
 
Beste Maikel123,

Bedankt voor je antwoord !

Ik heb er nog wel een vraag over. Indien dat mogelijk is. Is het zo dat de "get" functie altijd in de header moet staan? Momenteel heb ik dit script namelijk in de body staan. Dit omdat het mij niet lukt (ik weet het eigenlijk niet eens omdat me kennis daar veel te klein voor is) om de include later pas op de pagina te doen.

Weet je misschien of dit een probleem is ?
 
Nee dat maakt verder niet uit, $_GET is een superglobal variable en is overal in je script beschikbaar. Dus je zou de include ook aan het einde van de pagina doen als je dat wilt.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan