Ja parametr ktory odpowiada za strone ktora wpisal uzytkownik dorzucam w przycisku jako link do index.php?ack=1&url=[i tutaj wlasnie te zmienne $_SERVER, potratkowane base64, zeby bylo jako jeden ciag znakow] I wtedy po kliknkeciu index.php (de facto ta sama strona co wyswietla komunikat sprawdza na poczatku czy parametr get ma wartosc ACK i URL, wtedy odkodowuje base64 i mam pelny url na ktory robie header(location...) W dniu 2013-04-07 13:14, LoLe pisze:
Trzeba zrobic DNAT na lokalny adres i Twoj magiczny port. Domyslam sie, ze robisz teraz -j REDIRECT. Przy DNAT naglowki HTTP zostana zachowany nawet przy przekierowaniu. Ustawiasz wtedy wirtualke na apache wraz z rewritem tak, by kazdy url nawet po / (slashu) byl przekierowany na index.php. Wtedy po stronie PHP przechwytujesz zmienna: $_SERVER['SCRIPT_URI']; Tam masz zapisany caly URL na ktory chcial wejsc uzytkownik. Jedyna wada takiego roziwazania jest to, ze gdy Twoja strona z komunikatem ma jakies cssy to musze byc w srodku pliku index.php (nie includowane), ale to mozna zmienic uzywajac rewrite'ow. Tutaj dzialajacy przyklad:
8 RewriteEngine on 9 RewriteCond $1 !^(index.php|images|robots.txt|bootstrap.css|bootstrap-responsive.css) 10 RewriteRule ^(.*)$ /index.php$1 [L]
Robię DNAT-em a nie REDIRECT-em. Stronka wisi tak jak piszesz na wirtualce na apache na konkretnym porcie gdzie regułka DNAT wskazuje przekierowanie konkretnie na dany IP i PORT na którym wisi ta wirtualka. U siebie nie robie rewritem przekierowań , ale w .htaccess mam wpis "ErrorDocument 404 /index.php". Próbowałem z twoim rewritem ale powodowało mi to że nie ładowały mi się grafiki. Ale akurat to jest mało ważne, przejdźmy do sedna. Próbowałem przechwycić URL-a zmienną $_SERVER['SCRIPT_URI'] ale ona u mnie nic nie zwraca. Natomiast bez problemu działają $_SERVER['HTTP_REFERER'] - czyli z jakiego URL-a klient przyszedł oraz $_SERVER['HTTP_HOST'] i $_SERVER['REQUEST_URI']. - czyli host docelowy i pozostała część z URL-a.
Działanie przycisku mam zrealizowane poprzez użycie <form action="/" method="post"> na stronce głównej komunikatu gdzie po wciśnięciu przycisku w skrypcie php includowanym(once) sprawdzane mam ustawienie wartości z przycisku, i jeśli jest to realizuję zapis do pliku i bazy logu że klient wcisnął przycisk, kasuję regułkę na firewallu i na końcu robię przekierowanie na stronę poprzez Header('HTTP/1.1 301 Moved Permanently'); Header('Location '.$redirect_link);
No i teraz jeśli pod zmienną $redirect_link podstawie np http://www.google.pl to mi przekierowuje na tą stronę, ale jeśli podstawiam to co przechwycę w/w zmiennymi 'http://%27.$_SERVER%5B%27HTTP_HOST%27%5D.$_SERVER%5B%27REQUEST_URI'] lub samo $_SERVER['HTTP_REFERER'] to niestety mi to nie działa. Tzn obiawia się to tak że po wciśnięciu przycisku tak jakby odświerzała się strona z komunikatem gdzie później po tym odświrzeniu i ponownym wciśnięciu przycisku przechodzi mi na stronę ale główną na którą chciał wejść klient - czyli przykładowo pod zmiennną mam "http://wiadomosci.wp.pl/kat,1356,title,Papiez-Francziszek-jest-zagroszeniem-..." to po tym drugim kliknięciu redirectuje mi ale na stronę http://wiadomosci.wp.pl/
Poradzi ktoś coś??? _______________________________________________ lms mailing list lms@lists.lms.org.pl http://lists.lms.org.pl/mailman/listinfo/lms