• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed $_SESSION na stronie po jej kolejnym wczytaniu

Object Storage Arubacloud
0 głosów
333 wizyt
pytanie zadane 28 września 2015 w PHP przez kaminiak23 Użytkownik (640 p.)
zamknięte 29 września 2015 przez kaminiak23

Zaczynam uczenie się PHP i być może pytanie jest już z gruntu błędne za co przepraszam.

 

Mam stronę z formularzem dodającym do bazy, na stronie odbierającej formularz sprawdzenie czy pola są wypełnione i jesli nie to wraca do strony z formularzem wraz z informacją o braku wypełnienia (same tylko php bez javy i innych) - to teoretycznie działa poprawnie i zrobiłem to na zasadzie jak w lekcji PHP:

 

if (!$ad_user || !$ad_email || !$ad_dodaje) 
{
	$_SESSION['nie_podano_wszystkich_danych'] = true;
	$_SESSION['nie_podano_wszystkich_danych'] = "Nie wypełniono wszystkich wymaganych pól. </br>Wymagane są: <b>Nazwa urzytkownika, E-mail, Dodaje </b></br></br></br>";
	header('Location: dodaj.php');
	exit();
}

a na stronie formularza:

if (isset($_SESSION['nie_podano_wszystkich_danych'])) 
{
	echo $_SESSION['nie_podano_wszystkich_danych'];
}

to działa ale powstaje mi błąd - ta $_SESSION jest już jakby cały czas i jak wchodzę kolejny raz na stronę formularza to od razu widać błąd bo zmienna jest - jak to poprawnie robić?

Powinienem w jakiś sposob kasować tę zmienną wychodząc ze strony formularza?

edit - mam to w xamp - może to tak tylko lokalnie jest a na serwerze tak nie bedzie? kiedy kasuje się taka zmienna $_SESSION (po 24 min ale może też w innych wypadkach)?

- jak szukałem na forum to nie było a jak dodałem pytanie to pojawiły siętematy podobne i chyba mam odpowiedź ale nie bede zamykał bo może jest inaczej - czy to o to chodzi?

if (isset($_SESSION['blad'])) {
     echo $_SESSION['blad'];
     unset($_SESSION['blad']);
}

 

komentarz zamknięcia: Uzyskano odpowiedź

2 odpowiedzi

+2 głosów
odpowiedź 28 września 2015 przez writen Nałogowiec (29,060 p.)
edycja 28 września 2015 przez writen

Jak wszyscy wiedzą, rozwiązań jednego problemu może być wiele.

1. Odpowiadając na pytanie.

Po wyświetleniu błędu zmienną sesyjną wystarczy skasować.

W wielu, jak nie we wszystkich frameworkach php można spotkać się z takim czymś jak Flash messages, czyli właśnie takie sesje, które istnieją do momentu ich wyświetlenia.

To ostatnie rozwiązanie z twojego posta jest ok. Musisz jednak trochę nad nim popracować.

2. Zamiast używać sesji po wystąpieniu błędu można przekierować do dodaj.php z ustawioną zmienną GET zawierającą kod błędu. Np.

dodaj.php?error=1

if(!empty($_GET['error'])) {
switch($_GET['error']) {
case 1: echo "Jakiś błąd"; break;
case 2: echo "Inny błąd."; break;
// itd...
}
}

3. Każde rozwiązanie zależy od budowy struktury aplikacji. Dwa pierwsze rozwiązania będą dla ciebie dobre na etapie nauki. Nie są doskonałe - drugie raczej jako ciekawostka. Z czasem poznasz inne rozwiązania i sposoby ich udoskonalania.

komentarz 29 września 2015 przez kaminiak23 Użytkownik (640 p.)
Dziękuje, Twoja odpowiedz jest cenna i wartościowa a co najważniejsze merytoryczna - wiem, ze na początku pytania sa banalne i głupie ale czy jest inna droga?

dzieki za podpowiedz :) póki co bede używał sesji i kasował  zaraz po tym błąd - na ten moment jest to dla mnie bardzo optymalne i jeszcze wad tego nie widze :)
0 głosów
odpowiedź 28 września 2015 przez Boshi VIP (100,240 p.)
edycja 28 września 2015 przez event15
Jedno ale to zasadnicze pytanie mam:?   Po jaką cholerę w SESJI trzymasz kod błędu ? A do tego dziwisz się, że na stronie formularza masz  ją widoczną?
 -wysyłasz formularz

- sprawdzasz czy  są pola wypełnione- jęzeli tak to robisz co tam chcesz

- jeżeli nie, przekierowujesz na formularz przez header np ...
komentarz 28 września 2015 przez event15 Szeryf (93,790 p.)

Boshi, tu zaglądają też <10latkowie wink

komentarz 28 września 2015 przez Boshi VIP (100,240 p.)
Serio :D? a to takim wolno w internetach siedzieć ?
komentarz 28 września 2015 przez kaminiak23 Użytkownik (640 p.)
Dziękuję za odpowiedź - uspokajam moje ego :) tak jak robi to Mirek w kursach i nie odpowadam zaczepnie tylko:

- ja php widzę od tygodnia więc nie do końca rozumiem co to jest sesja, jak to i gdzie trzymać itp - bez czytania i pytania niczego się nie nauczę więc muszę zadawać takie banalne Tobie pytania i popełniać takie błędy.

- po co to trzymam? sam nie wiem ale z tego co widzę po kodzie to na obu stronach potrzebuję (chyba) sesji. Czy chodzi o to, że mam to przesyłać zwykłą zmienną bez sesji czy nie robić na tych stronach sesji?
komentarz 28 września 2015 przez kaminiak23 Użytkownik (640 p.)
zdziwicie się pewnie ale ja tak myślę coś, że mam więcej lat od was obu. a nie ma chyba znaczenia w jakim wieku ktoś zaczyna jak ma chęć - right? :)
komentarz 28 września 2015 przez event15 Szeryf (93,790 p.)

Bardziej mi chodziło o użycie wulgaryzmu smiley

komentarz 28 września 2015 przez kaminiak23 Użytkownik (640 p.)

czy mógłym poprosić jeszcze Cię  Boshi o krótkie mi tego wyjaśnienie?

1. z formularza wysyłam

2. sprawdzam i nie ma wypełnienia

- jak wysylam błąd do formularza ponownie (znam samo przekierowanie przez heder ale jak wyslać jednorazowo ten błąd mam wtedy)

- czy to co pokazałem, że błąd sesją to jakieś bardzo złe rozwiąznie, czy tylko trochę gorsze od tego co proponujesz?

komentarz 28 września 2015 przez writen Nałogowiec (29,060 p.)
eee. Ale to wcale nie był wulgaryzm :p
komentarz 28 września 2015 przez event15 Szeryf (93,790 p.)
SJP uważa zgoła inaczej.
komentarz 28 września 2015 przez Boshi VIP (100,240 p.)
Kto to się  SJP dziś kieruje :P
komentarz 28 września 2015 przez event15 Szeryf (93,790 p.)

Ktoś, kto wie co to jest i do czego służy wink

Podobne pytania

0 głosów
1 odpowiedź 218 wizyt
pytanie zadane 28 maja 2016 w PHP przez fmc Początkujący (260 p.)
–2 głosów
3 odpowiedzi 239 wizyt
+2 głosów
1 odpowiedź 226 wizyt

92,626 zapytań

141,486 odpowiedzi

319,846 komentarzy

62,009 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...