Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sesja i logowanie.
Forum PHP.pl > Forum > PHP
ano
Jak użyć sesji do logowania na stronę? Czy możesz mi napisać przykładowy skrypt?
kicaj
hmm... wiec ja uzywam tak:
Kod
if(poprawny nick i haslo z bazy) {

$_SESSION['user'] = 1;

session_register("nick"); // rejestruje nick

$id = $wiersz['id']; // id pobrany z bazy mysql

session_register("id"); //rejestruje id ktorym posluguje sie user na stronie przez co moze zmienic nicka

echo "Witaj $nick";

} else {

//tutaj formularz

}

a na stronie inncyh wstawiam:
Kod
if(isset($_SESSION[user])) {

echo "jestes zalogowany";

} else {

echo "zaloguj sie";

}

oczywiscie na kazdej stronie musi byc:
Kod
session_start();
kotowszczak
Przykładowy skrypt:
login.php
Kod
<?

//rozpoczecie sesji

session_start();

//gdy wystapiła próba zalogowania

if( $HTTP_POST_VARS['login'] && $HTTP_POST_VARS['pass'] ){

//sprawdzenie poprawnosci wprowadzonych danych

if( $HTTP_POST_VARS['login']=="login" && $HTTP_POST_VARS['pass']="1234"){

  $uzytkownik=$login;

  //zarejestrowanie zmiennej sesji

  session_register('uzytkownik');

  //mozna przekierowac przez naglowek

  header("Location: nastepna_strona.php?".SID);

  //lub uzyc linku

  //print("<a href="nastepna_strona.php">Możesz wejść</a>");

}

else{

  //nieprawidłowy login lub hasło

  print("Próba zalogowania się nie powiodła.");

  exit();

}

}

else{

//gdy nie było próby logowania wyswietl formularz

?>

<h2 align=center>Logowanie</h2>

<form method="post" action="login.php">

<table align=center>

<tr>

  <td>Login: </td>

  <td><input name="login" type="text"></td>

</tr>

<tr>

  <td>Hasło: </td>

  <td><input name="pass" type="password"></td>

</tr>

<tr>

  <td align=center colspan=2><input type="submit" value="Zaloguj"></td>

</tr>

</table>

</form>

<?

}



?>

każda następna strona powinna sie zaczynac
Kod
session_start();

if(session_is_registered('uzytkownik')){

//tresc dla zalogowanego uzytkownika

...

}

else{

print("Uzytkownik nie zalogwany. dostęp zabroniony");

exit();

}


Powinno zadziałać :wink:
Seth
logon.php
Kod
session_start();



if( isset( $_SESSION['login']) ){

  header( 'Location: index.php' );

  exit();

}



if( isset( $_POST['login'] ) && isset( $_POST['pass'] ) ){

  ...

  pobieranie danych z bazy

  $result['pass'] - zmienna z haslem z bazy danych zakodowana md5()

  $result['email'] - email pobrany z bazy danych

  $result['last_ip'] - wiadomo co

  $result['last_logon']- wiadomo co

  ...



  if( isset( $result['pass'] ) ){

    similar_text( md5( $_POST['pass'] ), $result['pass'], &$simres);



    if( $simres == 100 ){ // Sprawdzanie poprawnosci hasla

      $_SESSION['login']      = $_POST['login'];

      $_SESSION['email']      = $result['email'];

      $_SESSION['last_ip']    = $result['last_ip'];

      $_SESSION['last_logon'] = $result['last_logon'];



      header( 'Location: index.php?'.SID ); ' przenosi do strony gdzie ma byc przekazana sesja po zalogowaniu

      exit();

    }

  }



  session_destroy();

  header( 'Location: logon.php?err=1' ); 'jezeli login lub haslo nie zostalo przeslane do skryptu wypisuje blad

  exit();

}else{

  if( isset($_POST['err'] ){

    echo "Jakis komunikat o bledzie";

}

  ...

  miejsce na formularz

  ...

}



index.php
Kod
session_start();

if( isset( $_SESSION['login']) ){

...

jakis kod strony

...

}else{

  session_destroy();

  header( 'Location: logon.php' ); 'jezeli nie ma danych sesji to idziemy do formularza

}
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.