Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Header i zmienne typu GET
Krisu
post 19.03.2009, 18:17:07
Post #1





Grupa: Zarejestrowani
Postów: 211
Pomógł: 0
Dołączył: 30.03.2006
Skąd: Żary

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


Jak wiadomo jest sposób na przekierowanie wraz z przekazaniem zmiennych:

  1. <?php
  2. header('location: jakis_plik.php.'?id=1);
  3. ?>


Zmienne zostają przekazane do jakiegoś tam pliku, ale jak przekazać zmienne jeśli pracujemy tylko na pliku index.php

  1. <?php
  2. header('location: index.php.'?id=1);
  3. ?>


Wywołując przekierowanie do pliku index.php, wykonując je właśnie z tego pliku otrzymuję komunikat z Firefoxa:

Cytat
Pętla przekierowań

Firefox wykrył, że serwer przekierowuje żądanie tego zasobu w sposób uniemożliwiający jego ukończenie.

Przeglądarka przerwała próby pobrania żądanego elementu. Witryna przekierowuje żądanie w sposób, który uniemożliwia jego dokończenie.


W jaki sposób to ominąć?
Go to the top of the page
+Quote Post
b4x
post 19.03.2009, 18:24:53
Post #2





Grupa: Zarejestrowani
Postów: 658
Pomógł: 95
Dołączył: 20.12.2005
Skąd: N54,35° E18,63° (Gdańsk)

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


A nie lepiej będzie zrobić np. jakiś plik redirect.php czyli np. redirect.php?id=1 w pliku redirect.php:

  1. <?php
  2.  
  3. $dopisz = '?';
  4.  
  5. foreach ($_GET as $w => $s) {
  6.  
  7.    $dopisz .= $w.'='.$s.'&';
  8.  
  9. }
  10.  
  11.  
  12. header('Location: index.php'.$dopisz);
  13.  
  14. ?>


--------------------
Go to the top of the page
+Quote Post
Krisu
post 19.03.2009, 18:31:34
Post #3





Grupa: Zarejestrowani
Postów: 211
Pomógł: 0
Dołączył: 30.03.2006
Skąd: Żary

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


Niestety, ale efekt jest taki sam :/
Go to the top of the page
+Quote Post
b4x
post 19.03.2009, 18:36:51
Post #4





Grupa: Zarejestrowani
Postów: 658
Pomógł: 95
Dołączył: 20.12.2005
Skąd: N54,35° E18,63° (Gdańsk)

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


Ale powiedz jak to robisz.

Tzn. do czego ma to Ci służyć, jak to ma wyglądać - bo ja się gubię już tongue.gifP


#edit a może po prostu spróbuj w $_GET dorzucić red=1


tzn. jeśli chcesz aby przekierowanie było dokonane doklejasz index.php?red=1&id=1

i sprawdzasz

  1. <?php
  2. if($_GET['red'] == 1) { Header ('Location: index.php?id=1'); } // i po przekierowaniu usuwasz te red :)
  3. ?>


@do: fifi209

Cytat
Po 2. Nie 'index.php'.$dopisz
tylko jak już: 'index.php?id='.$dopisz


sprawdź co foreach robi...

Ten post edytował b4x 19.03.2009, 18:42:15


--------------------
Go to the top of the page
+Quote Post
Fifi209
post 19.03.2009, 18:39:21
Post #5





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Po 1. Nagłówki muszą być wysyłane przed wszystkim innym
Po 2. Nie 'index.php'.$dopisz
tylko jak już: 'index.php?id='.$dopisz


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
Krisu
post 19.03.2009, 18:46:19
Post #6





Grupa: Zarejestrowani
Postów: 211
Pomógł: 0
Dołączył: 30.03.2006
Skąd: Żary

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


  1. <?php
  2. $id = $_GET['id'];
  3.  
  4. # Pobiera słowa kluczowe z bazy danych
  5.  
  6. $query = 'SELECT * FROM `lang` WHERE id = '.$id;
  7.  
  8. $results = mysql_query($query)
  9.        or die(mysql_error());
  10.  
  11.    $results = mysql_fetch_assoc($results);
  12. ?>


Potem sprawdza czy słowa z bazy pasują do szukanych. Jeżeli nie, to id musi się zmienić na 2. I właśnie nie wiem jak to zrobić.

@do: b4x

Może jest inny sposób niż przekierowanie? Bo odnośnie header ('location: '); nie mogę go wykorzystać w ogóle odnosząc się do tego samego pliku.

Ten post edytował Krisu 19.03.2009, 18:50:17
Go to the top of the page
+Quote Post
b4x
post 19.03.2009, 18:58:08
Post #7





Grupa: Zarejestrowani
Postów: 658
Pomógł: 95
Dołączył: 20.12.2005
Skąd: N54,35° E18,63° (Gdańsk)

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


Ja w tym przykładzie bym zastosował switch" title="Zobacz w manualu PHP" target="_manual

  1. <?php
  2. switch ($id) {
  3.  
  4.         case 1:
  5.         // tutaj cos wrzucasz jesli id = 1
  6.         break;
  7.  
  8.         case 2:
  9.         // tutaj cos wrzucasz jesli id = 2
  10.         break;
  11. }
  12. ?>



Możesz także zabawić się w .htaccess

Kod
DirectoryIndex sprawdz.php


I właśnie tam (sprawdz.php) sprawdzać to i wrzucić riderecta wrzucić na index.php winksmiley.jpg

Ten post edytował b4x 19.03.2009, 19:04:45


--------------------
Go to the top of the page
+Quote Post
Krisu
post 19.03.2009, 19:02:32
Post #8





Grupa: Zarejestrowani
Postów: 211
Pomógł: 0
Dołączył: 30.03.2006
Skąd: Żary

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


W sumie mógłbym w każdym case includować główny program, a potem zwracać wartość id smile.gif

Dzięki za pomoc.
Go to the top of the page
+Quote Post
thomson89
post 20.03.2009, 09:10:47
Post #9





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

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


Można też w JS document location...

A można też zamiast getem przekazywać sesją...

Ten post edytował thomson89 20.03.2009, 18:57:00


--------------------
Sklep 70%
Go to the top of the page
+Quote Post
pianta_d
post 24.03.2009, 16:38:46
Post #10





Grupa: Zarejestrowani
Postów: 176
Pomógł: 18
Dołączył: 5.01.2007

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


Witam

Robię stronę wielojęzyczną korzystając z wątku http://forum.php.pl/index.php?showtopic=80...20&start=20
a dokładnie wykorzystałem sposób użytkownika @franki01

ale pojawił się problem, a mianowicie, gdy wpiszę adres strony przekierowuje mnie na stronkę z odpowiednim langiem jednak php nie robi instrukcji, które są niżej, czyli np wczytania informacji z bazy z odpowiednim langiem.
Gdy wstawię instrukcję
  1. <?php
  2. header("Location: index.php?lang=".$_SESSION['LANG']);
  3. ?>


FF wyrzuca komunikat
Cytat
Pętla przekierowań. Firefox wykrył, że serwer przekierowuje żądanie tego zasobu w sposób uniemożliwiający jego ukończenie.


Może istnieje jakiś inny sposób przekierowania z odczytaniem z sesji konkretnego języka aby wykonały się instrukcje, które znajdują się w pliku?

Ten post edytował pianta_d 24.03.2009, 17:14:05
Go to the top of the page
+Quote Post
b4x
post 24.03.2009, 18:40:05
Post #11





Grupa: Zarejestrowani
Postów: 658
Pomógł: 95
Dołączył: 20.12.2005
Skąd: N54,35° E18,63° (Gdańsk)

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


Ja bym zrobił to tak...


  1. <?php
  2. switch ($_SESSION['LANG']) {
  3.  
  4.    case 'pl':
  5.        require_once ('langs/pl/lang.php');
  6.        break;
  7.  
  8.    case 'en':
  9.        require_once ('langs/en/lang.php');
  10.        break;
  11.  
  12.    default:
  13.        require_once ('langs/pl/lang.php');
  14. }
  15. ?>


--------------------
Go to the top of the page
+Quote Post
pianta_d
post 24.03.2009, 18:47:07
Post #12





Grupa: Zarejestrowani
Postów: 176
Pomógł: 18
Dołączył: 5.01.2007

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


Nie w tym tkwi problem. W plikach lang.php są tylko tłumaczenia do etykiet na stronę, natomiast w bazie, ogłoszenia w różnych językach. Tłumaczenia pobiera prawidłowo, jedynie nie wykonuje poleceń zawartych w skrypcie index.php, gdzie z bazy pobiera, jeśli ustawionym startowym językiem jest en powinien szukać ogłoszeń w języku angielskim (ogłoszenia istnieją smile.gif ).

Po wejściu na stronę i ręcznej zmianie języka czyta ogłoszenia bez problemu. Problem jest tylko przy "starcie" strony.


EDIT

Dziękuję za pomoc. Poradziłem już sobie

Pozdrawiam

Ten post edytował pianta_d 24.03.2009, 19:12:59
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 07:24