Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: php + mysql logowanie (sesje)
Forum PHP.pl > Forum > PHP
hhg
przerabiam skrypt do logowania na wlasne potrzeby, mam problem z sesjami o ktorych wiem nadal niezadużo

plik do logowania wygląda tak:

  1. <?php
  2. if (isset($_POST['submit'])) {
  3. require_once ('../mysql_connect.php');
  4. function escape_data ($data) {
  5. global $dbc;
  6. if (ini_get('magic_quotes_gpc')) {
  7. $data = stripslashes($data);
  8. }
  9. return mysql_real_escape_string($data, $dbc);
  10. }
  11. $message = NULL;
  12. if (empty($_POST['username'])) {
  13. $u = FALSE;
  14. $message .= '<p>Zapomniałeś wprowadzić nazwę użytkownika!</p>';
  15. } else {
  16. $u = escape_data($_POST['username']);
  17. }
  18.  
  19. if (empty($_POST['password'])) {
  20. $p = FALSE;
  21. $message .= '<p>Zapomniałeś wprowadzić hasło!</p>';
  22. } else {
  23.  $p = escape_data($_POST['password']);
  24. }
  25.  
  26. if ($u && $p) { // Jeżeli wszystko jest OK.
  27. $query = "SELECT user_id, first_name FROM users WHERE username='$u' AND password='$p'";
  28. $result = @mysql_query ($query);
  29. $row = mysql_fetch_array ($result, MYSQL_NUM); 
  30. if ($row) { 
  31.  
  32. // Rozpocznij sesję, zarejestruj wartości i przekieruj użytkownika.
  33. session_name ('IDTwojejSesji');
  34. ini_set ('session.use_cookies', 0);
  35. $_SESSION['first_name'] = $row[1];
  36. $_SESSION['user_id'] = $row[0];
  37. header ("Location: http://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "/zalogowany.php?" . SID);
  38. exit();
  39.  
  40. } else {
  41. $message = '<p>Wprowadzona przez Ciebie nazwa użytkownika i hasło nie zgadzają się z naszymi
     danymi.</p>'
    ; 
  42. }
  43. } else {
  44. $message .= '<p>Spróbuj jeszcze raz.</p>';
  45. }
  46. }
  47. $page_title = 'Logowanie';
  48. include ('szablony/naglowek.inc');
  49. if (isset($message)) {
  50. echo '<font color="red">', $message, '</font>';
  51. }
  52. ?>
  53. <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  54. <fieldset><legend>WprowadĽ wymagane informacje do poniższego formularza:</legend>
  55. <p><b>Nazwa użytkownika:</b> <input type="text" name="username" size="10" maxlength="20" value="
  56. <?php if (isset($_POST['username'])) echo $_POST['username']; ?>" /></p>
  57. <p><b>Hasło:</b> <input type="password" name="password" size="20" maxlength="20" /></p>
  58. <div align="center"><input type="submit" name="submit" value="Zaloguj się" /></div>
  59. </form><!-- Koniec formularza -->
  60. <?php
  61. include ('szablony/stopka.inc');
  62. ?>


załóżmy że login i hasło są prawidłowe i odwiedzajacy zgodnie ze skryptem jest przekierowany do pliku zalogowany.php
czy wtedy w pliku zalogowany i w każdym innym (oprocz index.php) stan zalogowania (mozliwosc poruszania sie po innych poufnych stronach) moge sprawdzic kodem php wystepujacym na samej gorze strony:

  1. <?php
  2. session_name ('IDTwojejSesji');
  3. session_start(); // Rozpocznij sesję.
  4.  
  5. // Jeżeli nie ma żadnej sesji, przekieruj użytkownika.
  6. if (!isset($_SESSION['first_name'])) {
  7. header ("Location: http://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "/index.php");
  8. exit(); // Opuść skrypt.
  9. }
  10. ?>

?
TomASS
Tak jak mówisz jest ok:

  1. <?php
  2. if(isset($_SESSION['user_id'])){
  3. echo 'Zalogowany';
  4. }
  5. else{
  6. echo 'Niezalogowany';
  7. }
  8. ?>
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.