Hallo,

Hoe kan ik op een simpele manier iemand terug verwijzen naar de index pagina, als een andere pagina rechtstreeks zou aangeroepen worden?

bvb als iemand dus contact.inc.php rechtstreeks aanroept moet deze terug gestuurd worden naar index.php

Alvast bedankt voor alle info
aan je filenaam te zien zijn het libraries (sub php bestanden). Ik zou die altijd in een subdirectory opslaan. In die directory zou ik dan een .htaccess bestand aanmaken met daar in de tekst 'Deny from all' . Dan zijn de bestanden 'onzichtbaar' voor de buitenwereld. Maar wat ook kan is dat je in die directory een index.php maakt met daarin de volgende code:

<?php
header('Location: www.mijndomijn.nl/index.php';);
?>

Het nadeel is dan wel dat de bestanden nog steeds rechtstreeks benaderd kunnen worden.
Wellicht kan het .htaccess bestand zodanig beschreven worden dat enkel de index.php geopend kan worden.
Wat ook mogelijk is (en wat je bijvoorbeeld bij CodeIgniter ziet) is in de index.php van je website een constante definieren. Daar hangt echter een grote voorwaarde aan vast, alle bestanden die je 'include' zullen door deze index.php moeten worden geincluded, of door bestanden die al zijn geincluded door index.php:

index.php

<?php
define('DSA', 'blabla');
?>


Vervolgens plaats je in alle mappen een .htaccess

.htaccess (in alle mappen):

Deny from All


En kijk je in elk bestand dat aangeroepen wordt door de 'main' index.php of de constante gedefinieerd is.

Overige (.php) bestanden:

<?php
if (!defined('DSA'))
    exit('No direct script access allowed');
?>


Of:

<?php
if (!defined('DSA'))
    header('Location: www.mijndomein.nl/index.php');
?>


Wat hierbij wel erg belangrijk is, is dat er geen enkele output naar de browser gestuurd kan worden voordat alle bestanden zijn 'geincluded'. Anders krijg je de bekende foutmelding: Headers already sent...

Een extra toevoeging in de mappen zou een 403-Forbidden pagina zijn die je opslaat als index.html
<?php
if(){
echo "<meta http-equiv=\"refresh\" content=\"1; url=index.php\">";
}
?>
Gewoon alles behalve je index.php buiten je webroot plaatsen. Dan kan niemand het direct aanroepen.
Peter, ik noem dat een -niet php oplossing-. Het maakt de redirect browser afhankelijk en is tevens (veel) trager dan een PHP redirect. Ik gebruik dat ding echt nooit.
OKe maar als ik zelf die header gebruik werkt hij niet

<?php


echo' <form method="POST">
<input type="hidden" name="number" value="'.$_GET['number'].'">
<input type="submit" name="submit" id="submit "class="button" value="verzenden">
</form>';

if(isset($_POST['submit'])){
$sql = "Heir de update query";
if(mysql_query($sql)){
header('Location: index.php');
}
}

?>

Maak ik hier een fout of gebruik ik de functie op een verkeerde manier ?

zelf gebeuk ik dan

echo "<meta http-equiv=\"refresh\" content=\"1; url=index.php\">";

omdat dat wel werkt
HTML genereren, moet je altijd onderaan de code zetten.

Draai je code dus gewoon om.

Je mag niet eerst een halve pagina HTML naar het scherm sturen en dan nog headers sturen.
Andre Sep op 18/09/2013 08:49:09
Anders krijg je de bekende foutmelding: Headers already sent...


Dit dus...

Gewoon alle HTML pas op het laatst echoën.
Helemaal top het werkt inderdaad

Is dit belangrijk om altijd te doen ? 1e je php dan je html ?
Is wel het makkelijkst om overzicht te houden en ook het meest logische...

Ik weet niet of het daadwerkelijk uitmaakt, maar voor mijn gevoel moet ik eerst alles op de webserver uitvoeren (dus PHP code) en vervolgens pas gegevens naar de clien sturen (dus HTML).

Stel je wilt ook gegevens controleren op de client (JavaScript of jQuery) dan komt dit voor de PHP. Op die manier beperk je naar mijn idee het 'onnodige verkeer' tussen server en client. Of dit ook daadwerkelijk zo is, weet ik echt niet. Het is een manier van werken geworden omdat het 'logisch' is.

Reageren