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

PHP i błąd przy logowaniu

0 głosów
345 wizyt
pytanie zadane 14 maja 2015 w PHP przez Gandalf Obywatel (1,260 p.)

Witam od niedawna uczę się PHP i właśnie natknąłem się na problem którego nie mogę rozwiązać.

Mam plik index.php z linkiem do logowania w user.php, klikając na link przenoszony jestem do formularza i jeśli dane są poprawne to przekierowuje mnie z powrotem na index.php tylko żeby już nie pokazywać linku do logowania a wyświetlić napis "Witaj Admin".

Tak miało być w założeniu, zobaczcie kod, bo ja już nie wiem gdzie leży błąd:

index.php

if($_SESSION['loger'] == 1)
{
	
	echo "Witaj ".$login."!";
}
else
{
	echo "<a href='index.php?file=logowanie'>Logowanie</a>";
}

user.php

<?php
session_start();

	$login = $_POST['login'];
	$haslo = $_POST['haslo'];
	
	if(($login == 'Admin') && ($haslo == 'abc'))
	{
		$_SESSION['loger'] = 1;
		header('Location: index.php');
	}

?>

 

1 odpowiedź

+1 głos
odpowiedź 14 maja 2015 przez Boshi VIP (100,240 p.)
A jakiś błąd? serio to my się mamy domyślać co jest nie tak ? z kodu wynika, że wszystko gra? strzelamy dalej ?

Jedynie czego tu nie widzę, to session_start w pliku index.php
komentarz 14 maja 2015 przez Gandalf Obywatel (1,260 p.)
Błąd jest taki że w pliku index.php cały czas jest wykonywany else, nawet po zalogowaniu, tak jakby w ogóle nie był spełniany warunek, a session_start() mam dodany w tym pliku.
komentarz 14 maja 2015 przez efiku Szeryf (75,160 p.)

To debuguj index.php jaką tablicę sesji otrzymuje po przekierowaniu 

if($_SESSION['loger'] === 1) 

Tak lepiej 

wink

komentarz 14 maja 2015 przez Gandalf Obywatel (1,260 p.)

Działa! Dzięki za pomoc, generalnie mógłbym tu zastosować inny myk

if($_SESSION['loger'] != 0)

{

    echo "Witaj ".$_SESSION['login']."!";

}

else

{

    echo "<a href='index.php?file=logowanie'>Logowanie</a>";

}

 

komentarz 14 maja 2015 przez efiku Szeryf (75,160 p.)

if($_SESSION['loger'] !== 0)

tak lepiej 

wink

komentarz 14 maja 2015 przez Boshi VIP (100,240 p.)
Serio, nie wiem co tutaj był za błąd i mam wrażenie, że to co napisał Efik nie ma nic wspólnego.  Skoro przy logowaniu zapisujesz 1 do tablicy [int] i sprawdzasz tablicę [int]=>1 czy się równa 1[int] to nie ma opcji by  porównanie zwróciło false. Typy są identyczne. Identyczność sprawdza również typ a co za tym idzie ,przykład by zwrócił false w tym wypadku, bo druga 1 jest typu string a pierwsza 1 int, a powrównanie zwróci true bo wartość jest identyczna (automatyczna konwersja do typu liczbowego ze stringa)

if (1==='1') echo 'tak' else echo 'nie';

Podobne pytania

0 głosów
0 odpowiedzi 156 wizyt
pytanie zadane 17 listopada 2020 w PHP przez Paweł Matusik Nowicjusz (120 p.)
0 głosów
4 odpowiedzi 422 wizyt
pytanie zadane 9 czerwca 2015 w PHP przez emwu Użytkownik (540 p.)
0 głosów
1 odpowiedź 499 wizyt
pytanie zadane 24 stycznia 2018 w JavaScript przez afqedart Mądrala (5,050 p.)

93,425 zapytań

142,421 odpowiedzi

322,646 komentarzy

62,786 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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...