PHP vraag

Extera

De oude Titera :)
Oke, ik ben begonnen aan een website.

Nu heb hierin vroeger php gebruikt, en wil dit nu op dezelfde manier weer gebruiken.

Op mijn webserver staat in de root index.php, de eerste pagina die een bezoeker ziet.

in de root staat een map die "inc" heet.

Nu wil ik in een tabel bestanden (.htm .jpg enz) uit de inc map zetten.

In de inc map staan nu index.htm, projects.htm en scores.htm, puur om even te testen.
In project.htm staat simpelweg de tekst projects, en in scores en index staat de ook de tekst die gelijk is aan de naam van de pagina.

De code die ik vroeger gebruikte was iets in de richting van

If $id="";
then include ("inc/index.htm");
else include ("inc/$id.htm");

De links op de site worden dus: ?id=projects enz.
Hij zou dus als de code correct is projects.htm uit de inc map moeten halen en neer moeten zetten op de plek waar de php code staat.

Je begrijpt het al, dit werkt voor geen meter.
Weet iemand hoe ik dit aan de praat krijg?

de testspace van mijn site is http://86.90.204.251/index.php
de php code die er nu staat is:

include ('inc/index.htm');

php werkt dus (eigen webserver)

Hoop dat iemand dit snapt en mij kan helpen :)
 
Advertisement - register to remove this

Zover ik begrijp wat je wilt doen:

Maar je wilt dus een link bijvoorbeeld: index.php?id=projects. En dan wil je met het tweede deel van die if doen?

Dan moet het dus zijn

PHP:
If ($id == "") {
  include ("inc/index.htm");
}
else {
   include ("index.php?id=".$id.".htm");
}

Dit is voor zover ik het begrijp ;)

EDIT: ik zat ff te kijken op die site, maar waarschijnlijk bedoel je zo iets:

PHP:
function fix_quotes($text)
{
	if (!get_magic_quotes_gpc()) {
	   $text = str_replace("'","\'",$text);
	}
	return $text;
}
if($_GET['id']) {
   include ("inc/".fix_quotes($_GET['id]).".htm");
}
else {
   include ("inc/index.htm");
}

Als het goed is moet dit werken(ff uit het blote hoofd)
 
Last edited:
<?php
switch (strtolower($_GET['page']))
{
case "projects":
include("projects.php");
break;
case "scores":
include("scores.php");
break;
default:
include("default.php");
break;
}
?>
 
alle codes hierboven werken niet, ik heb hier echt geen kaas van gegeten, ik had vroeger een code die op deze manier werkte met $id, en $menu kon ik het menu en de content aanpassen. (dus $id roep de tekst op in 't rechter "frame" en $menu paste toen het menu aan.

Ik zal vanavond nog wat verder neuzen, ik kom net van me werk en heb nu een verjaardag. Bedankt voor de hulp iig.

de code die het meest lijkt op mijn oude code is

PHP:
If ($id == "") {
  include ("inc/index.htm");
}
else {
   include ("index.php?id=".$id.".htm");
}

Zien jullie trouwens het bovenste plaatje? de header
[ir]http://86.90.204.251/Header.jpg[/ir]
op mijn werk werkte het niet, hier wel gisteravond. Heb nu wat aangepast. Hoop dat hij nu werkt. Autoit scripts lukken me nog wel :p maar dit :(

edit: header werkt :)
 
Last edited:
linkje

Die laatste code van mij werkt gewoon hoor, ik heb een voorbeeldje gemaakt.
Op de plek waar je de tekst wilt zet je dit:

PHP:
<?php
switch (strtolower($_GET['page']))
{
case "projects":
include("projects.php");
break;
case "scores":
include("scores.php");
break;
default:
include("default.php");
break;
}
?>

Je link wordt dus: index.php?page=scores
voor de scores. Als ze iets in typen wat niet
bestaat kom je op default.php uit..
In jou geval moet er nog inc/scores.php voor staan
omdat die bestanden in een ander mapje zitten..
 
Code:
<?php include ("$id.txt"); ?>

Is ook anders heel makkelijk als je het alleen intern zou gebruiken, wel heel erg open voor iedereen.

index.php?id=blaat = blaat.txt in dezelfde dir.

Zou dit alleen echt niet aanraden aangezien je alles kunt doen als de huidige gebruiker die apache bv runt, dmv php execute etc.
 
linkje

Die laatste code van mij werkt gewoon hoor, ik heb een voorbeeldje gemaakt.
Op de plek waar je de tekst wilt zet je dit:

PHP:
<?php
switch (strtolower($_GET['page']))
{
case "projects":
include("projects.php");
break;
case "scores":
include("scores.php");
break;
default:
include("default.php");
break;
}
?>

Je link wordt dus: index.php?page=scores
voor de scores. Als ze iets in typen wat niet
bestaat kom je op default.php uit..
In jou geval moet er nog inc/scores.php voor staan
omdat die bestanden in een ander mapje zitten..

jep deze werkt, ik gebruik deze voorlopig even en dan verzin ik binnenkort wel iets met $id ofzo.

Bedankt!
 
full.jpg


helaas.... kan je hem misschien opnieuw inpakken en mailen? ik PM je mijn mail wel dan
 
mijn deeltje:

PHP:
<?
define('_INC_PATH','Path/naar/je/include/bestanden/');
define('_404_FILE','/path/naar/je/404/bestand.html');

if((bool)file_exists(_INC_PATH.$_GET['page'])) {
  require_once(_INC_PATH.$_GET['page']);
} else {
  require_once(_INC_PATH._404_FILE);
}
?>

Zoiets? Is wat veiliger als het bovenstaande denk ik, anders kan iedereen includen wat ie wilt.

Gebruik het dan als volgt: bestand.php?page=pagina

En ben ik meteen van het gezeur af dat ik lang niet gepost heb :p
 
dat ziet er beter uit :) en ingewikkeld.

ik zal hem morgen testen...
in mijn situatie word het dan

PHP:
<?
define('_INC_PATH','inc/'); \\vanuit de root in inc map dus
define('_404_FILE','404.php'); \\[b] in de root een 404.php maken

if((bool)file_exists(_INC_PATH.$_GET['page'])) {
  require_once(_INC_PATH.$_GET['page']);
} else {
  require_once(_INC_PATH._404_FILE);
}
?>

De links kan ik zo aanmaken zonder het script te veranderen, zolang de link maar correnspendeerd met de filename in de inc map.
Kan hier ook een default in? dus default.php zoals die nu is?

www.extera.nl is de site btw, om een inzicht te geven hoe de structuur nu is.
 
dat ziet er beter uit :) en ingewikkeld.

ik zal hem morgen testen...
in mijn situatie word het dan

PHP:
<?
define('_INC_PATH','inc/'); //vanuit de root in inc map dus
define('_404_FILE','404.php'); //in de root een 404.php maken
define('_HOME_FILE',_INC_PATH.'home.html'); //bestand naar je startpagina

if( isset($_GET['page']) && !empty($_GET['page']) ) {
  if((bool)file_exists(_INC_PATH.$_GET['page'])) {
    require_once(_INC_PATH.$_GET['page']);
  } else {
    require_once(_INC_PATH._404_FILE);
  }
} else {
  require_once(_HOME_FILE);
}
?>

De links kan ik zo aanmaken zonder het script te veranderen, zolang de link maar correnspendeerd met de filename in de inc map.
Kan hier ook een default in? dus default.php zoals die nu is?

www.extera.nl is de site btw, om een inzicht te geven hoe de structuur nu is.

Zie bovenstaande code,

Weet je wat ook leuk is, om gebruik te maken van vriendelijke links:
Maak een .htacccess bestand met de onderstaande code, en upload het in je webroot (httpdocs of public_html ofzo):
Code:
RewriteEngine On
RewriteRule $pagina/(.*)/^ bestand.php?page=$1

bestand.php?page=blaat
is dan het zelfde als:
jouwsite.nl/pagina/blaat/

Succes ermee!
 
Ik krijg het zo niet aan de gang, hij blijft de 404 includen, dus hij kan de bestanden niet vinden :(

edit:

kan ik dit stukje van de code aanpassen en dezelfde code dan in het menu gooien?
PHP:
if( isset($_GET['page']) && !empty($_GET['page']) ) {
  if((bool)file_exists(_INC_PATH.$_GET['page'])) {
    require_once(_INC_PATH.$_GET['page']);
Word dan
PHP:
if( isset($_GET['page']) && !empty($_GET['menu']) ) {
  if((bool)file_exists(_INC_PATH.$_GET['menu'])) {
    require_once(_INC_PATH.$_GET['menu']);

de links worden dan
bestand.php?page=blaat?menu=NL

als dit kan, hoe maak ik het dan zo dat je in de adresbalk ziet

site.nl/NL/projecten --> dus menu in het nederlands (nl.php), en de content projecten.php
 
Last edited:
PHP:
                          <?php 
						  	define('_INC_PATH','inc/'); //vanuit de root in inc map dus
							define('_404_FILE','404.php'); 
							define('_HOME_FILE',_INC_PATH.'welcome.php'); 

						if( isset($_GET['page']) && !empty($_GET['page']) ) {
						  if((bool)file_exists(_INC_PATH.$_GET['page'])) {
							    require_once(_INC_PATH.$_GET['page']);
 					 } else {
						    require_once(_INC_PATH._404_FILE);
 																 }
						} else {
							require_once(_HOME_FILE);
						}  ?>

de bestanden staan gewoon in 't mapje inc in de root van de site

ik wil eventueel ook wel iemand ftp toegang geven als iemand het dan kan oplossen...

iig bedankt voor de hulp tot nu toe! ik heb op GoT ook een topic gestart in de hoop het snel op te lossen... linkje
 
Last edited:
Het werkt :)

PHP:
<?php
$allowed = array('projects', 'info');

if( isset($_GET['page']) && in_array($_GET['page'], $allowed)) { 
  include('inc/'.$_GET['page'].'.php');
} else {
  include('inc/home.php');
}
?>

het menu werkt ook zo :)
alleen wil ik graag de url in de adresbalk nog ww w.site.nl/$menu/$pagina hebben. (dus extera.nl/NL/welkom en extera.nl/EN/welcome enz)

anyone? :D
 
Het werkt :)

PHP:
<?php
$allowed = array('projects', 'info');

if( isset($_GET['page']) && in_array($_GET['page'], $allowed)) { 
  include('inc/'.$_GET['page'].'.php');
} else {
  include('inc/home.php');
}
?>

het menu werkt ook zo :)
alleen wil ik graag de url in de adresbalk nog ww w.site.nl/$menu/$pagina hebben. (dus extera.nl/NL/welkom en extera.nl/EN/welcome enz)

anyone? :D

Stond zo ook op tweakers hehe :p
Maar idd voor het switch statement zou ik ook in_array gebruiken indien dit kan.
Verder, om een variabele te controleren of hij een waarde bevat moet je geen == statement gebruiken.
Dus:
PHP:
if($var == "") { } //is niet het slimste, werkt maar niet zoals het moet daarvoor hebben ze:
if(empty($var)) { } //deze functie gemaakt. Dus ook om een waarde te verwijderen gebruiken we:
unset($var) //om een variabele te wissen en dus niet:
$var = ""; //kan wel, maar niet zoals het hoort. 
Ook 1 om te onthouden, de logische operatoren (!, == && ||) e.d.
Kijk ook eens op wikipedia.nl naar PHP staat een hoop makkelijke info :)
En Then bestaat zover ik weet niet in PHP (geen zin om te kijken) en achter een statement komt geen ; want dan gebeurt er niets. Je sluit het statement immers direct af, of hij nou FALSE of TRUE is :)
 
Back
Top