Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Pętla przekierowań z powodu header("Location: ......
Forum PHP.pl > Forum > Przedszkole
cve
Witam:
- piszę własny framework,
- posiadam folder public, w którym znajduje się plik rozruchowy index.php i .htaccess,
- index.php:
  1. $_url = strip_tags($_GET['url']);
  2.  
  3. $urlArray = array();
  4. $urlArray = explode('/', $_url);
  5.  
  6. $_controller = $urlArray[0] ? $urlArray[0] : 'index';
  7. $_action = $urlArray[1] ? $urlArray[1] : 'index';
  8. $_parameter = $urlArray[2];
  9.  
  10. $acl = array('user' => array('index/index',
  11. 'index/about',
  12. 'post/index'));
  13.  
  14. if(in_array($_controller.'/'.$_action, $acl['user'])) {
  15.  
  16. $controllerName = ucfirst($_controller).'Controller';
  17.  
  18. $run = new $controllerName($_controller, $_action);
  19.  
  20. $run->$_action($_parameter);
  21. }
  22. else
  23. {
  24. header("Location: <a href="http://myapp/index/noaccess&quot%3b%29;" target="_blank">http://myapp/index/noaccess");</a>
  25. }

- .htaccess:
  1. <IfModule mod_rewrite.c>
  2. RewriteEngine On
  3.  
  4. RewriteCond %{REQUEST_FILENAME} !-f
  5. RewriteCond %{REQUEST_FILENAME} !-d
  6.  
  7. RewriteRule ^(.*)$ index.php?url=$1 [PT,L,NS]
  8.  
  9. </IfModule>

Problem polega na tym, ze gdy ten 'user' w acl gdy nie ma dostepu do wywoływanego zasobu to dostaję komunikat, że nastąpiła pętla przekierowań i przeglądarka wywala błąd, a ja chcę tylko przekierować wtedy na akcje 'noaccess' kontrolera 'index'.

Sytuacja dzieje sie w momencie kiedy klikne w menu np. Rejestruj, ktore prowadzi do 'http://myapp/user/register/' <-- wlasnie do tej akcji i tego kotrnollera nie ma dostepu user tak jak jest to okreslone w $acl['user'] i z chwila klikniecia wlasnie w adres przegladarki wpada 'http://myapp/user/register/' i nie wiem wlasnie w jaki sposob do tego nie dopuscic...
Wlasciwie to powinienem zrobic taki system, zeby nie pokazywac tych linkow, do ktorych nie ma dostepu dany user w acl, wtedy nie bedzie miec co kliknac i po sprawie, ale tak z ciekawosci pytam na przyszlosc jak wykonac takie przekierowanie.

Jesli ktos moglby pomoc bylbym bardzo wdzieczny.
wookieb
Użytkownik nie ma dostępu do zasobu index/noaccess
dlatego krąży w kółko. Wyjścia
1) Daj dostęp do tego zasobu dla osoby niezalogowanej i innych
2) Zrób wyjątek przy przekierowaniu, taki aby przy braku dostępu do index/noaccess nie przekierowywał
cve
No jasne! przeciez to logiczne... wiedzialem, ze gdzies popelnilem takiego glupiego byka... dziekuje bardzo smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.