Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] php_self i wyjatek dla index.php
Forum PHP.pl > Forum > Przedszkole
uglukha
Witam,
mam w headerze taki kod, dzieki niemu zmiana jezyka nie zmienia podstrony na ktorej jestes.

  1. <? print '<a href="' . $_SERVER['PHP_SELF'] . '?language=english">English</a>'; ?>


Mam tylko problem, bo nie chcialbym zeby pojawial sie index.php nigdzie w linkach, mozna to tak rozwiazac?
Zanim zaczne probowac, chialem sie Was zapytac czy w dobra strone kombinuje.

  1. <?php
  2. $a = $_SERVER['PHP_SELF'];
  3. $b = index.php;
  4.  
  5. if($a==$b) // sprawdzam czy php_self to index.php, mozna w ten sposob?
  6. {
  7. print '<a href="'?language=english">English</a>'; // dodaje langauge bez adresu aktualnej strony
  8. }
  9. else
  10. {
  11. print '<a href="' . $_SERVER['PHP_SELF'] . '?language=english">English</a>'; // dodaje langauge z adresem aktualnej strony
  12. }
  13. ?>


dzieki z gory za odp
pozdrawiam!
Fifi209
Zainteresuj się może mod_rewrite
uglukha
witam, dzieki za odp, poczytalem o tym mod_rewrite ale w tym jednym przypadku wolalbym to rozwiazac tak jak to napisalem, kod ponizej dziala, ale najwyrazniej ciag "index.php" jako $b musze jakos inaczej zapisac, poniewaz przy kazdej podstronie , i przy index.php zawsze jest wykonywana opcja po "else".

Gdy wpisalem
  1. $b = $_SERVER['PHP_SELF'];
wszystko bylo ok, link byl bez index.php...

Moje pytanie wiec brzmi, jak zapisac inaczej $b = index.php zeby to dzialalo?

aktualny kod:

  1. <?
  2. $a = $_SERVER['PHP_SELF'];
  3. $b = "index.php";
  4.  
  5. if($a==$b)
  6. {
  7. print '<a href="?language=english">English</a>';
  8. }
  9. else
  10. {
  11. print '<a href="' . $_SERVER['PHP_SELF'] . '?language=english">English</a>';
  12. }
  13. ?>
Suh
Zobacz sobie co zwraca $_SERVER['PHP_SELF'] i będziesz wiedział dlaczego zawsze wchodzi do else.
Możesz to zrobić metodą informatyka (czyli byle jak byle było) modyfikując zmienną $b do takiej postaci jak wyświetli Ci PHP_SELF, jednak to przy umieszczeniu pliku index.php w podfolderze ponownie zwróci Ci część warunku wykonywaną w else.
Można też np. użyć funkcji strstr, co uelastyczniło by Twój skrypt.
uglukha
wlasnie wpadlem na ten sam pomysl smile.gif
wyswietlilem zmienna $a

okazalo sie ze jej zawartosc to "/index.php" a gdy bylo w testowym katalogu to "/test/index.php" smile.gif

juz wszystko dziala, dzieki

p.s. to tak na przyszlosc, czego uzyc do wyciecia sciezki, zeby doprowadzic $a do postaci samego index.php, bez sciezki? strip_costam? winksmiley.jpg
nospor
Cytat
zeby doprowadzic $a do postaci samego index.php, bez sciezki? strip_costam?

raczej strip_manual...
http://pl2.php.net/manual/pl/function.basename.php
uglukha
super, wielkie dzieki!
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.