Vyřešeno — vlákno je tím uzavřené a další odpovědi do něj nepřibývají.

Otázka

EŠ336487
EŠ336487 Zákazník Webhosting Vyřešeno

Problém se session

Dobrý den,

mám klasický login kód pro přihlášení do administrace.

[apcode language=“php“]

if(empty($username_err) && empty($password_err)){
        $sql = "SELECT userid, username, password FROM users WHERE username = ?";
                 if($stmt = mysqli_prepare($db, $sql)){
            mysqli_stmt_bind_param($stmt, "s", $param_username);
             $param_username = $username;
                         if(mysqli_stmt_execute($stmt)){
                mysqli_stmt_store_result($stmt);
                                 if(mysqli_stmt_num_rows($stmt) == 1){                    
                    mysqli_stmt_bind_result($stmt, $userid, $username, $hashed_password);
                    if(mysqli_stmt_fetch($stmt)){
                            if(password_verify($password, $hashed_password)){
                                session_start();
                                $_SESSION["loggedin"] = true;
                                $_SESSION["userid"] = $userid;
                                $_SESSION["username"] = $username;                       
                                echo '<meta http-equiv="refresh" content="0; url=/admin/menu">';
                            } else{
                                $login_err = "Špatné jméno nebo heslo.";
                            }
                    }
                } else{
                    $login_err = "Špatné jméno nebo heslo.";
                }
            } else{
                echo "Oops! Někde se stala chyba. Zkuste to prosím později!";
            }
            mysqli_stmt_close($stmt);
        }
    }

[/apcode]

V tuto chvíli je tam meta na přesměrování do administračního menu po úspěšném přihlášení. To všechno funguje, ale webová stránka nedrží session data. Chvilku to fungovalo po změně nastavení PHP, ale pak to přestalo z ničeho nic fungovat. Na localhostu i na jiných hostingách vše funguje, ale na Wedosu jako spoustu jiných věcí bohužel ne.

Dokážete mi, prosím, říct, kde je chyba?

Na každé další stránce, volám na začátku kódu session_start(); Na každé takové stránce je kontrola, zda se hodnota uložená po loginu v $_SESSION[„loggedin“] rovná TRUE, pokud ne, tak uživatele vrátí zpět na login page.

0

4 odpovědí

MB313456
MB313456 Podpora

Dobrý den,

konfiguraci hostingu máte po mnoha změnách víceméně v základním nastavení. Máte na FTP v kořenovém adresáři složku session?

O uživateli: VEDOS Specialista na Znalostní bázi Web: kb.vedos.cz
1
EŠ336487
EŠ336487 Zákazník

Dobrý den, ano, složka session se nachází v kořenovém adresáři. Po pokusu o přihlášení, se session soubor dokonce i vytvoří, ale už do něj nevloží žádné data. Pokud zruším přesměrování a zavolám si proměnou, ukáže mi, že jsou v ní data uložená, ale ve chvíli, kdy přejdu na jinou stránku jsou data pryč.

0
MB313456
MB313456 Podpora

K problému se mi nepodařilo nic bližšího dohledat, jediný podobný dotaz jsem našel zde, ale řešení tohoto problému máte na hostingu už nastavené. Možná Vám ale pomohou postupy, kterými se kolegové snažili daný problém v konverzaci diagnostikovat.

O uživateli: VEDOS Specialista na Znalostní bázi Web: kb.vedos.cz
0
EŠ336487
EŠ336487 Zákazník Přijatá odpověď

To jsem četl samozřejmě jako první, než jsem se rozhodl založit nové vlákno 🙂 No, ale už jsem to vyřešil. Nevím proč, ale zde nefungovalo volaní session_start až na začátku login kódu. Session_start jsem musel zavolat hned na začátku login page.

Děkuji

0

Máte stejný problém?

Tohle vlákno je uzavřené a odpovídat už v něm nejde. Když vám odpověď nestačí nebo se vás týká něco jiného, položte vlastní dotaz — odkaz na tohle vlákno do něj klidně vložte.