Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] 2 pytania ($_SERVER, $_GET i if z macierzą)
statek
post
Post #1





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 2.06.2009

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


Witam,

napisałem sobie skrypt rozpoznający wybrany język i zapisujący go do ciasteczek. Wszystko działa, ale mam wątpliwość czy można pewne sprawy rozwiązać prościej. Na stronie mam pełno odnośników postaci:

http://strona.pl/index.php?zm1=ble&zm2=ole&zm3=jupi

a aktualny adres pobieram tak:
$aktualny_adres= 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . '?' . $_SERVER['QUERY_STRING']; //może jest funkcja zwracająca cały adres, jaka?

i wstawiam jako odnośnik:
echo '<a class="polski" href="' . $aktualny_adres . '&lang=pl"></a>';

I niby jeśli ktoś będzie stale zmieniać adres, nie klikając w jakiś odnośnik do podstrony. to zbiera się w adresie:
&lang=pl&lang=pl&lang=pl&lang=en&lang=pl

Mogę napisać ifa, który to wycina z adresu i fajnie. Ale czy jest lepszy sposób? Czy da się jakoś przekazywać wartości zmiennych (nadanych w czasie kliknięcia) aby nie było ich w adresie? Albo czy da się zrobić coś takiego:
1 jeśli kliknięcie w określony obszar (np odnośnik), to
2 wykonaj zbiór instrukcji, po czym
3 przejdź do nowej lokalizacji.



Jeśli tak to w jaki sposób, jakieś wskazówki?

I ostatnie pytanie, czy jeśli mam ifa postac:
if( $a==1 || $a==3 || $a==11 || $a==5 )
{
...
}
to można w jakiś sposób, użyć tablicy? if( a= array(1, 3, 11, 5) ), jak to zrobić?

Pozdrawiam i proszę o odpowiedzi i wskazówki.

Ten post edytował statek 9.06.2009, 20:30:06
Go to the top of the page
+Quote Post
Spawnm
post
Post #2





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




np w sesje możesz dać język.
session_start" title="Zobacz w manualu PHP" target="_manual na pocztątku pliku i potem $_SESSION['lang']='pl';

Ten post edytował Spawnm 9.06.2009, 14:41:12
Go to the top of the page
+Quote Post
Fifi209
post
Post #3





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

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


in_array" title="Zobacz w manualu PHP" target="_manual

zrób sobie print_r($_SERVER); a sam się dowiesz.
Go to the top of the page
+Quote Post
statek
post
Post #4





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 2.06.2009

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


Dzięki za odpowiedzi!

Spawnm tylko ja nie pytałem jak zapisać wartość do sesji albo ciasteczka. Chodzi o to jak wykonać jakąkolwiek instrukcje (w tym przypisanie) jednocześnie z kliknięciem użytkownika w odnośnik. Bo użytkownicy mogą zmienić język i miło by było gdyby dało się uniknąć dopisywania: 〈=pl do adresu

fifi209, to in_array jest super! Szkoda, że nie można wpisywać w ifa tablic tak jak w: str_replace(array("\r\n", "\r", "\n"), '', $string).
Znalazłem: REQUEST_URI - zawiera adres bez nazwy domeny. Czyli wystarczy dodać go do HTTP_HOST i mam aktualny adres, zamiast składać 3 stringi. O to chodziło? Czy może jest coś jeszcze? Albo czy może się zdarzyć, że REQUEST_URI będzie niedostępne a PHP_SELF i QUERY_STRING będą dostępne? Albo na odwrót? Ewentualnie HTTP_REFERER nadałoby się do aktualnego adresu przy zmianie języka, bo poprzedni i aktualny adres różnią się tylko 〈=en, który jest zapisywany do ciastka/sesji. Czyli HTTP_REFERER wypada najwygodniej, ale czy jest równie niezawodne co tamte? Zawsze będzie działać? Czy obojętne których wartości będę używał?

Ponawiam pytanie: czy da się inaczej niż poprzez dodawanie do adresu, przekazywać wartości nadane zmiennym podczas kliku?


Pozdrawiam.

PS
Mam dwa nowe pytania:
Jak wywołać funkcje, której nazwę mam zapisaną w tablicy jako string (wcześniej została includowana)?
Napisałem skrypt, który działa ale po przerobieniu go na funkcje (dodadniu function nazwa(){ ... return; } i includowaniu pliku z funkcją nie jestem wstanie wywołać tej funkcji, gdzie może być błąd - nawiasy i średniki sprawdziłem setki razy ...
Go to the top of the page
+Quote Post
Fifi209
post
Post #5





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

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


eval" title="Zobacz w manualu PHP" target="_manual

Co do funkcji masz:
return;

A przecież coś zwracać musi...

Co do rozwiązania z adresem - moim zdaniem jak Ci wygodniej - i tak to co od użytkownika to można podmienić. ^^


Co do języków...

Zapisz np. do cookie

set_cookie" title="Zobacz w manualu PHP" target="_manual

@edit Pamiętaj, że najpierw wysyłamy do użytkownika nagłówki i cookie. (IMG:http://forum.php.pl/style_emoticons/default/haha.gif)

I co do języków możesz zawsze post'em przekazać? Fuuuuj! Bierz rozwiązanie z cookie albo sesjami.

Ten post edytował fifi209 9.06.2009, 21:05:41
Go to the top of the page
+Quote Post
Spawnm
post
Post #6





Grupa: Moderatorzy
Postów: 4 069
Pomógł: 497
Dołączył: 11.05.2007
Skąd: Warszawa




Mam dwa nowe pytania:
Jak wywołać funkcje, której nazwę mam zapisaną w tablicy jako string (wcześniej została includowana)?
Napisałem skrypt, który działa ale po przerobieniu go na funkcje (dodadniu function nazwa(){ ... return; } i includowaniu pliku z funkcją nie jestem wstanie wywołać tej funkcji, gdzie może być błąd - nawiasy i średniki sprawdziłem setki razy ...
  1. <?php
  2. function foo(){
  3. echo 'bar';
  4. }
  5. $x='foo';
  6. $x();
  7. ?>


pokaż skrypt.
Go to the top of the page
+Quote Post
statek
post
Post #7





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 2.06.2009

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


Dzięki za odpowiedzi!

fifi209 dzięki za eval:)
co do funkcji to mam:
function abc() // nic nie pobieram, bo korzystam tylko z $_SERVER i $_GET
{
petla1{}
petla2{}
petla3{}
return $zm;
}

w każdej pętli coś się dzieje i jest zapis do zmiennej $zm, jeśli zmienię i dam kilka returnów w pętlach to efekt ten sam - nie mogę wywołać funkcji. Czym freewearowym pod win mogę debugować skrypty php?

A do języków używam ciasteczek ale czasem użytkownik chce zmienić język i jakoś muszę przekazać tą informację.

Czy da się jakoś ominąć metodę GET aby nie było tego badziewia widać w adresie? Czy można jakoś inaczej przekazywać zmienne i ich wartości, albo maskować adresy?


Pozdrawiam.


Spawnm jeśli do jutra nie znajdę problemu to wykleję skrypt i poproszę o znalezienie błędu - już nerwicy dostaje z tym skrypcikiem ....


@edit
teraz mnie chyba olśniło czy jak w funkcji mam instrukcje: setcookie to ciasteczko jest normalnie ustawiane, czy musze jakoś to zglobalowac?

Ten post edytował statek 10.06.2009, 00:00:56
Go to the top of the page
+Quote Post
erix
post
Post #8





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Czy da się jakoś ominąć metodę GET aby nie było tego badziewia widać w adresie?

Jeśli zapamiętasz język w sesji, to nie. Ale przynajmniej pierwsze wywołanie będzie musiało zawierać identyfikator języka, jeśli nie będzie się on zgadzał z tym wykrytym na podstawie nagłówków.

Cytat
setcookie to ciasteczko jest normalnie ustawiane, czy musze jakoś to zglobalowac?

No już nie zajrzeć do manuala na setcookie" title="Zobacz w manualu PHP" target="_manual i zadawać takie pytania, to trzeba mieć tupet. O jakimkolwiek kursie PHP nie wspomnę.
Go to the top of the page
+Quote Post
statek
post
Post #9





Grupa: Zarejestrowani
Postów: 65
Pomógł: 0
Dołączył: 2.06.2009

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


erix
Już się pogodziłem (prawie) z tymi brzydkimi adresami.
Czytałem o setcookie w manualu i wydawało mi się, że to zmienna globalna i zawsze mam do niej dostęp, z każdego miejsca. Ale wolałem się upewnić, bo w poszukiwaniu błędu w mojej funkcji zacząłem zastanawiać się nad każdą możliwością. Błędu jeszcze nie znalazłem, ale jutro mam pół dnia na poszukiwania.
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: 21.09.2025 - 00:23