Autor Zpráva
mjaus
Profil
Zdravim.

mam problem so session. Robim prihlasovaci system pomocou session, kde budem po prihalseni cez isset session zobrazovat urcite polia alebo nie. Neviem sa zatial prelusknut cez chybovu hlasku:
Notice: Undefined index: logged in C:\xampp\htdocs\sagena\index.php on line 111

A to v takomto menu:
<? if($_SESSION['logged'])
            {
            echo('<p>PRIHLÁSENY: '.$_SESSION['email'].'</p>');
            }
            else
            {
            echo('<p>Neprihlásený!</p>');
            }
?>

prihlasenie prebieha tu:

<?
    session_start();

    require('connectdb.php');
    // ak sa prihlasuje
    if(isset($_POST['pEmail']))
    {
        $_POST['pEmail'] = strtolower($_POST['pEmail']);
        @$prikaz = MySQL_Query("SELECT * FROM distribs");
        if (empty($prikaz))
        {
            echo "<p>Data pre kontrolu pristupovych udajov nie su k dispozicii.";
            //MySQL_Close();
            //exit;
        }
        else
        {
            while($z = MySQL_Fetch_Array($prikaz))
            {
                if(($_POST['pEmail'] == $z['email']) && ($_POST['pPwd'] == $z['pwd']))
                {
                    if($z['verif'] == 1)
                    {
                        header("Cache-control: private");
                        //zaregistruje proměnou logged a nastaví ji na true
                        $_SESSION['logged'] = true;
                        $_SESSION['name'] = $z['name'];
                        $_SESSION['company'] = $z['company'];
                        $_SESSION['email'] = $z['email'];
                        if($_POST['pEmail'] == 'prvy.admin' || $_POST['pEmail'] == 'dalsi.admin')
                        {
                            $_SESSION['admin'] = true;
                        }
                    }
                    else
                    {
                        $alert_2 = true;
                    }
                    break;
                }
            }
            if($_SESSION['logged'] == false) {$alert_1 = true;}
        }
    }
    else if($_GET['logout'] == true)  // ak sa odhlasuje
    {
         $_SESSION = array();
         session_destroy();
         //Ověř zda došlo ke korektnímu ukončení session
         if ($_SESSION['logged'])
        {
              echo "FATAL ERROR: Session nebola ukončená!";
        }
    }


    MySQL_Close();
?>
mzk
Profil *
mjaus:
Neviem sa zatial prelusknut cez chybovu hlasku:
není to ani tak chybová hláška, spíš varování, které by se ale nemělo ignorovat

jinak ohledně toho přihlášení by bylo možná lepší tahat jen jeden záznam z databáze a né celou tabulku:
"SELECT * FROM distribs WHERE email = $email AND heslo = $heslo"
mjaus
Profil
mzk:
Dakujem.

Zaznamy z databazy su uz len detail. Horsie je ze sa neviem dalej pohnut s tym prihlasenim. Ako keby tam nebol ten session definovany.

Mam z toho hlavu v smutku, lebo uz som to raz davno robil na inej stranke a tam mi to funguje. Teraz sa z toho neviem vysomarit...
mzk
Profil *
mjaus:
Zaznamy z databazy su uz len detail.
no to jsou dost silná slova, ale budiž...

zkontroluj si, jestli je session_start() tam kde má být (hlavně pokud to máš rozděleno do více souborů), nikde tam navíc nevidím přihlašovací formulář
Davex
Profil
mjaus:
Na začátku chybí session_start a varování se nezobrazí, když otestuješ existenci klíče v poli.

<?php
  session_start();
  
  if (isset($_SESSION['logged']) && $_SESSION['logged']) {
    // přihlášen
  } else {
    // nepřihlášen
  }
mjaus
Profil
Tak takto sa veci maju. Nefunguje mi to na lokale cez xampp. akonahle som to dal na skutocny server tak bolo vsetko vporiadku. Doteraz neviem preco to na lokale nejde ale nemam cas to teraz riesit. Pokracujm v praci na serveri...

Ak by mal niekto nejaky podobny problem a rozluskol ho nec napise. Budem mu vdacny.
Tori
Profil
Možná je na serveru zapnuté nastavení session.auto_start. Doplnil jste si session_start(); na začátek všech skriptů (kromě includovaných), kde chcete session používat?
mjaus
Profil
session_start(); mam hned na zaciatku... Bez toho by to nebezalo ani inde...
peta
Profil
mjaus: Mno, a kdyz upravis kod od Davex takto? A vyzkousis to ve spesl novem souboru bez toho ostatniho? klikanim na prejit na stranku bys mel nasimulovat prechod na jinou stranku, pripadne si to zkopiruj pod jinym nazvem z kus prechod mezi dvema strankami. Treba problem neni s xamp ale ve zbytku tveho kodu, treba nelogicky kontrolujes nejdriv logged a az pak se pokousis uzivatele prihlasit na udaje, ktere poslal formularem. Tim padem nastaves predem, ze je odhlaseny a prihlaseni se projevi az po obnoveni stranky nebo prechodem na jinou.
<?php
  session_start();
  
  $action = isset($_GET['action'])     ? $_GET['action']     : '';
  $user   = isset($_GET['user'])       ? $_GET['user']       : '';
  if ($action=='login')
    {
    if ($user=='tonda')
        {
        $_SESSION['logged'] = $user;
        }
    }
  if ($action=='logout')
    {
    unset($_SESSION['logged']);
    }
  $logged = isset($_SESSION['logged']) ? $_SESSION['logged'] : '';
  if ($logged!=='') {
    echo "prihlasen ".$logged;
  } else {
    echo "neprihlasen";
  }
?>
<ul>
<li><a href="session_prihlaseni.php?action=login&user=tonda">prihlasit</a>
<li><a href="session_prihlaseni.php?action=logout">odhlasit</a>
<li><a href="session_prihlaseni.php">prejit na stranku</a>
</ul>
mjaus
Profil
ono je to takto. Najskor musi preverit ci je vobec a ak ano kto je prihlaseny a potom na zaklade toho zobrazi menu. Kazdy uzivatel podla prav ma rozdielne menu aby sa ten onen uzivatel nedostal kam nema....

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: