Autor Zpráva
kesaj
Profil
Dobrý deň prajem.

Chcem sa spýtať, ako zabezpečiť, aby sa mi niekto nedostal na podstránku, iba keď je prihlásený?

Mám prihlásenie pomocou jednoduchéhé php+mysql.

index.php

<title>Prihlásenie</title>

<body>

  <form action="login.php" method="post">     
    <table>
    <legend>Prihlásenie zboru</legend>
      <tr>
        <td>Číslo zboru: </td>
        <td><input type="number" name="nick" value="" size="25" tabindex="1" /></td>
      </tr>
      <tr>
        <td>Heslo: </td>
        <td><input type="password" name="heslo" value="" size="25" tabindex="2" /></td>
      </tr>
      <tr>
        <td colspan="2"><input type="submit" name="submit" value="Prihlásiť sa" /></td>
      </tr>
      
    </table>
  </form>

</body>

login.php

<?php
include "mysql.php";/* pripojenie k databáze */
$login = mysql_real_escape_string($_POST["nick"]);/* cislo zboru zadané vo formulárí */
$heslo = mysql_real_escape_string($_POST["heslo"]);/* heslo zadané vo formulári */
$md5heslo = md5($heslo);/* Pomocou funkcie md5() heslo zahashujeme */
/* — DOTAZ K MYSQL PRE OVERENIE PRIHLASOVACICH DAT — */
$dotaz = mysql_query("select * from zbory where cislo_zboru = '$login' and heslo = '$heslo'");
$overeni = mysql_num_rows($dotaz);
$row = mysql_fetch_array($dotaz);
if($overeni == 1) {
    session_start();
    $_SESSION['login'] = stripslashes($login);
    $_SESSION['id'] = $row["id"];
    header("Location: stiahni.php");
    die();
} else {
    echo"Zadali ste nespravne cislo zboru alebo heslo!";
    
}
?>

stiahni.php

<meta http-equiv="refresh" content="2;url=subory/audio.rar">
<p style="text-align:center;font-size:20px;color:red;">Začína sa sťahovanie nahrávky...</p>

teraz sa bezproblémov dostanem na http://www.xxx.sk/stiahni.php

keď však skúšam cez session, tak mi vypíše:

Warning: session_start(): Cannot send session cache limiter - headers already sent
Jcas
Profil *
Jsem laik, takže nevím, jestli je to zcela správně. Ale v každém souboru, kam chceš přístup jen po přihlášení musíš dát jako první session_start() a pak nějaké ověření.
Já mám v každém takovém souboru na začátku toto:
session_start();

//-----KONTROLA PŘIHLÁŠENÍ-----
if(!isset($_SESSION['user'])) {        // - není přihlášen
       session_unset();
       session_destroy();                        // ukonči session
    header("Location: ./../login.php");    // přesměruj na přihlášení
    }
    elseif($_SESSION["access_time"] < strtotime("-30 minutes")) {    //vypršel čas
            header("Location: ./../login.php");
            }
kesaj
Profil
vdaka za radu.

uz som to vyriesil, mal som problem s medzerou (BOM)

spravil som to takto:

<?php

session_start();
?>

<?php
  if($_SESSION['id']!=""){
    echo'<strong>Si prihlaseny ako </strong> <a href="logout.php">Odhlasit</a> </br> <a href="subory/audio.rar">Stiahni si subor s nahravkou</a> ';
    
  } else {
    echo'Tato stranka je pristupna iba prihlasenym uzivatelom! <a href="index.php">Prihlasit sa mozete tu</a>';
    
  }
   
?>

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:

0