ugrás a tartalomhoz

Kilépés után azonosítás nélkül enged be újra a rendszer

cordoba · 2006. Május. 23. (K), 17.36
Sziasztok!

Van egy beléptetőrendszerem, és van egy kis hibája. Ha az user beírja az adatát akkor elviszi őt az oldalára, mondjuk http://sanyika.hu/tied.php -ra. Viszont ha kilép és beírja a böngészőbe "http://sanyika.hu/tied.php" akkor belépés nélkül is be tud menni a saját oldalára sajna :(
Ezt szeretném valahogy kiküszöbölni a ti segítségetekkel
Köszi előre is
 
1

session

inti · 2006. Május. 23. (K), 19.56
Mikor user megadja az adatait, session_start(), és csinálj $_SESSION változót, aminek a az értéke true. A tied.php-ban, meg az összes belső oldalban legyen benne ez a rész (ezt célszerű egy globális fejléccel megoldani, require("header.php");), ami megvizsgálja, hogy a létrehozott session változó értéke mi, ha true, akkor megjelenik az oldal, ha false, akkor visszadobja a loginra.

erre egy egyszerű kis kód, ez kerüljön be minden privát oldal elejébe:
header.php

<?php
session_start();
// teszteljük sikerült-e a bejelentkezés
if ($pass && $user) if (testlogin($pass,$user)) $_SESSION['IN'] = true;
// teszteljük benn van-e a user
if (!$_SESSION['IN']) 
{
  session_destroy();
  header("location: login.php");
  exit;
  // ha nincs, akkor irány vissza a login.php
  // ezzel lekezeltük a hibás belépést is
}
?>
A testlogin() metódust nyilván majd megírod, hogy tesztelje a user/pass-t. Fontos, hogy logout esetén, azon az oldalon, ahova a logout visz legyen egy session_destroy();, így nem tud visszalépni más, csak passworddel.
2

ajaj

cordoba · 2006. Május. 23. (K), 20.50
Hello!
Segítenél, hogy mit hova irjak?Ez a belépés oldalam kódja, és nem tudom a sessional hogy egészítsem ki

<?
$localhost = "localhost";
$db_user = "";
$pwd = "";
$database = "";
mysql_pconnect($localhost,$db_user,$pwd);
mysql_select_db($database);

if ($_POST[user] <> "" and $_POST[pass] <> "") {
$incpage = open_page($_POST[user], $_POST[pass]);
include "$incpage";
}

function open_page($username, $password) {
$inc = "";
$query = "SELECT page FROM access WHERE username='$username' and password='$password'";
$result = mysql_query($query);
if (mysql_num_rows($result) > 0) {
$row = mysql_fetch_array($result);
$inc = $row[page];
}
else {
$inc = "hibas_username_vagy_password.php";
}
return $inc;
}
?>
3

header.php

inti · 2006. Május. 24. (Sze), 05.16

<?php
session_start();

$localhost = "localhost";
$db_user = "";
$pwd = "";
$database = "";
mysql_pconnect($localhost,$db_user,$pwd);
mysql_select_db($database);

function open_page($username, $password)
{
  $query = "SELECT page FROM access WHERE username='$username' and password='$password'";
  $result = mysql_query($query);
  if (mysql_num_rows($result) > 0)
  {
    $row = mysql_fetch_array($result);
    return $row[page];
  }
  else return false;
}

// teszteljük sikerült-e a bejelentkezés
if ($_POST[user] && $_POST[pass])
{ 
  $inc_page = open_page($_POST[user], $_POST[pass]);
  if ($inc_page) $_SESSION['IN'] = true;
  else
  {
    header("Location: hibas_username_vagy_password.php");
    exit;
    // ezzel lekezeltük a hibás belépést
  }
}

// teszteljük benn van-e a user
if (!$_SESSION['IN']) 
{
  session_destroy();
  header("location: lejart_az_idokorlat.php");
  exit;
  // ha nincs, akkor irány vissza a login.php
}

include($inc_page);
?>
4

Köszike nagyon rendes vagy

cordoba · 2006. Május. 24. (Sze), 08.44
Hello!
amit most küldtél kódott azt rakjam be abba az oldalba ahol be tudják irni a felhasználók az adatait. ez elsőt meg minden oldalba ahova ugratja őket? csak módositanin kell ezt is?

<?php
session_start();
// teszteljük sikerült-e a bejelentkezés
if ($pass && $user) if (testlogin($pass,$user)) $_SESSION['IN'] = true;
// teszteljük benn van-e a user
if (!$_SESSION['IN'])
{
session_destroy();
header("location: login.php");
exit;
// ha nincs, akkor irány vissza a login.php
// ezzel lekezeltük a hibás belépést is
}
?>
5

nem nem

inti · 2006. Május. 24. (Sze), 19.04
Amit küldtem azt a belső oldalakba kell csak tenni.
6

ajaj

cordoba · 2006. Május. 25. (Cs), 20.20
Beillesztettem a kódot hibát nem jelzett , de még mindig be enged ugyan úgy. ahol van a két textura meg a belépés ott nem kell változtatni?
7

gondold végig mit csinálsz

Anonymous · 2006. Május. 26. (P), 10.33
próbáld egyszerűsíteni. Vannak jelszóval védett oldalaid. Ezeknek az oldalaknak a legelejére kell egy session ellenőrzés. ha van session megnyitja, ha nincs akkor elirányítod, vagy die() és hibaüzenet vagy amit akarsz. Ezt a sessiont(sessionokat) a beléptetőoldalon hozod létre. Innen továbbmész és mivel létezik a session az oldal nem hal ki, nem irányít el hanem lefut normálisan. Csinálsz 1 jó kis kiléptető folyamatot. Mondjuk logout.php ami eltakarítja az összes sessiont. ha rákattint a kilépésre akkor jön a logout.php ott session_unset meg session_destroy meg elirányítod ahová akarod. Innenről kezdve hogy nincs session nem szabad beengednie sehová hiszen a védett oldal ellenőrzéssel kezd. Pláne nem úgy hogy újra beírod a címét. Nekem az opera böngészővel akadnak olyan gondjaim hogy a vissza gombra kattintva hiába nincs session visszahozza az oldalt. Na mind1 ezek alapján be kell tudni azonosítanod hogy mit hova tegyél be.