Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]POMOCY! ----- $_SERVER['PATH_INFO'] + sesje
siemieng
post 2.07.2009, 21:13:29
Post #1





Grupa: Zarejestrowani
Postów: 101
Pomógł: 7
Dołączył: 16.01.2007

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


witam, siedze juz nad tym 3 dzien, pytalem 2 razy na forum, pytam ponownie, poniewaz metoda wyciania fragmentow kodu doszedlem gdzie jest blad.

W projekcie stosuje "przyjazne linki" poprzez zastosowanie $_SERVER['PATH_INFO']:
  1. <?php
  2. $_SERVER['PATH_INFO'] = (isset($_SERVER['PATH_INFO']) && $_SERVER['PATH_INFO'] != '/') ? $_SERVER['PATH_INFO'] : '/';
  3. $_url = explode('/', substr($_SERVER['PATH_INFO'], 1));
  4. ?>

Dzieki temu otrzymuje adres url: domena.pl/strona/podstrona1/podstrona2/ (strona plik fizyczny - podstrony - moje wymyslone nazyw dla dzialow).

Problem pojawia sie przy pobraniu, a nawet nie tyle przy pobraniu co sprawdzeniu wartosci wpisanego adresu url:
  1. <?php
  2. //POBRANIE WARTOSCI PODSEKCJI URL
  3. $_rSubsections = array(); //tablica pobranych warosci url (podeskcje)
  4. $limit = 3;//maksymalne liczba podsekcji w url
  5. for($i=0; $i<$limit; $i++)
  6. {
  7.    if(!empty($_url[$i]))
  8.    {
  9.        $_subsection = array();
  10.        $_subsection['isExist'] = true; //zmienna kontrolna
  11.         $_subsection['value'] = $_url[$i]; // wartosc wpisana w url
  12.         if(isset($_SUBSECTIONS[$_url[$i]]))
  13.         {
  14.             $_subsection['code'] = $_SUBSECTIONS[$_url[$i]][0]; // kod sekcji pobrany z pliku konfiguracji ($_SUBSECTIONS)  na podstawie wartosci z url
  15.         }
  16.         $_rSubsections[] = $_subsection;
  17.     }
  18.     else
  19.     {
  20.         $_rSubsections[]['isExist'] = false;
  21.     }
  22. }
  23. ?>

Wynik print_r($_rSubsections) dla url np: domena.pl/strona/ustawienia/
Array
(
[0] => Array
(
[isExist] => 1
[value] => ustawienia
[code] => b:000
)

[1] => Array
(
[isExist] =>
)

[2] => Array
(
[isExist] =>
)
)
I do tej pory jest ok. Znaczy wszystkie mozliwe podeskcje sa zapisane w tablciy php, czy pliku xml, czy bazie danych. Wyglada to tak:

(nazwa) ustawienia | (kod) b:000 | (pelna_nazwa) ... | (tytul) ... | itd...

I teraz zwyczajnie chce sprawdzic, czy uzytkownik podal prawidlowy adres url, czyli poruwnuje pobrana z url wartosc (w tym przypadku "ustawienia") i sprawdzam jej istnienie w konfiguracji, jak jest ok, pobieram kod (b:000) ktorym sie posluguje w pozostalej czesci aplikacji dla tej podesekcji.

Jesli zostanie podana bledna wartosc url np: domena.pl/strona/ustawienia/podsekcja/
Array
(
[0] => Array
(
[isExist] => 1
[value] => ustawienia
[code] => b:000
)

[1] => Array
(
[isExist] => 1
[value] => podsekcja
)

[2] => Array
(
[isExist] =>
)

)
Nie zostanie jej przypisany kod podeskcji. I teraz sprawdzam to np tak:
  1. <?php
  2. foreach($_rSubsections as $_tempSubsection)
  3. {
  4.    if($_tempSubsection['isExist'] && isset($_tempSubsection['value']))
  5.    {
  6.        if(empty($_tempSubsection['code']))
  7.        {    
  8.            echo 'tekst probny';
  9.            $_SESSION['DATA']['isValid'] = false;
  10.        }
  11.    }
  12. }
  13. ?>


I teraz blad polega na tym, za kazdym razem wykonywane jest $_SESSION['DATA']['isValid'] = false; nawet jesli warunki if-ow nie sa spelnione, czyli takst "tekst probny" z wewnetrznego if-a sie nie ukarze a wartosc zmiennej sesyjnej sie zmienia.
Problemu nie jedynie dla sytuacji, w ktorej podana jest maksylana liczba sesji (tu 3) czyli np: domena.pl/strona/ustawienia/dostep/haslo/.

Przez caly dzisiejszy dzien sprawdzalem to na dziesiatki sposobow, rozne rodzje zapisu, rozne sposoby sprawdzania czy zostal wygenerowany kod dla wprowadzonej podsekcji, wkoncu czepilem sie typow zmiennych ale naet jak wartosci flase/true usatwie na stringi jest tak samo:/

Wydaje sie ze to moj jakis glupi blad, ale nie moge sobie z nim poradzic, POMOCY!!!


zadnych pomyswlo?? :/ zastanawiam sie czy moe miec to zwiazek z typem zmiennych ale chyba nie - prosze raz jeszcze o jakies wskazowki
Go to the top of the page
+Quote Post
Pilsener
post 3.07.2009, 00:00:56
Post #2





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


  1. <?php
  2. if(empty($_tempSubsection['code']))
  3.       {    
  4.           echo 'tekst probny';
  5.           $_SESSION['DATA']['isValid'] = false;
  6.       }
  7. ?>
- pisałem już Tobie o tym winksmiley.jpg Nie musi wyświetlać się "tekst probny", by:

  1. <?php
  2. if($_SESSION['DATA']['isValid']){
  3.   echo 'true';
  4. }else{
  5.   echo 'false';
  6. }
  7. ?>
- wyświetlało false, wystarczy, że isValid nie jest true, a nie widzę, żebyś gdzieś ustawiał true - domyślnie zawsze będzie false.
Go to the top of the page
+Quote Post
siemieng
post 3.07.2009, 12:04:21
Post #3





Grupa: Zarejestrowani
Postów: 101
Pomógł: 7
Dołączył: 16.01.2007

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


Cytat(Pilsener @ 3.07.2009, 01:00:56 ) *
  1. <?php
  2. if(empty($_tempSubsection['code']))
  3.       {    
  4.           echo 'tekst probny';
  5.           $_SESSION['DATA']['isValid'] = false;
  6.       }
  7. ?>
- pisałem już Tobie o tym winksmiley.jpg Nie musi wyświetlać się "tekst probny", by:

  1. <?php
  2. if($_SESSION['DATA']['isValid']){
  3.   echo 'true';
  4. }else{
  5.   echo 'false';
  6. }
  7. ?>
- wyświetlało false, wystarczy, że isValid nie jest true, a nie widzę, żebyś gdzieś ustawiał true - domyślnie zawsze będzie false.


Nie no mam domyslne ustawienie zmiennej sesyjnej - na samym poczatku:
  1. <?php
  2. session_start(); $_SESSION['DATA']['isValid'] = (isset($_SESSION['DATA']['isValid'])) ? $_SESSION['DATA']['isValid'] : true;
  3. ?>
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: 7.07.2025 - 01:55