Wyświetlenie informacji kto jest zalogowany (nazwa usera)


(kid_m) #1

Cześć,

___


$login= ...


if ($_SESSION["zalogowany"]==1) {

	echo "Zalogowany: $login".". ";

	echo "Wyloguj mnie.";

}


if ($_GET["wyloguj"]=="tak") {

	$_SESSION["zalogowany"]=0;

	header("Location: start.php");

	exit();

}	

___

[/code]

Czy istnieje jakaś prosta funkcja na pobranie nazwy zalogowanego użytkownika? (loginy i hasła są zapisane w bd)


(L337 Crew) #2

Takie coś powinieneś robić tuż przy logowaniu.

W momencie podania loginu i hasła - porównać z tym co jest w bazie i przypisać wartości zmiennym sesyjnym.

Np. coś w takim schemacie:

Później gdzieś na stronie: echo $_SESSION['login']; i po problemie.

Do ideału tak czy inaczej daleko, bo warto pomyśleć nad zabezpieczaniem danych sesyjnych - np. poprzez sprawdzanie czy dane z sesji zgadzają się z tymi w bazie danych - unikniesz wtedy tzw. zatruwania sesji, które w Twoim kawałku kodu może wystąpić ($_SESSION['zalogowany'] = 1) ;]


(kid_m) #3
$zapytanie="SELECT * FROM users WHERE

user_login='".htmlspecialchars($_POST["login"])."' AND

user_haslo = '".htmlspecialchars($_POST["haslo"])."'";


if ($_SESSION["zalogowany"]!=1) {

	if (!empty($_POST["login"]) && !empty($_POST["haslo"])) {

		if (mysql_num_rows(mysql_query($zapytanie))) {

			mysql_close();

			$_SESSION["zalogowany"]=1;

			header ('Location: index.php');

			exit();

			}

		else ShowLogin('Nieprawidłowe dane.');

		}

	else ShowLogin();

}

else {

	function loguj($login) {

	$_SESSION['login'] = $test['login'];

	}

	header ('Location: index.php'); 

	exit();

}

zrobiłem coś takiego... a później w osobnym pliku php mogę dać np. coś takiego...? tylko coś pominąłem, prawda?

echo $_SESSION['login'];

dodam, że jestem początkującym :slight_smile:


(L337 Crew) #4

W tym wypadku definiowanie funkcji zależnej od warunku nie ma najmniejszego sensu :wink:

function loguj($login) {

   $_SESSION['login'] = $test['login'];

   }

Możesz od razu dać $_SESSION['login'] = $test['login']; itd.

Tylko mnie chodziło o globalną obsługę sesji - by cały kod obsługujący logowanie był w stanie sprawdzić czy w danym momencie user jest zalogowany.

Tak, pominąłeś - w nagłówku pliku musi się znaleźć session_start();


(kid_m) #5

dlaczego "to nie działa"...?

wklejam fragmenty kodu...

1.php

<?php ob_start();


session_start();

session_register('zalogowany');


if ($_SESSION['zalogowany']==1) {

	$_SESSION['nick']=$_POST['login'];

	header ('Location: index.php'); 

	exit();

}


ob_end_flush(); ?>

2.php

<?php ob_start();


include 'ramy.php';


session_start();

session_register('zalogowany');


if ($_SESSION['zalogowany']==1) {

	echo $_SESSION['nick'];

	echo "Wyloguj mnie.";

}[/code]

proszę o podpowiedź.