[PHP] Logowanie na Sesjach

0

Witam mam pewien problem:

Moim celem jest zrobienie systemu logowania dla użytkowników.
Skrypt bazuje na sesjach, i teraz.

Załóżmy że moi użytkownicy mają osobne profile na adresach:

www.adres.pl/user1/ - Użytkownik 1
oraz
www.adres.pl/user2/ - Użytkownik 2

I teraz plik index.php dla użytkownika 1 wygląda następująco:

<?php
session_start();
if (isset($_POST['nick']) && $_POST['nick'] == 'user1') {
    if (isset($_POST['X09261x']) && $_POST['haslo'] == 'user1') {
        $_SESSION['login'] = 1;
        }  
}
if (!isset($_SESSION['login'])) {
                echo ("<center><form action='' method='post'>");
                echo ("Nazwa: <input type=\"text\" class=\"input\" name=\"nick\" size=\"25\" /><br />");
                echo ("Hasło: &nbsp;&nbsp;<input type=\"password\" name=\"haslo\" class=\"input\" size=\"25\" /><br /><br />");
                echo ("<input type=\"submit\" value=\"Zaloguj Mnie !\" name=\"logme\" class=\"submit\" />");
                echo ("</form></center>");
                } else {

                    echo ("Tajne danie");

                }

?>

Plik index.php dla Użytkownika 2 wygląda podobnie, tylko że są zmienione dane logowania.

I teraz mój problem.

Jeżeli ktoś się zaloguje na user1 i wejdzie w adres usera2 ma dostęp do jego strony i analogicznie w drugą stronę.
Jak temu zapobiec? rozumiem, że jest to spowodowane PHPSESID który jest przypisywane tylko raz.

0

tam jest błąd z POSTEM złą nazwę dałem, ale to nie ważne nie o to chodzi.

0

Prefiksuj wszystko.

define('PREFIX', "costam_");

session_start();
if (isset($_POST['nick']) && $_POST['nick'] == 'user1') {
    if (isset($_POST['X09261x']) && $_POST['haslo'] == 'user1') {
        $_SESSION[PREFIX . 'login'] = 1;
        } 
}
if (!isset($_SESSION[PREFIX . 'login'])) {
                echo ("<center><form action='' method='post'>");
                echo ("Nazwa: <input type=\"text\" class=\"input\" name=\"nick\" size=\"25\" /><br />");
                echo ("Hasło: &nbsp;&nbsp;<input type=\"password\" name=\"haslo\" class=\"input\" size=\"25\" /><br /><br />");
                echo ("<input type=\"submit\" value=\"Zaloguj Mnie !\" name=\"logme\" class=\"submit\" />");
                echo ("</form></center>");
                } else {

                    echo ("Tajne danie");

                }

I używaj innego prefiksu dla każdej strefy. W ten sposób na współdzielonej sesji unikniesz konfliktu nazw zmiennych.

Przy okazji, imo taki zapis:

echo ("<input type=\"submit\" value=\"Zaloguj Mnie !\" name=\"logme\" class=\"submit\" />");

Mija się z celem, więcej sie tych backslashów nastukasz niż to wszystko warte.

echo('<input type="submit" value="Zaloguj mnie!" name="logme" class="submit" />');

Z użyciem apostrofów ;-)

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