Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z sesja
Forum PHP.pl > Forum > Przedszkole
snipe
Robie pewien system z logowaniem.

Plik logowania:

  1. <?php
  2. require_once('modules/database_class.php');
  3. $db = new db;
  4. $db->dbconnect();
  5. require_once('modules/user_class.php');
  6. $user = new user;
  7. require_once('modules/comment_class.php');
  8. $komentarz = new comment;
  9.  
  10.                 if(isset($_SESSION['user']))
  11.                 {
  12.                    echo '<center>Zalogowano jako: <b>'.$_SESSION['user'].'</b></center>';
  13.                     echo '<center><b><a href=?module=logout>Wyloguj</a></b></center>';
  14.                 } else
  15.                 {
  16.                     if(isset($_POST[user]) && isset($_POST[password]))
  17.                     {
  18.                         $user->zaloguj_usera($_POST[user],$_POST[password]);
  19.                         header("Location: index.php");
  20.                     } else
  21.                     {
  22.                         $user->loguj_form();
  23.                     }
  24.  
  25.                 }
  26. ?>


user_module.php

  1. <?php
  2. switch($_GET[action])
  3. {
  4. case 'view':
  5.     $user->pokaz_profil($_GET[id]);
  6. break;
  7. }
  8. ?>


user_class.php

  1. <?php
  2. class user
  3. {
  4.         function loguj_form()
  5.     {
  6.         echo '<center><form name=formularz method=post action=index.php style="border: 0px solid; width=50%; text-align=left;">
  7.         Login:<br /><input type=text name=user><br />
  8.         Password:<br /><input type=password name=password><br />
  9.         <input type=submit value=Dodaj></center>
  10.         Nie masz konta?<br /><a href=#>Zaloz!</a>
  11.         </form><br />';
  12.     }
  13.  
  14.     function zaloguj_usera($user_name, $user_password)
  15.     {
  16.         $result = mysql_query("SELECT * from users WHERE user_name='$user_name' && user_password='$user_password' && active='y' && banned='n'");
  17.         if(!$result)
  18.         {
  19.             echo 'Nie mozna bylo wykonac zapytania!';
  20.             echo mysql_error();
  21.         } else
  22.         {
  23.             $ile = mysql_num_rows($result);
  24.             if($ile=='1')
  25.             {
  26.                 session_start();
  27.                 $_SESSION['user']=$user_name;
  28.  
  29.             } else
  30.             {
  31.                 echo '<center><b>Niepoprawne dane!</b><br />
  32.                       <form name=formularz method=post action=index.php style="border: 0px solid; width=50%; text-align=left;">
  33.                       Login:<br /><input type=text name=user><br />
  34.                       Password:<br /><input type=password name=password><br />
  35.                       <input type=submit value=Dodaj></center>
  36.                       Nie masz konta?<br /><a href=#>Zaloz!</a>
  37.                       </form><br />';
  38.  
  39.             }
  40.         }
  41.     }
  42.  
  43.     function pokaz_profil($id)
  44.     {
  45.         $result = mysql_query("SELECT * from users WHERE id_user=$id");
  46.         while($wynik=mysql_fetch_array($result))
  47.         {
  48.             echo 'Uzytkownik: '.$wynik['user_name'].'<br />E-mail: '.$wynik['user_email'].'<br />Ranga uzytkownika: '.$wynik['range'].'<br />'.$wynik['www'];
  49.         }
  50.     }
  51. }
  52. ?>


Po zalogowaniu i kliknieciu na stronie glownej w linku kierujacym do profilu uzytkownika oraz pozniejszy powrot na strone glowna w tym miejscu:

  1. <?php
  2. echo '<center>Zalogowano jako: <b>'.$_SESSION['user'].'</b></center>';
  3. ?>


wywala mi: Zalogowano jako: Object id #2

Mam pytanie co jest nie tak, co mam wpisac zeby wypisalo mi normalna nazwe uzytkownika zapamietana w sesji?? :] probowalem juz chyba prawie wszystkiego tongue.gif

czy da sie jakos zablokowac zmienna, zeby nie dalo sie do niej wprowadzac nowych danych??
NetJaro
  1. <?php
  2. $_SESSION['user']=$user_name;
  3. ?>



A wyświetl najpierw zmienną $user_name, bo możliwe, że źle pobierasz dane smile.gif


EDIT

I zawsze dawaj

  1. <?php
  2.  $_POST['user'] 
  3. ?>

a nie
  1. <?php
  2.  $_POST[user] 
  3. ?>


Czyli umieszczaj to co w tablicy między ' '.
Powinno zadziałać smile.gif
snipe
dane pobierane so poprawnie, ale zakomentowalem ta linie:

Kod
header("Location: index.php");


w pliku logowania i wtedy wyswietla mi poprawne dane, czyli na 99% to przez header i odswiezenie strony, jak to obejsc??
NetJaro
Daj:

  1. <?php
  2.  header('Location: index.php?'. SID .''); 
  3. ?>
snipe
NetJaro niestety to nie to sadsmiley02.gif
NetJaro
Hmm, a daj po header exit;
I jak to nie zadziała to może:

  1. <?php
  2.  
  3. header("Location: index.php?".Session_Name()."=".Session_ID()); 
  4.  
  5. ?>


Jeżeli to nie zadziała to daj tam gdzie błąd
  1. <?php
  2.  
  3.  print_r ($_SESSION);
  4.  
  5. ?>
i wklej co się pojawiło smile.gif
snipe
nadal nie dziala, a to mi wywalilo: Array ( [user] => user Object ( ) )
NetJaro
Usuń
  1. <?php
  2.  
  3.  
  4. ?>

z pliku z klasami, ponieważ 2 razy startujesz sesje, może w tym tkwi błąd smile.gif
snipe
nadal to samo i nadal ten sam blad ;( moze w jakis inny sposob??
NetJaro
Daj na samym początku kodu

  1. <?php
  2.  
  3.  
  4. ?>

i wklej co się pojawiło...
snipe
Wywalilo mi to:

Notice: Undefined index: module in c:\usr\krasnal\www\testy\3miasto-rap\main.php on line 2

main.php

  1. <?php
  2. switch($_GET['module'])
  3. {
  4.  
  5. case 'user':
  6. include('modules/user_module.php');
  7. break;
  8.  
  9. case 'register':
  10. if(isset($_POST['user_name']) && isset($_POST['password']))
  11. {
  12. include('register.php');
  13. } else
  14. {
  15. $user->rejestruj_form();
  16. }
  17. break;
  18.  
  19. case 'comment':
  20. include('modules/comment_module.php');
  21. break;
  22.  
  23. case 'music':
  24. include('modules/music_module.php');
  25. break;
  26.  
  27. case 'logout':
  28. header("Location: index.php");
  29. break;
  30.  
  31. default: include('modules/news_module.php');
  32. break;
  33. }
  34. ?>
mike
Jak nie przekażesz nic za pomocą GET'a to tablica $_GET nie zawiera indeksu module.
Możesz zrobić tak:
  1. <?php
  2.  
  3. $_GET['module'] = ( empty( $_GET['module'] ) ) ? null : $_GET['module'];
  4. switch($_GET['module'])
  5. {
  6. // ... i tak dalej
  7.  
  8. ?>
NetJaro
Dokładnie, tak jak napisał mike_mech, teraz powinno Ci działać smile.gif
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.