Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> header i nieprawidłowe przekierowanie
lalas
post
Post #1





Grupa: Zarejestrowani
Postów: 123
Pomógł: 0
Dołączył: 16.09.2003

Ostrzeżenie: (0%)
-----


witajcie
chcialbym zastosowac zabezpieczenie na stronie przed ponownym odswiezeniem i ponownym wykonaniu skryptu za pomoca naglowka
  1. <?php
  2. if (count($_GET)) 
  3. {
  4. // REDIRECT
  5. $a = array(
  6. 'post' => $_POST,
  7. 'get' => $_GET,
  8. );
  9.  
  10. // Ustalamy flashkey
  11. $key = 'postredirect' . rand(); 
  12. $_SESSION[$key] = $a;
  13.  
  14. // Przekierowanie
  15. header("Location: ".$_SERVER['PHP_SELF']."?flashkey=$key");
  16. } else if (isset($_GET['flashkey']) 
  17. && isset($_SESSION[$_GET['flashkey']])) {
  18. // POWROT
  19.  
  20. $key = $_GET['flashkey'];
  21.  
  22. // Odtwarzamy parametry
  23. $a = $_SESSION[$key];
  24. $_POST = $a['post'];
  25. $_GET = $a['get']; 
  26. // Albo merge, jesli przesylamy inne parametry GET-em
  27.  
  28. // Klucz w sesji już niepotrzebny
  29. unset($_SESSION[$key]);
  30. }
  31. ?>


a przegladarka wywala mi:

Nieprawidłowe przekierowanie
Firefox wykrył, że serwer przekierowuje żądanie tego zasobu w sposób uniemożliwiający jego ukończenie.
Problem ten może się pojawić w wyniku zablokowania lub odrzucenia ciasteczek.

jak to ugryzc?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




chodzi oto, ze ciagle skrypt zapetlasz. Robisz przekierowanie, a te przekierowanie robi kolejne przekierowanie i tak bez konca.

Przeciez if (count($_GET)) bedzie zawsze prawdziwy, bo w przekierowaniu masz
header("Location: ".$_SERVER['PHP_SELF']."?flashkey=$key");
czyli count($_GET) zawierac bedzie 1
Go to the top of the page
+Quote Post
lalas
post
Post #3





Grupa: Zarejestrowani
Postów: 123
Pomógł: 0
Dołączył: 16.09.2003

Ostrzeżenie: (0%)
-----


http://nexoft.pl/wiki/index.php?title=Redirect_After_POST
przyklad z gory ;p
czyli wychodzi na to ze trzeba zastosowac tylko
  1. <?php
  2. if (count($_GET)) {
  3. header("Location: ".$_SERVER['PHP_SELF']);
  4. }
  5. ?>


z kolumny "rozwiazanie" - mam nadzieje ze zadziala, dzieki za uwage - jednak czasem trzeba sprawdzac co kto umieszcza na stronie

Ten post edytował lalas 21.07.2008, 19:44:03
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 13:30