[PHP] Sesja wczytuje tylko jedna wartosc.

Odpowiedz Nowy wątek
2010-08-09 11:54
Diodak123
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?

Pozostało 580 znaków

2010-08-09 11:59
0

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

Pozostało 580 znaków

2010-08-09 12:05
Diodak123
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>

Pozostało 580 znaków

2010-08-09 12:32
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 :)


Hey ho!

Pozostało 580 znaków

2010-08-09 12:58
Diodak123
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.

Pozostało 580 znaków

2010-08-09 13:00
Diodak123
0

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

Pozostało 580 znaków

2010-08-09 14:00
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;

Pozostało 580 znaków

2010-08-09 14:46
Diodak123
0

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

Pozostało 580 znaków

2010-08-09 15:09
Diodak123
0

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

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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