[PHP] Sesja wczytuje tylko jedna wartosc.

0

Witam mam problem. Otoz mam system logowania i chcialem zeby zamiast formularza logowania (po zalogowaniu) wczytywany byl nick usera.

W pliku login.php pod sprawdzeniem czy login sie zgadzaja mam cos takiego:

if ($password == $pass) {
					$_SESSION["zalogowany"]=="tak";
echo '<head>
	<meta http-equiv="Refresh" content="1; url=index.php" />
</head>
				<center>Zostałe¶ zalogowany. Za chwile 

nast±pi przekierowanie strony. </center>';
				} else {
					echo '<center><font color=black>Hasło 

jest nie prawidłowe. Spróbuj ponownie.</font> </center>';
				}

Pod $_SESSION["zalogowany"]=="tak"; chcialem dodac sobie nick do sesji czyli $_SESSION["acc"]=="$account";

( $account = $_REQUEST['login']; - z poprzedniego formularza. )

I mam problem. Gdy uzywam tego np w zamianie formularza logowania na nick, czyli

<?
if(!($_SESSION["zalogowany"]))
{
?>
<center>
<form method="post" action="index.php?body=login">
Login: <input name="login" size="20" value="" maxlength="20"><br>Haslo: 

<input type="password" name="password" size="20" value="" 

maxlength="20"><br><input type="submit" value="Zaloguj"></form>
</center>
<?
}
if($_SESSION["zalogowany"]=="tak" && $_SESSION["acc"])
{
?>
<center>Jestes zalogowany jako <? $_SESSION["acc"] ?>! <br><a 

href="index.php?body=logout"><font color=white> Wyloguj. </font></a></center>
<?
}
?>

To w efekcie mam tylko:
Jestes zalogowany jako ! Wyloguj.

Co mam zrobic?

0

nie widzę byś zapisywał wartość w $_SESSION["acc"] podczas poprawnej próby zalogowania

0

Ale ja zapisalem ta wartosc. Pisalem ze do login.php pod sesją "zalogowany" dodalem $_SESSION["acc"]=="$account";

Pokaze ci calosc pliku login.php

<?
session_start();

include('config.php');
$account = $_REQUEST['login'];
$password = $_REQUEST['password'];

if (isset($account) && isset($password)) 
              {
	$file = $accounts . $account . ".txt";
	if (file_exists($file)) 
               {

		if (is_readable($file))

                      {
			$filecontents = fopen("$file", "r");
			while(!feof($filecontents))
                     {
				$line=fgets($filecontents);
				$passpos=strstr($line,"pass=");
				if(!($passpos === false)) break;
			}





			if(!($passpos === false)) {
				$passtemp=explode("\"",$passpos);
				$pass=$passtemp[1];


				if ($password == $pass) {
					$_SESSION["zalogowany"]=="tak";
					$_SESSION["acc"]=="$account";
					echo '<head>
	<meta http-equiv="Refresh" content="1; url=index.php" />
</head>
				<center>Zostałe¶ zalogowany. Za chwile 

nast±pi przekierowanie strony. </center>';
				} else {
					echo '<center><font color=black>Hasło 

jest nie prawidłowe. Spróbuj ponownie.</font> </center>';
				}


			}
}





	} else 
          {
echo '<center>Login jest nie prawidłowy. Spróbuj ponownie. </center>';
	}
} else {
	echo '<center>Wypełnij formularz. </center>';
}
?>

</quote>
0
$_SESSION["acc"]=="$account";

Co robisz w tej linijce? Poczytaj o operatorach porównania i przypisania. I dlaczego "$account", a nie po prostu $account?

Musisz się poduczyć php, bo to co teraz robisz, to wygląda na zbieraninę różnych skryptów, które próbowałeś posklejać i nie wychodzi. Ale początki zawsze są trudne :)

0

Nawet jak jest samo $account, to nie chce dzialac. Ja juz nie wiem co mam robic. W jednej stronie mi dzialalo, teraz tworze druga, zrobilem tak samo jak na pierwszej i teraz nie wczytuje.

0

Zeby nie bylo zmienilem tez "==" na "="

0

po pierwsze

<? zamień na <?php nie wszystkie serwery obsługują <? $_SESSION["zalogowany"]=="tak"; $_SESSION["acc"]=="$account"; zamień na $_SESSION["zalogowany"]="tak"; $_SESSION["acc"]=$account;
0

Nadal jest, to samo. Ja jeszcze przejrze kod i sprawdze czy czegos nie pominalem, ale nie wyglada na to.

0

Dobra. Rozwiazane [green] . Taki noobski blad popelnilem. I wcale nie chodzilo o sesje :-D

1 użytkowników online, w tym zalogowanych: 0, gości: 1