Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[htaccess] Directory toegang

Pagina: 1
Acties:
  • 657 views sinds 30-01-2008
  • Reageer

  • Exception
  • Registratie: Augustus 2006
  • Laatst online: 29-11 21:23
Beste tweakers,

Misschien een simpele vraag voor jullie:

Ik ben bezig met een administratiesysteem voor een website. Alle pagina's worden geinclude in index.php. Deze heeft de hele html structuur inzich zitten, zodat ik niet elke pagina hoef aan te passen bij een layout update.

Nu wil ik dat de bezoekers alleen toegang hebben tot index.php en login.php (staan beide op de root), en niet tot andere bestanden en directories. Maar de overige bestanden moeten wel kunnen worden geinclude door php.

Hoe kan ik dit realiseren? Met .htaccess?
Ik weet niet echt hoe dit heet, dus zoeken op Google is ook lastig.

Alvast bedankt!

  • André
  • Registratie: Maart 2002
  • Laatst online: 27-11 10:04

André

Analytics dude

Zet die andere bestanden buiten je webroot?

  • TeGek
  • Registratie: Oktober 2007
  • Laatst online: 19-09 11:50

TeGek

Engineer in hart en nieren.

@andré;
Kan je includen uit een andere folder zonder aanpassing aan apache's config Nooit geprobeert,en misschien include hij wel met hyperlinks i.p.v. dirs.

Je kan proberen te google'n op HTaccess "mod_rewrite" en proberen alles wat niet login.php en index.php is te rewriten naar index.php/login.php

Ben nogal moe dus me uitleg is misschien een beetje vaag.

Apache handleiding

@Jeff

Dat snapte ik maar je kan ook including via hyperlinks,Dus
code:
1
2
3
<php
include("http://tweakers.net");
?>

[ Voor 70% gewijzigd door TeGek op 04-12-2007 16:07 . Reden: aanvulling en typos ]

PoSh Fan? Automation? RMM? blog - op zoek naar een nieuwe job? kijk dan hier.


  • Exception
  • Registratie: Augustus 2006
  • Laatst online: 29-11 21:23
Ik kan de bestanden niet buiten de webroot includen volgens mij. En ookal kan dit wel, ik wil het liever niet ;). Is er geen code voor, voor een .htaccess bestand?

@Hierboven:
Met includen heb ik het over de include() functie van php. (Zoals include("pages/home.php"); )

[ Voor 25% gewijzigd door Exception op 04-12-2007 15:52 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 29-11 22:54
>DTE
htaccess gedoe != programming.

https://fgheysels.github.io/


  • Exception
  • Registratie: Augustus 2006
  • Laatst online: 29-11 21:23
Je kan proberen te google'n op HTaccess "mod_rewrite" en proberen alles wat niet login.php en index.php is te rewriten naar index.php/login.php
Dat had ik ook in gedachten. Maar ik ben zelf dus zeer onervaren in regular expressions. Zou iemand die voor mij kunnen schrijven?

Alvast bedankt.

  • Muthas
  • Registratie: December 2005
  • Niet online

Muthas

O+

In je index.php dit doen:

PHP:
1
define('secured', true);


En vervolgens in al je andere php documenten bovenaanzetten:

PHP:
1
if (!defined('secured')) {exit();}


Het is niet echt exact wat je zoekt, er is eigenlijk nog steeds toegang tot de php-bestanden. Ze kunnen echter niet meer worden uitgevoerd. Verder een blanco index.html in al je directories zorgt ervoor dat er niet meer in gebrowst kan worden. Van .htaccess heb ik niet echt veel verstand, vandaar dat ik met deze oplossing kom :z

[ Voor 52% gewijzigd door Muthas op 04-12-2007 18:50 ]


  • Mad Max
  • Registratie: Augustus 2002
  • Laatst online: 12:24

Mad Max

Altijd nieuwsgierig

Je vraag is voor mij onduidelijk. Als alles via die ene index.php gaat dan zie je verder toch geen directories? Standaardinstelling van de webserver.

Als je die index.php linkjes laat genereren dan kunnen inderdaad anderen proberen of die directory werkt. Bijvoorbeeld bij webroot/fotos. Maar door in de directory fotos een index.php te zetten die een lege pagina presenteert ben je dat kwijt. Ook kun je die fotos-index.php laten redirecten naar de webroot.

Ik zie ' t nut van een .htacces hier niet.

Soms f0t0gr@@f (7D + 10-22 f3.5-4.5 + 17-55 f2.8 IS + 35 f1.4L + 85 f1.2 II L + 70-200 f2.8 IS L + 580EX )


  • Little Penguin
  • Registratie: September 2000
  • Laatst online: 08-06 20:43
Als je gebruik maakt van Apache (want anders werkt .htaccess niet) en je plaatst alle andere zaken in subdirectories kun je de toegang tot die directories als volgt ontzeggen:
code:
1
Deny From All


Dus:
code:
1
2
3
4
/index.php
/login.php
/<iets>/.htaccess
/<iets>/<geheime bestanden>


Anders zul je inderdaad aan de slag moeten met mod_rewrite, alleen is dat enigszins overkill als je toch maar 2 bestandjes in de root hebt. Mocht je toch behoefte hebben aan het plaatsen van bestanden in de root, dan zal er toch gebruik gemaakt moeten worden van mod_rewrite en regular expressions...

N.B. Die .htaccess moet dan wel in iedere sub-directory geplaatst worden.

  • Exception
  • Registratie: Augustus 2006
  • Laatst online: 29-11 21:23
Bedankt. Dit zocht ik zo ongeveer. Maar zoals je al zegt moet dit bestandje in elke sub-directory geplaatst worden. Is er ook een methode om dit niet te hoeven doen? Als dat er niet is, dan moet het maar zo ;) maar zowel, zou ik het graag willen weten.

@ Mad Max
Als men naar http://mijnsite.nl/pages/ gaat, krijgt men wél een index te zien. En ik wil dit dus voorkomen doormiddel van één bestandje in de root. Het liefst moet men worden geforwarded naar http://mijnsite.nl/index.php

[ Voor 31% gewijzigd door Exception op 04-12-2007 19:14 ]


  • Little Penguin
  • Registratie: September 2000
  • Laatst online: 08-06 20:43
Ik heb het nog even gecontroleerd, voor alle sub-directories onder <iets> hoef je niet apart een .htaccess op te nemen.

code:
1
2
3
4
5
6
7
/index.php
/login.php
/<iets>/.htaccess
/<iets>/<geheime bestanden>
/<iets>/<directory>/<ook geheime bestanden>
<nog_iets>/.htaccess
<nog_iets>/<ook geheim>


Met deze .htaccess worden dus de bestanden en alle subdirectories (en haar bestanden) geheim...

Edit - volgens bij bedoel je wat ander nu ik je vraag nog eens doorlees. Toch laat ik onderstaande maar staan :)
Als je wilt dat standaard index.php opkomt bij het oproepen van een directory plaats naast de index.php ook een .htaccess met de volgende inhoud:
code:
1
DirectoryIndex index.php


Als je meer wilt kun je overigens ook eens door de documentatie van Apache gaan spitten. Uiteraard moet je dan wel de documentatie kiezen die overeenkomt met de server waar je uiteindelijk de bestanden op gaat plaatsen...

[ Voor 6% gewijzigd door Little Penguin op 04-12-2007 19:27 ]


  • Exception
  • Registratie: Augustus 2006
  • Laatst online: 29-11 21:23
Ik ben toch wat onduidelijk blijkbaar. Wat ik precies wil bereiken is het volgende.

Wanneer men http://mijnsite.nl/pages aanroept, moet hij terug gaan naar ./index.php
Dus wat voor directory of bestand dan ook, altijd naar ./index.php, behalve wanneer ./login.php wordt aangeroepen.

Met de code van Little Pinquin kan ik wel wat volgens mij. Ik ga het proberen.

  • CornéM
  • Registratie: Mei 2006
  • Laatst online: 05-12-2024
Je kunt het ook nog op een andere manier doen.

Als je wilt dat een aantal PHP bestanden alleen ge-include mogen worden kun je vrij simpel bovenaan elk van die bestanden het volgende neerzetten:

if(eregi("file.php", $_SERVER['PHP_SELF']))
{
header("Location: ../index.php");
}

Via include() kun je de bestanden wel gewoon benaderen.

In jouw index.php kun je dan verder natuurlijk nog checken of de gebruiker is ingelogd en bevoegd is om de pagina's te bekijken.

if($ingelogd)
{
switch($_GET['page'])
{
(...)
}
}
else
{
include("login.php");
}

Is dit een beetje wat je zocht ... ?
Pagina: 1