Autor Zpráva
PHP_Nemaster
Profil
Dobrý den,
minule jsem se ptal na něco podobného, ale většině lidí se nechtělo číst dlouhý kód a tak jsem žádnou konkrétnější odpověd' nedostal, proto jsem udělal tento kratší, ale se stejným principem. Problém je v tom, že i když nastavím SESSION na hodnotu 1, na stránce, kde má být, se však pořád jeví jako 0, nevím, jak ji udělat nastavenou hned. Ale když tu stránku obnovím, SESSION se aktivuje - podle knihy, kterou čtu, však obnovení není potřeba. Nevíte, co s tím?
____________________________________________________________________________

Toto je stránka pro přihlášení, zde nastavím hodnotu SESSION na 1, pokud je heslo 'pass'.

<?php
session_start();
$_SESSION['logged'] = 0;

if ( $_POST['password'] == "pass" ) {
$_SESSION['logged'] = 1; 
header ( "Refresh: 1; URL=session3.php " );
echo "Redirecting..."; }
?>
<pre>
<form action="login3.php" method="post">
Password: <input type="password" name="password">
<input type="submit" name="submit" value="Submit">
</form>
</pre>



Toto je stránka, kde se kontroluje, zda se rovná SESSION['logged'] hodnotě 1. Je to pouze includovaný soubor, ale přesto to sem pro představu raději dám.

<?php 
include "usrauth.php";
?>
<html>
</html>


A toto je ten includovaný soubor, který kontroluje, zda se SESSION['logged'] rovná 1. Když nic neudělám, do jedné vteřiny mě to přesměruje na login3.php, takže SESSION asi nevidí, ale jakmile zmáčknu F5 ( refresh aneb obnovit ), jako by tu SESSION uviděl a přesměrování se zastaví...

<?php
if ( isset ( $_SESSION['logged'] ) && $_SESSION['logged'] = 1 ) {
} else {
$redirect = $_SERVER['PHP_SELF'];
header ( "Refresh: 1; URL=login3.php?redirect=$redirect " );
echo "You'll be redirected to login page.";
}
?>

________________________________________________________

Zkusit si to můžete na www.amaga.czweb.org/login3.php, heslo je pass. Když vám to bude psát na další stránce psát You'll be redirected to login page, zkuste zmáčknout F5 a zastaví se to ( v opačném případě vás to vrátí zase na tu přihlašovací stránku ), to znamená, že se SESSION aktivovala nebo jak? Vážně si s tím nevím rady.

Předem děkuji za odpověd'.
r0me0
Profil
if ( isset ( $_SESSION['logged'] ) && $_SESSION['logged'] = 1 ) {


tady musí být ==, takže:

if ( isset ( $_SESSION['logged'] ) && $_SESSION['logged'] == 1 ) {
fajzen
Profil
To, čo písal r0me0 je síce pravda, ale asi to nebude hlavný problém, pretože v tom tvare ako to máš napísané, je podmienka platná vždy, takže skôr by sa to chovalo presne naopak... Skôr to vidím tak, že predtým, než kontroluješ či je session nastavená, nemáš zavolané session_start()
PHP_Nemaster
Profil
Fajzen: Mám to dát i do usrauth.php ? Dal jsem to do do všech stránek úplně na začátek, ale pořád to samý. Opravdu se SESSION předává takto, nebo se dá udělat nějak přes $_POST... asi ne, co?
fajzen
Profil
Niekde je tam asi nejaká logická chyba, ale z tohto ju nevidím... Ak chceš, pošli mi zdrojáky na fajzen@azet.sk, pozriem sa na to

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: