Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów
[PHP] problem z sesją - Wersja do druku

+- Forum Webmastera, HTML, CSS, PHP, MySQL, Hosting, Domeny - Forum dla Webmasterów (https://www.webmastertalk.pl)
+-- Dział: Technologie internetowe - tworzenie stron WWW (https://www.webmastertalk.pl/forum-technologie-internetowe-tworzenie-stron-www)
+--- Dział: Programowanie, Bazy danych (https://www.webmastertalk.pl/forum-programowanie-bazy-danych)
+--- Wątek: [PHP] problem z sesją (/thread-php-problem-z-sesja)



[PHP] problem z sesją - maniek1250 - 25-04-2010

Kod:
<?php
session_start();
include "include.php";
$page = new c_Szablon;
$dbase = new db_interface ($_base_name, $_user, $_pswd, $_host);


if (isset($_POST['login']) && isset($_POST['password'] ))
{
    $result = $dbase ->get_query("SELECT * FROM urzytkownicy
                                WHERE login='".$_POST['login']."'
                                AND haslo = '".$_POST['password']."';");
    if(($_POST['login']==$result[0]['login']) && ($_POST['password']==$result[0]['haslo']))
    {
        $_SESSION['zalowogowany'] = 1;
        $_SESSION['czas'] = time();
        $page->assign['main'] .="Witaj <b>".$result[0]['login']."</b>";
    }
    else
    {
        $login_form = new c_Szablon;
        $page->assign['main'] .="Podano złe hasło, sprobój ponownie";
        $page->assign['main'] .=$login_form->parse("szablon/logowanie.htm");
        echo $page ->parse("szablon/admin/index.htm");
        exit;
    }
}
else
{
    $login_form = new c_Szablon;
    $page->assign['main'] .="Zaloguj się";
    $page->assign['main'] .=$login_form->parse("szablon/logowanie.htm");
    echo $page ->parse("szablon/admin/index.htm");
    exit;
}

if ($result[0]['ranga']==1)
{
    $page->assign['main'] .= "<br><a href=\"?action=add_news\" class=\"link_opcje\">DODAJ NEWSA</a><br>";
}


if (isset($_SESSION['zalogowany'])&&isset($_SESSION['czas'])&&($_SESSION['zalogowany']===1))
{
    if(time()-$_SESSION['czas'] <1800)
    {
        $_SESSION['czas']=time();
        $page->assign['main'] .= "jestes zalogowany<br><br>";

                            if(!isset($_GET['action']))
                             {
                            $_GET['action'] ="";
                            }

             switch ($_GET['action'])
          {
             case "add_news":
                    { ...}
             break;

             default :
                   { ...}
            break;
        }
    }
}



echo $page ->parse("szablon/admin/index.htm");
?>

tak wyglada fragment mojego kodu,
problem tkwi w tym, że jeżeli klikne dodaj newsa, to zamiast wyskoczyć mi formularz za pomocą ktorego dodałbym newsa, to wraca do formularza logowania.

gdzie popełniam błąd?


RE: [PHP] problem z sesją - dziamber - 25-04-2010

Po pierwsze to skąd bierzesz tablicę $result? Po drugie w instrukcji switch, na końcu jak masz default nie stawia się break.


RE: [PHP] problem z sesją - Dhofca - 25-04-2010

@Dziamber, można wstawiać break po defaulcie, nawet w manualu php jest przykład z breakiem.


RE: [PHP] problem z sesją - maniek1250 - 25-04-2010

$result = $dbase ->get_query("SELECT * FROM urzytkownicy
WHERE login='".$_POST['login']."'
AND haslo = '".$_POST['password']."';");


stąd biore result, chyba widac


RE: [PHP] problem z sesją - dziamber - 25-04-2010

@Dhofca - przez cały czas spotykałem się z taką wersją, ale to chyba nie ma znaczenia w działaniu to break na końcu, ale dzięki za uwagę.

Co do twojego problemu, to masz linijkę:
Kod:
if (isset($_SESSION['zalogowany'])&& isset($_SESSION['czas']) && ($_SESSION['zalogowany']===1)) {
Spróbuj tak:
Kod:
if (isset($_SESSION['zalogowany']) && isset($_SESSION['czas']) &&  $_SESSION['zalogowany'] == 1) {



RE: [PHP] problem z sesją - maniek1250 - 25-04-2010

dalej nie działa,

jeżeli kliknę w jakiegoś linka na wyswietlonej stronie po logowaniu, to dalej wyslakuje logowanie, a chcialbym wykonać jakąś akcje


ma ktoś inną propozycje? w jaki sposób rozwiązać sesję?


RE: [PHP] problem z sesją - Dhofca - 25-04-2010

Kod:
if(($_POST['login']==$result[0]['login']) && ($_POST['password']==$result[0]['haslo']))
    {
        $_SESSION['zalowogowany'] = 1;
        $_SESSION['czas'] = time();
Literówka w nazwie zmiennej sesyjnej. :p


RE: [PHP] problem z sesją - maniek1250 - 25-04-2010

to już zauważyłem wczoraj po dodaniu tego posta,

znalazłem rozwiązanie, najpierw sprawdzam sesje, a w razie fałszu wyświetlam okienko logowania,

i teraz mam pytanie czy do zamknięcia sesji wystarczy wywołać session_destroy(); ?


RE: [PHP] problem z sesją - Smertius - 26-04-2010

Nie, należy również wyczyścić tablice $_SESSION np.
unset( $_SESSION);