Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Stare skrypty a undefined index
Forum PHP.pl > Forum > Przedszkole
konradmm
Witam ponownie!

Ostatnio wzielo mnie na przegladanie starych skryptow i znalazlem jeden ktory chcialbym wykorzystac/przerobic wink.gif

Jednakze w kodzie tamtego skryptu czesto uzywalem jednego pliku (index.php) z roznymi GET'ami na wyswietlanie podstron.

problem jest taki, ze jesli uzywam if($_GET['strona'] == "ustawienia") to jesli nie mam ustawionego tego get'a to pojawia sie error "Undefined index: strona".

Teoretycznie powinienem uzywac isset ale tutaj nasuwaja mi sie 2 pytania.

Jak to moge zrobic za pomoca isset? Cos w stylu if(isset($_GET['strona'])) {{ if($_GET['strona'] == "ustawienia") echo "Ustawienia"; }} ?!

I dwa, dlaczego wogole cos takiego mi sie teraz pojawia, a kiedys bylo wszystko ok ? (kiedys = 2-3 lata wstecz)

edit/add:
Problem jest rowniez z if($_SESSION['asdf'] == "OK") ;((
Pyton_000
Odpowiem od tyłu.

Pokazuje się bo zmienił się poziom wyświetlanych błędów "error_reporting"

Ad. 1 to wystarczy
  1. if(isset($_GET['strona']) && $_GET['strona'] == "ustawienia")
kayman
Cytat(Pyton_000 @ 28.01.2015, 08:32:08 ) *
Pokazuje się bo zmienił się poziom wyświetlanych błędów "error_reporting"


i jest to upierdliwe -> nie bardzo rozumiem po co tak zrobili
Forti
Upierdliwe? To jest bardzo dobre rozwiązanie. Logiczne. Najpierw sprawdzaj czy cos istnieje a potem jaka ma wartość.
Najpierw sprawdzasz czy i ew. Gdzie istnieje nocny sklep w okolicy potem idzesz po piwo, prawda?
kayman
a nie to nie pasuje

po staremu czy coś istniało czy cos nie było równe zwracany był false i wystarczyło, a false to false

a teraz trzeba takie stosować

  1.  
  2. public function getGetValue($key) {
  3. return isset($_GET[$key]) ? $_GET[$key] : false;
  4. }
  5.  
  6. public function getPostValue($key) {
  7. return isset($_POST[$key]) ? $_POST[$key] : false;
  8. }
  9.  
nospor
@kayman po pierwsze nie FALSE a NULL. (edit: a ty mowisz o porownaniu, to tak, FALSE choc Twoja funkcja sugeruje co innnego... powinna zwracac NULL a nie false)
Po drugie nie po staremu, tylko tak bylo, jest i bedzie.
Po trzecie: to zawsze rzucalo NOTICEM
Po czwarte: wczesniej koles nie widzial, bo domyslnie noticy nie byly wyswietlane. Teraz domyslnie notice sa wyswietlane, stad wiekszosc poczatkujacych programistow ma nagle zonka.

Tutaj napisałem małe co nie co o NOTICEach
http://nospor.pl/notice-wyswietlac-czy-nie.html
Jesli to CIę nadal nie przekonuje, to ustaw w php.ini by ci nie wyswietlalo tych NOTICEow i nie marudź bez sensu tongue.gif
by_ikar
Pomijając już fakt, że jest to "upierdliwe", to tłumienie takich błędów poprzez @ lub zmianę error_reporting, wciąż wpływa negatywnie na aplikacje. Każdy błąd, nawet ten którego nie widzisz, aby mógł się wygenerować, musi zużyć odpowiednią ilość pamięci, oraz cykli procesora. Jak zaczniesz to sobie uświadamiać, że twoja aplikacja może działać szybciej (w skrajnych przypadkach nawet diametralnie), tylko dlatego że sprawdzasz dane tak jak powinno się to robić, to przestaniesz pisać że jest to upierdliwe.

Zadziwia mnie to że ludzie pomimo tylu wątków na ten temat, wciąż ten temat poruszają..
konradmm
Cytat(Pyton_000 @ 28.01.2015, 08:32:08 ) *
  1. if(isset($_GET['strona']) && $_GET['strona'] == "ustawienia")


Czy dobrze zrozumialem ze jesli uzyjemy && to sprawdza najpierw pierwszy warunek i jesli NIE JEST spelniony to pomija kazdy kolejny po && ?
nospor
Tak. tak właśnie to działa
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.