Logowanie do panelu admina

Odpowiedz Nowy wątek
2011-08-18 23:13
0

Witam,

takich tematów jak i artykułów w sieci jest całe mnóstwo, jednak ja napisałem sobie swój, posiłkując się informacjami na temat bezpieczeństwa z wikipedii (http://pl.wikibooks.org/wiki/PHP/Sesje). Zatem chciałbym Was prosić o sprawdzenie czy ten skrypt do logowania dla admina jest, nie tyle czy poprawnie napisany (w sensie czy działający - bo działa), ale czy sensownie napisany, bo np. linijka gdzie jest:

    if( isset( $_GET['out'] ) ) {
        session_destroy();
        session_start();
    }

trochę chyba głupio wygląda, ale możliwe, że to dobre rozwiązanie, dlatego chcę Was, bardziej doświadczonych, zapytać. Cały kod:

<?php
    session_start();
 
    if( isset( $_GET['out'] ) ) {
        session_destroy();
        session_start();
    }
 
    if( !isset( $_SESSION['user'] ) ) {
        session_regenerate_id();
        $_SESSION['user'] = 0;
        $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
    } else {
        if( isset( $_POST['done'] ) ) {
            $login = $_POST['login'];
            $password = md5( $_POST['password'] );
            if( $login == "admin" && $password == "d41c6925bd8ff4b4c41d5b0ffd9a8253" )
                $_SESSION['user'] = 1;
        }
    }
 
    if( $_SESSION['ip'] != $_SERVER['REMOTE_ADDR'] ) {
        die( 'Proba przejecia sesji!' );      
    }
 
    echo '<html><head><title>Welcome</title>
                <link rel="stylesheet" type="text/css" href="astyles.css"></head>
                <body id="panel">';
 
    if( $_SESSION['user'] == 1 ) {
        echo 'Logged as admin';
        echo '<br><a href="admin.php?out=">log out</a>';
        // tutaj jakis include...
    } else {
        echo '<br><form action="admin.php" method="post">
              <span class="txt">Login:</span><br><input class="input" type="text" name="login">
              <br><span class="txt">Password:</span><br><input class="input" type="password" name="password">
              <input type="hidden" name="done">
              <br><br><input class="input" type="submit" value="Log in">';
    }
 
    echo '</form></body></html>';
?>

Pozdrawiam i dziękuję za Wasz poświęcony czas.

edytowany 1x, ostatnio: nwnuinr, 2011-08-18 23:14

Pozostało 580 znaków

2011-08-19 08:16
0

gdy czyścisz sesje możesz dodać jeszcze takie wpisy:

$_SESSION = array();
$_SESSION = "";

widziałem to jak ktoś stosuje i twierdził, że warto to dodać prócz samego session_destroy

Pozostało 580 znaków

2011-08-27 21:49
0

Racja. Nawet kiedyś mój kolega jak pisał sesję, to dodał powalający na kolana komentarz ^^

public function logout()
{
     session_destroy();
     $_SESSION = null; // na wszelki wypadek bo cuda się dzieją
}

Możesz jeszcze za pomocą setcookie(); ustawić minusowy czas, życia ciasteczka sesyjnego, żeby je usunąć. I warto zaraz po zniszczeniu sesji, w tej samej metodzie/funkcji czyścić w bazie danych wpisy, żeby syf się nie robił.

Pozostało 580 znaków

2011-08-27 23:47
0

Bardzo możliwe że cuda się dzieją jak się nie umie przeczytać dokumentacji. Cytuję:

session_destroy() niszczy wszystkie dane skojarzone z bieżącą sesją. Nie usuwa żadnych globalnych zmiennych związanych z sesją. Nie usuwa też ciasteczka sesyjnego.


Women were the reason I became a monk - and, ah, the reason I switched back...

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0