ugrás a tartalomhoz

PHP - htaccess- mod_rewrite

krisz91 · 2008. Júl. 11. (P), 10.59
Sziasztok!

Csinalok egy honlapot és a következő gondjaim akadtak:

Ha beír valaki valamit az URL-be, azt szeretném hogy mindig az index.php fusson le.

Na most van néztem a rövid webcímek c. cikket nem nagyon tudtam megoldani a problémákat.
.htaccess tartama:

Options +MultiViews
<IfModule mod_rewrite.c>
RewriteEngine on

# Ebben az alkonyvtarban vagyunk, ezt
# figyelembe kell venni az atirasoknal
#RewriteBase /cegunkwebhelye

# Minden nemletezo oldal webcimet iranyitsuk at az index.php-re
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?q=$1 [QSA]
</IfModule>


index.php tartalma:

<?php
// Kapjuk el azt az cimet, amit kertek es az alapjan dontsuk el, mit toltunk be
$URI = (isset($_SERVER['REQUEST_URI']) ? substr($_SERVER['REQUEST_URI'], 1) : '');
$URIparts = explode("/", $URI);

switch ($URIparts[0]) {
case 'regisztracio':
include 'php/login/login.php';
break;
default:
print "valami";
break;
}

Na szoval, ha valaki beirja azt a böngészőbe hogy http://localhost/regisztracio akkor ez jó is. Betöltődik szépen a php/login/login.php fájl.
Na de a login.php-ba van egy olyan hogy
if ($_SERVER['PATH_INFO'] == "/ellenorzes") {
print "ez és ez";
}

Na szóval, hogyha beirom a böngészőbe, vagy egy form a /regisztracio/ellenorzes-re mutat, akkor ez a kód nem fog végrehajtódni.
Na szerintem a htaccess-be kellene valami 2. szintet létrehozni, nem tudom. Ebbe kérném a segítségeteket.

Köszönöm szépen.
 
1

Egy entry point?

janoszen · 2008. Júl. 13. (V), 11.52
Egy belépési pont van az alkalmazásodba? Akkor vedd ki a !-d !-f-et, hogy ne lehessen megnézegetni a mindenféle PHP fájlokat. Ezek után szvsz döntsd el, hogy a PATH_INFO-ból szeretnél kiolvasni útvonalat vagy a REQUEST_URI-ból. Én az utóbbit ajánlom, mert az megbízhatóan ott szokott lenni.

Alapvetően az egy nagyon ódivatú és nem is túl biztonságos megközelítés, hogy beinclude-olod a login.php-t oda, ahol bejelentkeztetni akarsz, mert csak egy helyen kell elfelejtened.

A struktúrából nekem úgy tűnik, nem nagyon szoktál még függvényeket, osztályokat használni, de javaslom, hogy az útvonalaidat valami központi helyen vedd föl mondjuk egy tömbbe, esetleg többdimenziós tömbbe, ott írd le, melyik fájlt kell lefuttatni és ott jelöld is meg, melyik oldalra kell jelszó, melyikre nem. (Ezt hívnák OOP szemléletben front controllernek).
2

Egy entry point?

Őry Máté · 2008. Júl. 13. (V), 12.17
Szerintem azért vannak ott statikus állományok is, csak nem gondolt rá a kérdező.
3

Ki lehet venni

janoszen · 2008. Júl. 13. (V), 12.19
OK, de azokat gyönyörűen ki lehet venni:

RewriteCond %{REQUEST_URI} !^/static