Autor Zpráva
vladap
Profil
Dobry den (ahoj),

po prihlaseni uzivatele ukladam do promenne hash, ktery slouzi pro authentikaci na MySQL pri cteni a zapise. Hash nacitam pres:
    public function login ($T_name, $T_password, $T_url, $T_page) 
    {
        $conn = $GLOBALS['conn'];
        $T_user_objid = $T_page->user_objid;
        $T_browser_objid = $T_page->browser_objid;
        $procedure = "Main_login_users_standard_into(
            '".$T_name."', 
            '".$T_password."', 
            '".$T_url."', 
            '".$T_user_objid."', 
            '".$T_browser_objid."',
            @a)";
        
        $Q_user_long_access_stamp = return_from_procedure($procedure, '@a');  //nacteni promenne z MySQL funkce, funguje bez problemu.
            
        $T_page->user_objid = $Q_user_long_access_stamp;
        $COOKIE['users_login'][$T_url] = array(
                'Long_access_stamp' => $Q_user_long_access_stamp,
                'UnixTime_Stamp' => $result->TimeStamp_def,
                'Comp_spec' => $_SERVER['HTTP_USER_AGENT'].$_SERVER['REMOTE_ADDR'],
        );

       setcookie('users_login',serialize($COOKIE['users_login'])); //cookies se fyzicky vytvori a je k precteni

        }
        return $Q_user_long_access_stamp;
    }

Cookies se vytvori a bez problemu zapisi. Promenna $T_page->user_objid, ktera nese hash na strane PHP se take naplni. Priklad hashe: 9932fba58a3ee84bd89946a6bb526ade

Pri refresh stranky (noveho nacteni) se vola funkce Autologin, ktera ma z cookies natahnout opet hash, ale zde narazim. Funkce se bez problemu zavola, ale nedostane se pres podminku: 
if (isset($COOKIE['users_login'][$Q_Page_HTMLaddress])&& $COOKIE['users_login'][$Q_Page_HTMLaddress]['Comp_spec'] == $_SERVER['HTTP_USER_AGENT'].$_SERVER['REMOTE_ADDR']) 
Hash se nenacte. Vypis funkce autologin:
    public function autologin ($T_page)
    {
        $conn = $GLOBALS['conn'];
        if (isset($_COOKIE['users_login'])) {
            $Q_Page_HTMLaddress = $_SESSION['url_current'];
            $COOKIE['users_login'] = unserialize($_COOKIE['users_login']);

            if (isset($COOKIE['users_login'][$Q_Page_HTMLaddress])
            && $COOKIE['users_login'][$Q_Page_HTMLaddress]['Comp_spec'] == $_SERVER['HTTP_USER_AGENT'].$_SERVER['REMOTE_ADDR']) {
                $Q_user_long_access_stamp = $COOKIE['users_login'][$Q_Page_HTMLaddress]['Long_access_stamp'];
                $Q_UnixTime_Stamp = $COOKIE['users_login'][$Q_Page_HTMLaddress]['UnixTime_Stamp'];

            $T_page->user_objid = $Q_user_long_access_stamp;

      echo 'zapis: '.$T_page->user_objid;  // NEFUNGUJE :-(
            }

        }
        return false;
    }

Nenapada vas prosim, cim by to mohlo byt. Cookies zapisuje korektne, ale neprecte jej. Mozna je chyba v php.ini, muzu poslat extrakt. Uz jsem se s tim docela natrapil a fakt nevim. 

Dekuji, Vlada
Alphard
Profil
Zkoušel jste si vypsat $COOKIE['users_login'] na 43. řádku? Je obsah načten?
vladap
Profil
Ano zkousel. A v tom je prave problem. Pres (isset($_COOKIE['users_login'])) se dostane, ale pak to vypada, ze to nedokaze precist.
Alphard
Profil
Já myslel vypsat jako např. var_dump(), prostě podívat se, co obsahuje.
vladap
Profil
Alphard:
uz mi to funguje. Blblo mi serialize/unserialize. Zrusil jsem array a davam to do cookies polozku po polozce. Dekuji za pomoc. Vlada

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: