Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Automatyczne przekierowanie bez strony posredniczącej
Forum PHP.pl > Forum > Przedszkole
newguy12
Czesc!

Mam taki problem:

1. User wchodzi na stronę i klika odnośnik z elementem onmouseup="this.href='user.php?id=<?php echo $user_id;?>';"
2. Następuje przekierowanie na stronę user.php?id=123
3. Na stronie user.php wykonuje się pobranie z XML danych dla usera z id=123 i następnie przekierowanie na wygenerowany URL za pomocą funkcji

<script type="text/javascript">
setTimeout("window.location.href='http://www.xxxx.pl/jakiesdane';", 1);"
</script>

Czyli po 1 ms następuje automatyczne przekierowanie na strone wygenerowana specjalnie dla niego. Jednak jeżeli już nastąpi automatyczne przekierowanie, a user kliknie "Wstecz" w przeglądarce, cofnie się do strony user.php. I tu pytanie:

Czy da się zrobić to jakoś mądrze np. aby user prosto z mojej strony głównej był przenoszony na swoja stronę docelową ( z pominięciem user.php) ? Lub, żeby user klikając "Wstecz" na stronie docelowej - był cofany do mojej strony głównej ?

Nie proszę o pisanie całego kodu, ewentualnie wskazówki gdzie szukać rozwiązań smile.gif AJAX ?
nospor
Tak, AJAX. AJAXem wygenerujesz adres na jaki user ma pojsc, i juz w js go tam przekierujesz.
Od biedy mozesz ten xml przetwarzac w momencie generowania linku
"this.href='user.php?id=<?php echo $user_id;?>';"
jesli czesto ten xml sie nie zmienia to zapisuj w cache by nie przetwarzac tego w kolko
newguy12
Ok dzięki, niestety odpada forma generowania tego linku już na tym etapie, bo za dużo danych. Zostaje tylko opcja pobrania danych z XML po przekazaniu user_id.
Jeszcze tylko upewniając się czy dobrze myśle:

1. W linku na stronie głównej onclickiem wywołuje funkcje js i przekazuje parametrem user_id
2. funkcja wywołuje ajaxem user.php (i przekazuje user_id metodą post)
3. user.php wyciąga z xml'a osobistego linka
4. Funkcja na stronie głównej "odbiera" osobistego linka i następuje automatyczne przekierowanie

Trochę kuleje z ajaxa i js, więc szukam potwierdzenia smile.gif
nospor
Tak
newguy12
OK wszystko już smiga, ale stanąłem na jednej (podejrzewam banalnej) rzeczy. A mianowicie:

ze skryptu php zwracam i umieszczam w <head>:

<script type="text/javascript">
setTimeout("window.location.href='http://www.domena.pl'", 1);
</script>

Przekierowanie na strone docelową, wygenerowaną dla usera, następuje automatycznie, jednak otwiera się ona w tym samym oknie. Jak mogę zrobić aby otwierała się w nowej zakładce (nie w nowym oknie) ?

Próbowałem tworów typu:

<script type="text/javascript">
setTimeout("window.location.href='http://www.domena.pl';this.target = '_blank';", 1);
</script>

i dziesiątek przykładów z neta, ale nic nie działa. Poratujesz z ostanią rzeczą ?
Turson
Czy otworzy się nowa zakładka czy okno zależy od ustawień przeglądarki użytkownika
nospor
window.open()
newguy12
Cytat(nospor @ 7.02.2014, 15:44:43 ) *
window.open()


Też to próbowałem - jeżeli window.open jest na:

onclick="window.open('http://www.w3schools.com');"

to wszystko działa dobrze, natomaist jak daje:

<script type="text/javascript">
setTimeout("window.open('http://www.w3schools.com');", 1);
</script>

Przeglądarki blokują wyskakujące okienka :/ . Otwieranie nowej strony musi nastąpić automatycznie - bez koniecznosci ponownego kliknięcia. Może da się to jakoś zrobić bez korzystania z funkcji setTimeout?
nospor
Nie bardzo rozumiem po co tam setTimeout?
Po co ajaxem w ogole zwracasz kod js? Ajaxem masz zwracac tylko adres na jaki chcesz przekierowac. To kod odbierajacy ajaxa ma odczytac ten adres i przekierowac
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.