Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Header Location i zmienne
Forum PHP.pl > Forum > PHP
Avaray
Witam użytkowników i zarazem zwracam się o pomoc.
Jestem bardzo poczatkujący w sprawach PHP. Do tej pory bawiłem się jedynie HTML i CSS.
Staram się stworzyć wielojęzykową stronę z użyciem skryptu LangQuery.
Ustawianie języka dla odwiedzającej osoby, zapis do cookies... wszystko działa pięknie, poza jedną rzeczą - adresem w przeglądarce, który się nie zmienia po ustawieniu języka.
Chciałbym w tym celu skorzystać z Header Location i htaccess.
Z htaccess raczej sobie poradzę. Problem mam z PHP, którego nie ogarniam, jak już wspominałem.
Nie wiem jak ustawić zmienne w TYM KODZIE w linijkach 104-107.

.$this->page raczej mam dobrze ustawione
$this->list jest błędne i w ogóle nie wiem czy tam powinno być w tej linijce in_array

Ostateczny adres strony z ustawionym językiem ma wyglądać tak: http://php.pl/en/index.php

Czy znajdzie się jakaś dobra dusza, która spojrzy na to - i mówiąc wprost - zrobi to za mnie? Lub chociaż da jakieś wskazówki, abym mógł zrozumieć błędy?
SpiritCode
Przede wszystkim nie deklarujesz zmiennej page
Avaray
Cytat(SpiritCode @ 23.01.2015, 16:31:58 ) *
Przede wszystkim nie deklarujesz zmiennej page

Nie mam tego przypadkiem w linijce 44?
  1. $this->page = basename($_SERVER['PHP_SELF']);


Edit: Dowiedziałem się o co chodzi z deklaracją.
Umieściłem deklaracje w linijkach 20-21 i wygląda to tak:
  1. public $domain = ($_SERVER['SERVER_NAME']);
  2. public $page = basename($_SERVER['PHP_SELF']);


Edit2: Zaktualizowałem także pierwszy post.
Nowy, lekko oczyszczony i poprawiony kod znajduje się TUTAJ.
SpiritCode
Na początku pliku (po tagach PHP) daj

I pokaż błędy
Avaray
Cytat(SpiritCode @ 25.01.2015, 09:22:57 ) *
Na początku pliku (po tagach PHP) daj

I pokaż błędy

Wydaje mi się, że nie będę w stanie zobaczyć błędów dopóki nie będzie poprawnie napisane ustawianie headera.
Przy obecnym ustawieniu w konsoli przeglądarki otrzymuję jedynie:
Cytat
Failed to load resource: the server responded with a status of 500 (Internal Server Error)


Obecnie kod wygląda tak: http://pastebin.com/PJLk6X1c

// Jako iż nie mogę edytować już wcześniejszych postów - przypominam: chodzi o ustawienie headera, które znajduje się na samym dole kodu.
Pyton_000
A gdzie masz stworzenie obiektu LangQuery ?
Poza tym chyba to:
  1. /* USTAWIENIE ADRESU */
  2. $this->setaddress();
  3. $this->page = basename($_SERVER['PHP_SELF']);
  4. $this->domain = ($_SERVER['SERVER_NAME']);

Powinno być POZA klasą
Avaray
Cytat(Pyton_000 @ 26.01.2015, 12:15:13 ) *
A gdzie masz stworzenie obiektu LangQuery ?
Poza tym chyba to:
  1. /* USTAWIENIE ADRESU */
  2. $this->setaddress();
  3. $this->page = basename($_SERVER['PHP_SELF']);
  4. $this->domain = ($_SERVER['SERVER_NAME']);

Powinno być POZA klasą

Jeśli dobrze rozumiem to stworzenie obiektu mam w index.php
  1. include("scripts/LangQuery.php");
  2. $L=new LangQuery();


Umieściłem także cytowane linijki poza klasą i nic to nie zmieniło. Ciągle error 500.
Pyton_000
no to dawaj .htaccess
Avaray
Cytat(Pyton_000 @ 26.01.2015, 12:30:44 ) *
no to dawaj .htaccess

Zapewniam, że w htaccess nie mam nic związanego z tym skryptem.
Problemem jest błędnie zbudowane ustawianie headera lub te zmienne, które dodałem.
Gdyby ustawianie headera w skrypcie było poprawnie napisane, wtedy wyświetlałby się poprawny URL w przeglądarce i moim oczom ukazywałaby się strona błędu 404.
Kiedy dobrnę do momentu, gdy będę widzieć poprawny URL i błąd 404 - wtedy będę bawić się htaccess.
Pyton_000
to zrób

die("Location: ".$language=$this->current.'/' .$page); i tego kolejnego Przed header(...)
freemp3
W metodzie setaddress posługujesz się zmiennymi $language, $default oraz $page, ale nie masz ich wcześniej zdeklarowanych, ani nie przekazujesz ich w parametrze. Poza tym dlaczego nadpisujesz zmienną $language:
  1. header("Location: ".$language=$this->current.'/' .$page);

?
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.