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

question-closed isset - błąd

Object Storage Arubacloud
+1 głos
366 wizyt
pytanie zadane 28 czerwca 2021 w PHP przez EmilB Użytkownik (980 p.)
zamknięte 9 lipca 2021 przez EmilB

Witam, mam taki problem, gdy wchodzę w index.php - odrazu mnie przekierowywuje na range "premium", może ktoś coś doradzić?

 

<?php

	session_start();

	if(isset($_SESSION['zalogowany']))
	{
		if((isset($_SESSION['ranga']) && $_SESSION['ranga'] === "administrator"))
		{

			echo '
			<div class="podklad">
			<div class="belka">

				<ul><a href="http://www.emil.xaa.pl">FK Trade</a></ul>
				<ul><a href="index.php">Strona Główna</a></ul>
				<ul><a href="baza.php">Użytkownicy</a></ul>
				<ul><a href="profil.php">Profil</a></ul>
				<ul><a href="dodaj_sygnal.php">Dodaj sygnał</a></ul>
				<ul><a href="dodaj_wynik.php">Dodaj wynik</a></ul>
				<ul><a href="logout.php">Wyloguj</a></ul>



			</div>

			</div>
			';
		}

		elseif((isset($_SESSION['ranga']) && $_SESSION['ranga'] === "premium"))
		{
			echo '
			<div class="podklad">
			<div class="belka">

				<ul><a href="http://www.emil.xaa.pl">FK Trade</a></ul>
				<ul><a href="index.php">Strona Główna</a></ul>
				<ul><a href="profil.php">Profil</a></ul>
				<ul><a href="logout.php">Wyloguj</a></ul>



			</div>

			</div>
			';
		}

		else
		{
			header('Location: /');
		}
	}
	else {
		header('Location: /');
	}
?>

 

komentarz zamknięcia: Udalo sie bez pomocy
komentarz 28 czerwca 2021 przez EmilB Użytkownik (980 p.)
przeniesione 28 czerwca 2021 przez Comandeer

Tutaj podobnie, zalogowany jestem na pierwsze konto, wyświetla drugie.

 

	$polaczenie = new PDO('mysql:host='.$host.';dbname='.$db_name, $db_user, $db_password);
			if($rekordy = $polaczenie->query("SELECT id FROM users where id = '" . $_SESSION[ "id" ] . "'"))
			{
			echo "<table class='table'><tr><th>ID</th><th>Email</th><th>Nazwa użytkownika</th><th>Ranga</th></tr>";
				echo "
				<tr>
					<td>" . $_SESSION['id'] . "</td>
					<td>" . $_SESSION['email'] . "</td>
					<td>" . $_SESSION['nick'] . "</td>
					<td>" . $_SESSION['ranga'] . "</td>
				</tr>";

			   echo" </table>";
			}

 

komentarz 28 czerwca 2021 przez VBService Ekspert (254,260 p.)

@EmilB, Spróbuj sprawdzić co zawiera tablica $_SESSION  np.

<?php
 
    session_start();

    var_dump($_SESSION);
    //exit;
 
    if(isset($_SESSION['zalogowany']))
    {

        . . .

 

komentarz 28 czerwca 2021 przez EmilB Użytkownik (980 p.)
array(5) { ["zalogowany"]=> bool(true) ["id"]=> string(1) "1" ["user"]=> string(4) "reju" ["email"]=> string(20) "emilo1000@interia.pl" ["ranga"]=> string(13) "administrator" }
komentarz 28 czerwca 2021 przez EmilB Użytkownik (980 p.)
Zastanowiłem się chwile i wpadłem na taki pomysl, w innej podstronie nie miałem issetów z rangami, tylko poprostu wypisane menu dla każdej rangi, dodałem issety do innej podstrony przechodzę na tą podstawową podstronę i wszystko jest ok, pokazuje tego użytkownika i range, na którym jestem aktualnie zalogowany.

 

Czyli do każdej podstrony musze dodać opcje z rangami, może ktoś mi wyjaśnic, dlaczego tak jest, bo troche nie rozumiem?
komentarz 28 czerwca 2021 przez EmilB Użytkownik (980 p.)
Update:

jednak dalej jest to samo, przechodze na inna podstrone, wracam na index.php i mi wyświetla

" array(6) { ["zalogowany"]=> bool(true) ["id"]=> string(1) "2" ["user"]=> string(4) "reju" ["email"]=> string(21) "wyngiel1001@gmail.com" ["ranga"]=> string(13) "administrator" ["nick"]=> string(9) "wyngiello" } "

zamiast

array(5) { ["zalogowany"]=> bool(true) ["id"]=> string(1) "1" ["user"]=> string(4) "reju" ["email"]=> string(20) "emilo1000@interia.pl" ["ranga"]=> string(13) "administrator" }
komentarz 28 czerwca 2021 przez EmilB Użytkownik (980 p.)

Tutaj kod index.php

<head>

	<title>ETG - Trade Group</title>
	<link rel="stylesheet" href="/css/style.css">

</head>

<?php

	session_start();

	var_dump($_SESSION);
	
	if(isset($_SESSION['zalogowany']))
	{
		if((isset($_SESSION['ranga']) && $_SESSION['ranga'] == "administrator"))
		{

			echo '
			<div class="podklad">
			<div class="belka">

				<ul><a href="http://www.emil.xaa.pl">FK Trade</a></ul>
				<ul><a href="index.php">Strona Główna</a></ul>
				<ul><a href="baza.php">Użytkownicy</a></ul>
				<ul><a href="profil.php">Profil</a></ul>
				<ul><a href="dodaj_sygnal.php">Dodaj sygnał</a></ul>
				<ul><a href="dodaj_wynik.php">Dodaj wynik</a></ul>
				<ul><a href="logout.php">Wyloguj</a></ul>



			</div>

			</div>
			';
		}

		elseif((isset($_SESSION['ranga']) && $_SESSION['ranga'] == "premium"))
		{
			echo '
			<div class="podklad">
			<div class="belka">

				<ul><a href="http://www.emil.xaa.pl">FK Trade</a></ul>
				<ul><a href="index.php">Strona Główna</a></ul>
				<ul><a href="profil.php">Profil</a></ul>
				<ul><a href="logout.php">Wyloguj</a></ul>



			</div>

			</div>
			';
		}

		else
		{
			header('Location: /');
		}
	}
	else {
		header('Location: /');
	}
?>

Tutaj kod innej podstrony:

<head>

	<title>ETG - Trade Group</title>
	<link rel="stylesheet" href="/css/style.css">

</head>
<?php
	session_start();

	if(isset($_SESSION['zalogowany']))
	{
		if((isset($_SESSION['ranga']) && $_SESSION['ranga'] == "administrator"))
		{

			echo '
			<div class="podklad">
			<div class="belka">

				<ul><a href="http://www.emil.xaa.pl">FK Trade</a></ul>
				<ul><a href="index.php">Strona Główna</a></ul>
				<ul><a href="baza.php">Użytkownicy</a></ul>
				<ul><a href="profil.php">Profil</a></ul>
				<ul><a href="dodaj_sygnal.php">Dodaj sygnał</a></ul>
				<ul><a href="dodaj_wynik.php">Dodaj wynik</a></ul>
				<ul><a href="logout.php">Wyloguj</a></ul>



			</div>

			</div>
			';
		}

		elseif((isset($_SESSION['ranga']) && $_SESSION['ranga'] == "premium"))
		{
			echo '
			<div class="podklad">
			<div class="belka">

				<ul><a href="http://www.emil.xaa.pl">FK Trade</a></ul>
				<ul><a href="index.php">Strona Główna</a></ul>
				<ul><a href="profil.php">Profil</a></ul>
				<ul><a href="logout.php">Wyloguj</a></ul>



			</div>

			</div>
			';
		}

		else
		{
			header('Location: /');
		}
	}
	else {
		header('Location: /');
	}

?>

<form action="dodaj_wynik_php.php" method="post">
	<div class="pole_mail"><div class="pole_mail_tekst">Nr</div></div><input type="text" name="id">
	<div class="pole_mail"><div class="pole_mail_tekst">Waluta</div></div><input type="text" name="waluta">
	<div class="pole_mail"><div class="pole_mail_tekst">Wynik</div></div><input type="text" name="wynik">
	<div class="pole_mail"><div class="pole_mail_tekst">Godzina zamknięcia</div></div><input type="text" name="godzzamkniecia">
	<input type="submit" name="potwierdz">
</form>
</div>



</body>

 

komentarz 28 czerwca 2021 przez VBService Ekspert (254,260 p.)
A jak wylogujesz użytkownika  ["id"]=> "2" przed zalogowaniem  ["id"]=> "1"?
komentarz 28 czerwca 2021 przez EmilB Użytkownik (980 p.)

logout.php - to masz na myśli?

<?php
	session_start();
	session_unset();
	header('Location: /');
?>

wszedłem na użytkownika [2] i wylogowałem, dalej to samo.

komentarz 28 czerwca 2021 przez VBService Ekspert (254,260 p.)

W dokumentacji php zalecane jest m. in. tak

<?php
  session_unset();
  session_destroy();
  $_SESSION = array(); // Nadpisanie pustą tablicą

  . . .
?>

 

komentarz 28 czerwca 2021 przez EmilB Użytkownik (980 p.)

Zrobiłem tak i teraz nie wylogowało w ogóle.

<?php
	session_unset();
	session_destroy();
	$_SESSION = array();
	header('Location: /');
?>

Dodałem session start, wylogowałem i dalej jest to samo.

komentarz 28 czerwca 2021 przez VBService Ekspert (254,260 p.)

Natomiast na stackoverflow m. in jest taki przykład

<?php
session_start();
unset($_SESSION);
session_destroy();
session_write_close();
header('Location: /');
die;
?>

 

komentarz 29 czerwca 2021 przez EmilB Użytkownik (980 p.)
W wylogowywaniu raczej problemu nie ma, gdzie indziej jest, dalej jest to samo.

1 odpowiedź

0 głosów
odpowiedź 8 lipca 2021 przez EmilB Użytkownik (980 p.)
Rozwiązane można zamknąć.

Podobne pytania

0 głosów
2 odpowiedzi 138 wizyt
pytanie zadane 28 maja 2022 w PHP przez el maccho Użytkownik (620 p.)
0 głosów
2 odpowiedzi 146 wizyt
pytanie zadane 22 grudnia 2021 w PHP przez KolesZSzafy Nowicjusz (140 p.)
0 głosów
1 odpowiedź 93 wizyt
pytanie zadane 21 grudnia 2021 w PHP przez KolesZSzafy Nowicjusz (140 p.)

92,615 zapytań

141,465 odpowiedzi

319,781 komentarzy

61,997 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!

...