Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z logowaniem i sesją
Forum PHP.pl > Forum > PHP
free
W ponizszym kodzie steruję częścią strony dotyczącą logowania, wylogowania uzytkownika, jak i wyswietlania dodatkowych funkcji /opisane sa w komentarzach skryptu/
  1. <?php
  2.  require_once 'http.php';
  3.  require("admin/config.php");
  4. $conn=mysql_connect($host,$bazalogin,$bazahaslo);
  5. if (isset($_REQUEST['akcja'])) {
  6. switch ($_REQUEST['akcja']) {
  7. //logowanie uzytkownika!!!
  8. case 'Zaloguj':
  9. if (isset($_POST['email'])
  10. and isset($_POST['haslo']))
  11. {
  12. $sql = "SELECT user_id, poziom, ksywa FROM users88 WHERE email='" . $_POST['email'] . "' AND haslo=md5('" . $_POST['haslo'] . "')";
  13. $result = mysql_query($sql)
  14. or die('Nie potrafię odnaleźć informacji o użytkowniku: ' .
  15. if ($row = mysql_fetch_array($result)) {
  16. $_SESSION['user_id'] = $row['user_id'];
  17. $_SESSION['poziom'] = $row['poziom'];
  18. $_SESSION['ksywa'] = $row['ksywa'];
  19. } }
  20. adres('index.php?page=profil');
  21. break;
  22. //wylogowuje uzytkownika, likwiduje sesje!!!
  23. case 'wyloguj':
  24. adres('news.php');
  25. break;
  26. //wyswietla dane osobowe dotyczace uzytkownika, ze strony komentarzy
  27. case 'Personalia':
  28. if (isset($_SESSION['user_id'])) {
  29. $query = "SELECT * FROM users88 WHERE ksywa = '". $_GET['ksywa'] ."'";
  30. $result = mysql_query($query)
  31. or die(mysql_error());
  32.  
  33. $row = mysql_fetch_array($result);
  34. $ksywa=$row['ksywa'];
  35. $email=$row['email'];
  36. echo " <br /><hr size="2"> Dane personalne: <br /><h1>ksywa $ksywa <br />
  37. Adres email: $email <br /> </h1> ";
  38.  }
  39. else
  40. echo "<br />Dostęp zabroniony. Musisz sie zalogować by przeglądać dane użytkowników. <br />
  41. <a href="index.php?page=login">Zaloguj (zarejestruj) się, aby dodawać komentarz.</a>";
  42. break;
  43.  
  44. //wyswietla info o wszystkich userach
  45. case 'wszyscy':
  46. if (isset($_SESSION['user_id'])) {
  47. $query = "SELECT * FROM users88";
  48. $result = mysql_query($query)
  49. or die(mysql_error());
  50.  
  51. while ($t = mysql_fetch_array($result)) {
  52. $ksywa=$t['ksywa'];
  53. $id=$t['id'];
  54. $dolaczyl=$t['data1'];
  55. $ostlog=$t['data2'];
  56. $postow=$t['postow'];
  57. echo "<a href=index.php?page=kibic&akcja=Personalia&ksywa=$ksywa>$ksywa</a> Dolaczyl $dolaczyl Ostatnio zalogowany $ostlog Postow $postow<hr /> ";
  58.  } }
  59. else echo "<br />Dostęp zabroniony. Musisz sie zalogować by przeglądać dane użytkowników. <br />
  60. <a href="index.php?page=login">Zaloguj (zarejestruj) się, aby dodawać komentarz.</a>";
  61. break;
  62. }}
  63. ?>

Problem polega na tym ze skrypt mnie pieknie loguje mam sesja, ale jak zaczne odwiedzac rozne podstrony, na ktorych jest info o innych userach to zmienia mi profil na innego urzytkownika ktory pojawia sie na odwiedzonej podstronie. PARANOJA
Dodam jeszcze kod bazy danych:
  1. Struktura tabeli dla `users88`
  2. --
  3.  
  4. CREATE TABLE `users88` (
  5. `user_id` int(11) NOT NULL AUTO_INCREMENT,
  6. `ksywa` varchar(100) NOT NULL DEFAULT '',
  7. `email` varchar(255) NOT NULL DEFAULT '',
  8. `haslo` varchar(50) NOT NULL DEFAULT '',
  9. `ip` varchar(50) NOT NULL DEFAULT '0.0.0.0',
  10. `data1` varchar(50) NOT NULL DEFAULT '',
  11. `data2` varchar(50) NOT NULL DEFAULT '',
  12. `postow` int(4) NOT NULL DEFAULT '0',
  13. `poziom` tinyint(4) NOT NULL DEFAULT '1',
  14. PRIMARY KEY (`user_id`)
  15. ) TYPE=MyISAM AUTO_INCREMENT=3 ;
  16.  
  17. --
  18. -- Zrzut danych tabeli `users88`
  19. --
  20.  
  21. INSERT INTO `users88` VALUES (1, 'as', 'as@as.pl', 'f970e2767d0cfe75876ea857f92e319b', '127.0.0.1', '2006-21-03', '2006-21-04', 8, 1);
  22. INSERT INTO `users88` VALUES (2, 'skurwiel', 'aaa@aaa.pl', '47bce5c74f589f4867dbd57e9ca9f808', '127.0.0.1', '2006-22-03', '2006-26-03', 5, 1);

Gdie szukac błędu ?
kossa
na wszystkich podstronach musisz przekazywać sesję

  1. <?php
  2. ?>


Łukasz
free
Problem mam juz rozwiązany.
To ze wszedzie musze miec start sesji to wiem. Inaczej wogle by mnie nie logowalo. A tu wyraznie napisalem ze zmienia mi zalogowanego usera na innego.
Zmienilem nazwy zmiennych sesyjnych by nie byly takie same jak pobierane metoda GET i śmiga :-)

Zastanawiam sie tylko dlaczego tak sie dzieje, ze skrypt głupiał ?
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.