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

Php sesja problem ze zmiennymi

0 głosów
850 wizyt
pytanie zadane 29 grudnia 2016 w PHP przez Ditrix Mądrala (5,650 p.)

Witam

Mój problem. W index.php mam taki o kod

<?php
session_start();
if(empty($_SESSION['done']))
	$_SESSION['pokaz'] = false;
else
$_SESSION['pokaz'] = true;
?>

I resztę strony. Na stronie jest formularz,  który odwołuje się do pliku php - wykresy.php. W tym pliku tworzę zmienną

$_SESSION['done'] = 1;

Na końcu tego plik jest odwołanie do index.php i zamknięcie wykresy.php.

header('location:index.php'); exit;

W którym ma się zadziać taka sprawa, że jeśli $_SESSION['pokaz'] = true; to dołącza mi plik obrazki.php, jeśli nie jest to dołącza mi plik ankieta.php

<?php if($_SESSION['pokaz']==true)include('obrazki.php'); else include('ankieta.php') ?>

I tu jest problem, że za każdym razem zmienna $_SESSION['pokaz'] jest nastawiona na false.

session_destroy() wstawiony jest w obrazki.php.

komentarz 30 grudnia 2016 przez maly Nałogowiec (37,190 p.)
Nie wiem o co chodzi ale skoro w obrazki.php usuwasz sesje(sesion_destroy) to $_SESSION['done'] nie będzie istniał, więc może w tym problem.
No i po co używasz $_SESSION['done'] i $_SESSION['pokaz'] skoru są sobie równoważne.
komentarz 30 grudnia 2016 przez Ditrix Mądrala (5,650 p.)
Obrazki.php uruchamiają się dopiero po wczytaniu index.php. $_SESSION['pokaz'] służy mi do tego, aby dołączyć pliki do strony w zależności od wartości ten zmiennej, a $_SESSION['done'] służy do ustawiania domyślnego układu strony.

3 odpowiedzi

0 głosów
odpowiedź 29 grudnia 2016 przez selfdrivers Użytkownik (870 p.)

Spróbuj zamiast funkcji 

empty();
if(!isset(ta zmienna))
{
    //twój kod
}
else
{
   //twój kod
}

 

komentarz 30 grudnia 2016 przez Ditrix Mądrala (5,650 p.)
Nie widzę sensu. Tylko zapis będzie się różnił
komentarz 30 grudnia 2016 przez bartek7910 Obywatel (1,980 p.)
Nie widzę sensu. Tylko zapis będzie się różnił

Nie do końca jest to prawdą. Według dokumentacji funkcja empty() zwróci FALSE w przypadku gdy ta zmienna ma wartość FALSE lub gdy gdy ta zmienna nie istnieje. W tym przypadku może jest problem z ustawieniem $_SESSION['done']. Ta zmienna może wcale nie istnieć i dlatego wciąż otrzymujesz wartość FALSE.

isset() zwróci FALSE tylko w przypadku gdy ta zmienna nie istnieje.

0 głosów
odpowiedź 29 grudnia 2016 przez selfdrivers Użytkownik (870 p.)

Widzę błąd poważny tak wygląda poprawny kod: 


<?php
session_start();
if(empty($_SESSION['done']))     $_SESSION['pokaz'] = false;
else    $_SESSION['pokaz'] = true;
?>

lub


<?php
session_start();
if(empty($_SESSION['done']))
{
    $_SESSION['pokaz'] = false;
}
else
{
$_SESSION['pokaz'] = true;
}
?>

chodzi o to że jeżeli nie używasz klamer to linie kodu dalszego muszą być zapisane w tej samej linijce ajeżeli nie są to musisz użyć klamer. Chyba o to chodzi. Pozdrawiam.

komentarz 30 grudnia 2016 przez Ditrix Mądrala (5,650 p.)
Nie wiem gdzie to wyczytałeś, ale tak nie jest :) sprawdź to na własnym przykładzie.
komentarz 30 grudnia 2016 przez selfdrivers Użytkownik (870 p.)
Mi zadziałało :) a twój przykład nie. Warto spróbować nikt Cię nie zje
komentarz 30 grudnia 2016 przez Boshi VIP (100,240 p.)
@self poczytaj po podstawach warunkowych.
0 głosów
odpowiedź 30 grudnia 2016 przez bartek7910 Obywatel (1,980 p.)
W warunku sprawdzasz czy sesja ma wartość true, a wcześniej ustawiasz jej wartość 1. Może to jest problem? Spróbuj ustawić jej wartość true zamiast 1.
komentarz 30 grudnia 2016 przez bartek7910 Obywatel (1,980 p.)
Przepraszam ale nie zauważyłem że masz tam dwie zmienne sesyjne. Spróbuj wyświetlić wartości tych zmiennych w różnych miejscach kodu. To chyba najlepszy sposób na sprawdzenie czy coś w tych zmiennych jest w ogóle zapisane i wtedy myśleć co dalej.
komentarz 30 grudnia 2016 przez Ditrix Mądrala (5,650 p.)
Sprawdzam czy zmienna nie jest pusta. Funkcja empty() zwraca mi true lub false, bez względu na to, że znajduje się w zmiennej.
komentarz 30 grudnia 2016 przez bartek7910 Obywatel (1,980 p.)
To sprawdź czy w ogóle zmienna istnieje. empty() zwróci FALSE również w przypadku gdy zmienna nie istnieje.

Podobne pytania

0 głosów
1 odpowiedź 160 wizyt
pytanie zadane 10 lutego 2017 w PHP przez Syl_177 Początkujący (250 p.)
0 głosów
1 odpowiedź 1,510 wizyt
pytanie zadane 3 stycznia 2019 w PHP przez LeeVay Użytkownik (740 p.)
0 głosów
3 odpowiedzi 579 wizyt
pytanie zadane 10 czerwca 2018 w PHP przez Q7V Gaduła (4,250 p.)

93,607 zapytań

142,530 odpowiedzi

322,999 komentarzy

63,098 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

Kursy INF.02 i INF.03
...