Link include, hoe???
Ik wil via include hetzeflde hebben als dat je werkt via Iframe's, alleen bijv. bij gratis lycos krijg je bij Iframe's 2x reclame en IE6 (IE7 weet ik zo niet) kan bij css de functie "transparent" niet lezen/weergeven.. Met het gevolg dat mijn site rommelig word, met include kan ik dit als het goed is oplossen.. Maar nou is het probleem dat ik niet kan vinden hoe ik het moet toe passen, dus als er nergenst op is geklikt dat dan gewoon de pagina home.php word weergegeven en zodra je bijv. op de link van het gastenboek klikt dat je dan de pagina van het gastenboek krijgt..
Ik heb wel iets wat dicht in de buurt kwam gevonden, maar dit werkt via een keuze menu in een <form> gedeelte.. Alhier, maar hoe kan ik dat dan maken dat ik dat bijv. via gewoone HTML code kan laten include dus via <a></a>.. Als dat niet gaat, hoe dan wel?
Alvast bedankt voor je hulp!
dit voorbeeld, hier zul je vast wel wat aan hebben.
Je kunt in de url een GET variabele meegeven waarin je aangeeft welke pagina geinclude moet worden. Kijk eens naar Of heb ik dat dan verkeerd?
Ik zal het dalijk eens probeeren..
Gewijzigd op 01/01/1970 01:00:00 door Nieko
en
Include zet je op de plaats waar die inhoud moet komen. Nu zet jij het hele gastenboek in de link en dat gaat echt niet goed.
Nieko schreef op 24.02.2007 16:30:
Dus dan krijg je zo iets:
Of heb ik dat dan verkeerd?
Ik zal het dalijk eens probeeren..
Code (php)
1
<a onClick="<?php include($_GET['gastenboek']); ?>" //$-teken niet vergeten targret="code">Gastenboek</a>
Of heb ik dat dan verkeerd?
Ik zal het dalijk eens probeeren..
Ik zou zeggen, kijk nog eens goed naar het voorbeeld. Speel er even mee, en kijk hoe de url meeveranderd als je een andere pagina selecteert.
Met include_once() kun je zorgen dat iets op iedere pagina zichtbaar wordt net als met iframes.
En als je linkje wilt plaatsen dan zul je dit gewoon code in je a href moeten schrijven.
Ik heb een test pagina gemaakt en daar staat 1x Hoi op.. Als ik die nu open dan komt er 2x Hoi te staan dus: Hoi Hoi.. Komt dat doordat die pagina (wel opgeslagen als .php) helemaal gewoon HTML is?
En hoe zorg ik ervoor dat ik ook een index pagina heb? Dus bij het openen van de website dat er wel iets staat? Ik heb include_once() gedaan maar nadat ik op bijv. Gastenboek drukte stond de tekst van de index pagina er nog onder.. Oplossing?
IK heb wat zitten klote met if en else, dit komt er uit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<div id="container">
<a href="?page=home">Gastenboek</a> <a href="?page=hoi">Hoi</a><br>
<?php
if($_SERVER['REQUEST_METHOD'] == 'GET')
{
if(isset($_GET['page']))
{
check_page($_GET['page']);
}
if($_GET['page'] != "home.php, hoi.php"){
include('bla.php');
}
else{
switch($_GET['page']) {
case "home": include "home.php";
}
switch($_GET['page']) {
case "hoi": include "hoi.php";
}
}
?>
</div>
<a href="?page=home">Gastenboek</a> <a href="?page=hoi">Hoi</a><br>
<?php
if($_SERVER['REQUEST_METHOD'] == 'GET')
{
if(isset($_GET['page']))
{
check_page($_GET['page']);
}
if($_GET['page'] != "home.php, hoi.php"){
include('bla.php');
}
else{
switch($_GET['page']) {
case "home": include "home.php";
}
switch($_GET['page']) {
case "hoi": include "hoi.php";
}
}
?>
</div>
Dit scirpt is gebaseerd op de "container" van het script van deze pagina en een stuk van Daan's oplossing (natuurlijk heb ik de rest van het script er ook bij staan).
Het probleem is echter dat ik een phase error krijg op include('bla.php');. Iemand enig idee wat het probleem kan zijn?
Maar de check_page() functie die ik in mijn voorbeeld script heb staan, doet al wat jij nu op de regels 10 t/m 20 hebt staan. Dat is dus dubbel op. Als je mijn voorbeeld wilt gebruiken, zul je de check_page() functie moeten aanpassen. Zo niet, dan zul je die functie er helemaal uit moeten laten.
www.php.nl is er ook niks over te vinden..
Maar hoe zit dat dan? Ik moet ergenst dan een inculde maken of zo? Ik snap het niet helemaal, sorry. Op Die functie doet het volgende:
- Controleren of de opgegeven pagina toegestaan is.
- Controleren of de opgegeven pagina bestaat.
Als dat zo is, wordt de pagina door de functie zelf geinclude. Dat hoef je dus niet meer op een andere plaats in je script op te nemen. Het aanroepen van deze functie is dan voldoende.
ps. Ik zie nu dat die functie niet helemaal netjes is, zal hem eerst eens herschrijven...
pps. Aangepast.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Dan zal bij mij de fout wel zijn dat ik de main index pagina en de index die geincude moet worden in 1 map heb staan zal eens wat anders doen..
EDIT,,
Nop werkt niet..
Gewijzigd op 01/01/1970 01:00:00 door Nieko
Fatal error: Cannot redeclare check_page() (previously declared in /data/members/free/tripod/nl/c/o/n/conquer/htdocs/nl2br_test/index.php:2) in /data/members/free/tripod/nl/c/o/n/conquer/htdocs/nl2br_test/index.php on line 2
"Line 2" is dus function check_page($page)..
Ik heb de code nu dus zo neer gezet:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<div id="container">
<a href="?page=home">Gastenboek</a> <a href="?page=hoi">Hoi</a><br>
<?php
if($_SERVER['REQUEST_METHOD'] == 'GET')
{
if(isset($_GET['page']))
{
check_page($_GET['page']);
}
else
{
include('index.php');
}
}
switch($_GET['page']) {
case "home": include "home.php";
case "hoi": include "hoi.php";
}
?>
</div>
<a href="?page=home">Gastenboek</a> <a href="?page=hoi">Hoi</a><br>
<?php
if($_SERVER['REQUEST_METHOD'] == 'GET')
{
if(isset($_GET['page']))
{
check_page($_GET['page']);
}
else
{
include('index.php');
}
}
switch($_GET['page']) {
case "home": include "home.php";
case "hoi": include "hoi.php";
}
?>
</div>
In deze positie werkt hij het best..
Ik krijg dus alleen die error, zet ik hem appart neer in de container layer dan krijg ik gewoon hetzelfde.. Dus zo:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<div id="container">
<a href="?page=home">Gastenboek</a> <a href="?page=hoi">Hoi</a><br>
<?php
if($_SERVER['REQUEST_METHOD'] == 'GET')
{
if(isset($_GET['page']))
{
check_page($_GET['page']);
}
}
switch($_GET['page']) {
case "home": include "home.php";
case "hoi": include "hoi.php";
}
?>
<?php
if(isset($_GET['page']))
{
check_page($_GET['page']);
}
else
{
include('index.php');
}
?>
</div>
<a href="?page=home">Gastenboek</a> <a href="?page=hoi">Hoi</a><br>
<?php
if($_SERVER['REQUEST_METHOD'] == 'GET')
{
if(isset($_GET['page']))
{
check_page($_GET['page']);
}
}
switch($_GET['page']) {
case "home": include "home.php";
case "hoi": include "hoi.php";
}
?>
<?php
if(isset($_GET['page']))
{
check_page($_GET['page']);
}
else
{
include('index.php');
}
?>
</div>
De directroy map is in iedergeval goed..
Code (php)
Aangezien je dit in de check_page() functie kunt verwerken. Het enige dat je dus in principe nodig hebt is:
Code (php)
Dat is het enige dat je neerzet op de plaats waar een pagina geinclude moet worden...
En dit:
Code (php)
Is de code voor de links (dus als je op de link "Hoi" drukt dat hij dan de pagina Hoi inculde)..
Je kunt ook die hele functie check_page() weglaten en alleen dit neerzetten:
Code (php)
Je moet het alleen niet allebei gaan gebruiken.
Je hebt dus op Line 2, fuction check_page($page). Dus volgens jou zou die functie het al moeten doen.. Maar dat doet hij niet..
Of is het juist op Line 51 (mijn code) dat hij dat daar doet?
Ik zal hier even mijn code posten wat hij nu is en het test URL
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<?php
function check_page($page)
{
// $dir: locatie van de te includen paginas.
// $ext: extensie van de te includen paginas.
// $allowed: array met namen van paginas die geinclude mogen worden.
$dir = 'paginas/';
$ext = '.php';
$allowed = array('index', 'home', 'hoi');
// Controleer of er een pagina opgegeven is.
if(isset($_GET['page']))
{
$page = strtolower($_GET['page']);
// Controleer of pagina wel geinclude mag worden.
if(in_array($page, $allowed))
{
// Controleer of de pagina daadwerkelijk bestaat.
if(file_exists($dir.$page.$ext))
{
include($dir.$page.$ext);
}
else
{
echo '<p><i>De pagina '.$dir.$page.$ext.' bestaat niet.</i></p>';
}
}
else
{
echo '<p><i>Het is niet toegestaan om deze pagina te includen.</i></p>';
}
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title></title>
</head>
<body>
<div id="container">
<a href="?page=home">Gastenboek</a> <a href="?page=hoi">Hoi</a><br>
<?php
if($_SERVER['REQUEST_METHOD'] == 'GET')
{
if(isset($_GET['page']))
{
check_page($_GET['page']);
}
}
switch($_GET['page']) {
case "home": include "home.php";
case "hoi": include "hoi.php";
}
?>
</div>
<div id="code">
<?php
$filename = basename($_SERVER['PHP_SELF']);
highlight_file($filename);
?>
</div>
</body>
</html>
function check_page($page)
{
// $dir: locatie van de te includen paginas.
// $ext: extensie van de te includen paginas.
// $allowed: array met namen van paginas die geinclude mogen worden.
$dir = 'paginas/';
$ext = '.php';
$allowed = array('index', 'home', 'hoi');
// Controleer of er een pagina opgegeven is.
if(isset($_GET['page']))
{
$page = strtolower($_GET['page']);
// Controleer of pagina wel geinclude mag worden.
if(in_array($page, $allowed))
{
// Controleer of de pagina daadwerkelijk bestaat.
if(file_exists($dir.$page.$ext))
{
include($dir.$page.$ext);
}
else
{
echo '<p><i>De pagina '.$dir.$page.$ext.' bestaat niet.</i></p>';
}
}
else
{
echo '<p><i>Het is niet toegestaan om deze pagina te includen.</i></p>';
}
}
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title></title>
</head>
<body>
<div id="container">
<a href="?page=home">Gastenboek</a> <a href="?page=hoi">Hoi</a><br>
<?php
if($_SERVER['REQUEST_METHOD'] == 'GET')
{
if(isset($_GET['page']))
{
check_page($_GET['page']);
}
}
switch($_GET['page']) {
case "home": include "home.php";
case "hoi": include "hoi.php";
}
?>
</div>
<div id="code">
<?php
$filename = basename($_SERVER['PHP_SELF']);
highlight_file($filename);
?>
</div>
</body>
</html>
En mijn test URL http://members.lycos.nl/conquer/nl2br_test/
Op het test URL draait nu precies het script wat hier boven staat.
Dat komt waarschijnlijk omdat je $dir verkeerd ingesteld hebt. Zoals het ernaar uitziet staan de te includen pagina's in dezelfde map als het script. Bij $dir moet je dan niets invullen, het gaat namelijk om de relatieve locatie t.o.v. het script.