de juiste content ophalen.
ik ben bezig de routing van een nieuw klein website op te zetten. dit doe ik dmv ini file.
deze ziet er zo uit:
[navigation]
home.php = "Home"
about.php = "About"
simple-code.php = "Simple codes"
[content]
home.php = "/content/home"
about.php = "/content/about"
simple-code.php = "/content/simple-code"
zo haal ik de links op en output ik ze..
en dit gaat goed maar alleen wanneer ik dan de juiste content op wil halen door op de link te klikken krijg ik niet het relatieve pad maar krijg ik
localhost/home.php
ipv localhost/content/home/home.php
mijn switch om te bepalen wat ik op moet halen ziet er zo uit.
maar ik ben de draad even kwijt. weet iemand wat ik fout doe en wat ik anders moet doen?
deze ziet er zo uit:
[navigation]
home.php = "Home"
about.php = "About"
simple-code.php = "Simple codes"
[content]
home.php = "/content/home"
about.php = "/content/about"
simple-code.php = "/content/simple-code"
zo haal ik de links op en output ik ze..
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
if (file_exists("index.ini") && is_array($content = parse_ini_file("index.ini", true)))
{
if (array_key_exists("navigation", $content))
{
foreach ($content["navigation"] as $basename => $title)
{
if (array_key_exists($basename, $content["content"]))
{
echo "<li><a " . ($basename == basename(parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH)) ? "class=\"current\"" : false) . " href=\"/" . $basename . "\">" . $title . "</a></li>";
}
}
}
}
?>
if (file_exists("index.ini") && is_array($content = parse_ini_file("index.ini", true)))
{
if (array_key_exists("navigation", $content))
{
foreach ($content["navigation"] as $basename => $title)
{
if (array_key_exists($basename, $content["content"]))
{
echo "<li><a " . ($basename == basename(parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH)) ? "class=\"current\"" : false) . " href=\"/" . $basename . "\">" . $title . "</a></li>";
}
}
}
}
?>
en dit gaat goed maar alleen wanneer ik dan de juiste content op wil halen door op de link te klikken krijg ik niet het relatieve pad maar krijg ik
localhost/home.php
ipv localhost/content/home/home.php
mijn switch om te bepalen wat ik op moet halen ziet er zo 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
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
if (!isset($_GET['page'])) {
$_GET['page'] = 'home';
}
switch($_GET['page']){
case 'home':
$file = '/content/home/home.html';
break;
case 'about':
$file = '/content/about/about.html';
break;
case 'simple-script':
$file = '/content/simple-code/simple-script.html';
break;
case 'sitemap':
$file = '/content/sitemap/sitemap.php';
break;
default:
$file = '404.html';
break;
}
include_once $file;
?>
if (!isset($_GET['page'])) {
$_GET['page'] = 'home';
}
switch($_GET['page']){
case 'home':
$file = '/content/home/home.html';
break;
case 'about':
$file = '/content/about/about.html';
break;
case 'simple-script':
$file = '/content/simple-code/simple-script.html';
break;
case 'sitemap':
$file = '/content/sitemap/sitemap.php';
break;
default:
$file = '404.html';
break;
}
include_once $file;
?>
maar ik ben de draad even kwijt. weet iemand wat ik fout doe en wat ik anders moet doen?
Gewijzigd op 11/05/2012 23:31:14 door Reshad F
Volgens mij mogen punten in INI values niet, omdat ze dan voor array worden aangezien.
Maak er zo'n route file van:
Vervolgens maak je en het menu en de switch dynamisch (wat zo heeft een dynamische ini natuurlijk helemaal geen nut).
Maak er zo'n route file van:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
[home]
url = home.php
content = /content/home/home.html
[about]
url = about.php
content = /content/about/about.html
[simple_code]
url = simple-code.php
content = /content/simple-code/simple-script.html
url = home.php
content = /content/home/home.html
[about]
url = about.php
content = /content/about/about.html
[simple_code]
url = simple-code.php
content = /content/simple-code/simple-script.html
Vervolgens maak je en het menu en de switch dynamisch (wat zo heeft een dynamische ini natuurlijk helemaal geen nut).
hmm het worden inderdaad array's maar dat zou niet uit moeten maken toch?
en ik weet niet hoe ik zo een twee die 2 dingen dynamisch kan maken.. enig tip of opstapje?
en ik weet niet hoe ik zo een twee die 2 dingen dynamisch kan maken.. enig tip of opstapje?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Navigatie
=========
<?php
$routes = parse_ini_file('routing.ini', true);
foreach ($routes as $name => $data) : ?>
<li><a href="<?php echo $data['url'] ?>"><?php echo $name ?></a></li>
<?php endforeach; ?>
Content
=======
<?php
if (isset($routes[$_GET['page']])) {
$page = $routes[$_GET['page'];
include $page['content'];
}
?>
=========
<?php
$routes = parse_ini_file('routing.ini', true);
foreach ($routes as $name => $data) : ?>
<li><a href="<?php echo $data['url'] ?>"><?php echo $name ?></a></li>
<?php endforeach; ?>
Content
=======
<?php
if (isset($routes[$_GET['page']])) {
$page = $routes[$_GET['page'];
include $page['content'];
}
?>
Gewijzigd op 12/05/2012 10:13:22 door Wouter J
nog even een kleine tip, zet het .ini bestand buiten de doc_root. ;)
Hij is nu zo te lezen, en daarmee kun je hele nare dingen doen...
Hij is nu zo te lezen, en daarmee kun je hele nare dingen doen...
Gewijzigd op 12/05/2012 10:20:38 door Bart V B
Bart, je kan hem toch alleen maar lezen? Dus opzich kan je er niks raars mee doen. Wel is het zo dat je er nu geen gevoelige informatie in kunt zetten.
Even nog een tip voor reshadd. Bij dit soort gevallen moet je gewoon even de array die je terug krijgt van de parse_ini_file var_dumpen. Dan zie je wat er allemaal in zit en op welke manier. Je komt er dan als het goed is wel uit hoe je een pagina/link zou moeten opvragen.
Even nog een tip voor reshadd. Bij dit soort gevallen moet je gewoon even de array die je terug krijgt van de parse_ini_file var_dumpen. Dan zie je wat er allemaal in zit en op welke manier. Je komt er dan als het goed is wel uit hoe je een pagina/link zou moeten opvragen.
Quote:
Bart, je kan hem toch alleen maar lezen? Dus opzich kan je er niks raars mee doen.
Op zich niet nee, maar wel als hij niet de juiste chmod waardes heeft.
En afgezien wat er allemaal wel of niet mee kan gebeuren, je ini files behoren gewoon niet in in de document_root te staan he. ;)
wouter bedankt voor het opzetje! ik heb het een en ander geprobeerd. maar het was toch niet wat ik zocht. wat ik precies wil is gewoon mijn routing in de ini file en simpel die pagina includen. ik dacht eerst misschien dan de content uit het mapje content halen maar dit werkt niet zoals ik verwachtte. dus ik denk dat gewoon een dynamische include van een array menu wel volstaat.
dus een ini file zoals ik al had.
en dan wanneer ik klik op de link dat ik dan de path krijg geinclude. maar het probleem is dat mijn link er nu zo uitziet en ik dus op de verkeerde pagina kom.
/home, /about, /scripts
wat het eigenlijk moet zijn is /websitenaam(localhost)/home.html alleen zie ik niet wat er fout aan is dit is de output
overigens moet dit geinlcude worden dus een switch er achter zetten. denk ik nu verkeerd of doe ik gewoon iets fout?
edit: ik heb even gekeken wat voor array ik krijg met print_r en heb op basis hiervan dus een switch in elkaar gezet. weet alleen niet of dit de juiste manier is. ik denk het ook niet omdat ik localhost/about.html krijg ipv dat deze geinclude wordt.
dus een ini file zoals ik al had.
en dan wanneer ik klik op de link dat ik dan de path krijg geinclude. maar het probleem is dat mijn link er nu zo uitziet en ik dus op de verkeerde pagina kom.
/home, /about, /scripts
wat het eigenlijk moet zijn is /websitenaam(localhost)/home.html alleen zie ik niet wat er fout aan is dit is de output
Code (php)
overigens moet dit geinlcude worden dus een switch er achter zetten. denk ik nu verkeerd of doe ik gewoon iets fout?
edit: ik heb even gekeken wat voor array ik krijg met print_r en heb op basis hiervan dus een switch in elkaar gezet. weet alleen niet of dit de juiste manier is. ik denk het ook niet omdat ik localhost/about.html krijg ipv dat deze geinclude wordt.
Gewijzigd op 13/05/2012 12:27:35 door Reshad F




