(PHP) Kullanıcı bir yönetici sayfasında bir şeyler yapmaya çalışıyoruz sonra RE-GİRİŞ zorunda ediliyor

3 Cevap php

Ben bir giriş gerektirir PHP, bir müşteri için bir admin paneli oluşturduk. İşte yapman gereken kullanıcı yönetici sayfanın üstündeki kodu:

admin.php

<?php
session_start();
require("_lib/session_functions.php");
require("_lib/db.php");
db_connect();


//if the user has not logged in
if(!isLoggedIn())
{
    header('Location: login_form.php');
    die();
}
?>

Açıkçası, eğer deyim onları yakalar ve burada çıkan giriş sayfasındaki kod oturum zorlayan budur:

login_form.php

<form name="login" action="login.php" method="post">
    Username: <input type="text" name="username" />
    Password: <input type="password" name="password" />
    <input type="submit" value="Login" />
</form>

Bu denetleyici sayfada için hangi mesajlar bilgiler:

login.php

<?php
session_start(); //must call session_start before using any $_SESSION variables
include '_lib/session_functions.php';

$username = $_POST['username'];
$password = $_POST['password'];

include '_lib/db.php'; 
db_connect(); // Connect to the DB

$username = mysql_real_escape_string($username);

$query = "<grab username, hashed password from DB>;";
$result = mysql_query($query);

if(mysql_num_rows($result) < 1) //no such user exists
{
    header('Location: login_form.php?login=fail');
    die();
}

$userData = mysql_fetch_array($result, MYSQL_ASSOC);
db_disconnect();
$hash = hash('<myHashingFunction>', $password . $userData['salt']);

if($hash != $userData['password']) //incorrect password
{
    header('Location: login_form.php?login=fail');
    die();
}
else
{
    validateUser(); //sets the session data for this user
}

header('Location: admin.php');

?>

ve giriş fonksiyonları sağlar oturum işlevleri sayfası bu içerir:

session_functions.php

<?php
function validateUser()
{
    session_regenerate_id (); //this is a security measure
    $_SESSION['valid'] = 1;
    $_SESSION['userid'] = $username;
}

function isLoggedIn()
{
    if($_SESSION['valid'])
        return true;

    return false;
}

function logout()
{
    $_SESSION = array(); //destroy all of the session variables
    if (ini_get("session.use_cookies")) {
        $params = session_get_cookie_params();
        setcookie(session_name(), '', time() - 42000,
            $params["path"], $params["domain"],
            $params["secure"], $params["httponly"]
        );
    }
    session_destroy();
}
?>

Ben bir online öğretici sessions_functions.php kod yakaladı, bu nedenle şüpheli olabilir.

Admin paneline kullanıcı günlükleri, bir şeyler yapmaya çalışıyor, neden Herhangi bir fikir, yeniden giriş zorunda kalır ve SONRA admin panelinde normal gibi şeyler yapmak için izin verilir?

3 Cevap

istemci sunucu geçiş eğer tarayıcı çerezlerini temizlemeyi unutmayın :)

Yönlendirmeler ile session_regenerate_id kullanırken dikkatli olun. Genel olarak. Yapmak değil.

Bana mı öyle geliyor, ya da isLoggedIn işlevi gerçekten güvensizdir? Tüm yapmanız gereken bir oturum değişkeni varlığı için onay, hangi herkes rastgele bir değer ile sahte olabilir. Siz bir veritabanı karşı gerçek oturum ID / karma kontrol etmek gerekir / valide kullanıcılar giriş.