Autor Zpráva
Schimpy
Profil *
Dobrý den. Mám problém s loginem.
Stránka s přihlašováním (admin.php). Vše chodí.
<?php
if(isset($_POST['odeslano']))
  {
    $login = osetri(trim($_POST['login']));
    $heslo = osetri(trim($_POST['heslo']));
    if($login != "" and $heslo != "")
      { 
        $dotaz = @mysql_query("SELECT COUNT(*) FROM pristup WHERE nick = '$login' AND heslo = md5('$heslo')") or die(mysql_error());
        if(mysql_result($dotaz, 0)) 
          {
            $_SESSION['nick'] = $login;
            $_SESSION['prihlasen'] = 1;
            $_SESSION['cas'] = time()+1800;
            echo "<a href='admin/index.php'>Pokračujte ...</a>";
          }
        else
          {
            echo $bad_login;
          }
        }
    else
      { 
        echo $empty_login;
      }
  }
else
  {
  ?>
  <form method="post" action="admin.php">
  <input type="hidden" name="odeslano" vlaue="">
  <div class="pole"><b>Login: </b><input type="text" name="login" size="10"></div>
  <div class="pole"><b>Heslo: </b><input type="password" name="heslo" size="10"></div>
  <div class="tlacitko"><input type="submit" name="odeslat" value="OK">
  </form>
?>


Potom se dostanu na stránku administrace(index.php). Do každé podstránky includuji soubor checklogin.php.

session_start();
if ($_SESSION['prihlasen'] != 1) 
  {
    Header('Location: http://'. $_SERVER['HTTP_HOST'] . '/admin.php');
    exit;
  }
elseif ($_SESSION['prihlasen'] = 1 && ($_SESSION['cas'] < time()))
  {
    session_destroy;
    Header('Location: http://'. $_SERVER['HTTP_HOST'] . '/admin.php');
    exit;
  }
else
  {
    $_SESSION['cas'] = time+1800;
  }

Ale pokud opustím index.php a chci jít např. na clanky.php, kde je includovany soubor checklogin.php, hodí mě to na přihlašovací formulář.
petr 6
Profil
7. radek druheho kodu:
$_SESSION['prihlasen'] = 1

Toto vrati vzdy true, nebot jde o prirazeni. Pro porovnani s jednickou pouzij nasledujici:
$_SESSION['prihlasen'] == 1
Schimpy
Profil *
nemělo by teda být i 2. řádek takto:
$_SESSION['prihlasen'] !== 1

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: