Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pomocy z ciastkiem
Forum PHP.pl > Forum > PHP
ahryciuk
Witam chodzi o pomoc w podlaczeniu Ciastek do skryptu logowania, ponizej zamieszczony jest fragment kodu, i problem polega na tym, iz pobierane dane z ciastek nie zgadzaja się z danymi jakie powinne zostać wprowadzone, jest to skrypt logowania login i hasło kodowane na md5, moze mi ktos wytłumaczyć i poradzic gdzie tkwi problem ? Bede wdzieczny, pozdrawiam

  1. <?php
  2. $_CONFIG['kxc'] = "a523d703f908dd69e02db64ec35d07315f4c49ab3cacad14a97304b02f2fbb09";
  3.  
  4. $_CONFIG['MySQL']['host'] = "localhost";
  5. $_CONFIG['MySQL']['user'] = "admin";
  6. $_CONFIG['MySQL']['pass'] = "";
  7. $_CONFIG['MySQL']['base'] = "logowanie";
  8.  
  9. if(!isset($_SESSION['sesja'])) {
  10.  $_SESSION['sesja'] = '';
  11. }
  12.  
  13. @mysql_connect($_CONFIG['MySQL']['host'], $_CONFIG['MySQL']['user'], $_CONFIG['MySQL']['pass']) or die('');
  14.  
  15. @mysql_select_db($_CONFIG['MySQL']['base']) or die('');
  16.  
  17. function login() {
  18.  
  19. global $_CONFIG;
  20. $zalogowany = false;
  21.  
  22. //odczyt danych z ciastka
  23.  
  24. if(isset($_COOKIE['dane'])) {
  25. $dane = $_COOKIE['dane']^$_CONFIG['kxc'];
  26. $login = substr($dane, 0, 32);
  27. $haslo = substr($dane, -32);
  28. $metod = "cookies";
  29. }
  30. elseif(isset($_SESSION['login']) AND isset($_SESSION['haslo'])) {
  31. $login = $_SESSION['login'];
  32. $haslo = $_SESSION['haslo'];
  33. $metod = "session";
  34. }
  35. elseif(isset($_POST['login']) AND isset($_POST['haslo'])) {
  36. $login = md5(strtolower($_POST['login']));
  37. $haslo = md5($_POST['haslo']);
  38. $metod = "post";
  39. }
  40.  
  41. if(isset($metod)) {
  42. $query = mysql_query("SELECT * FROM `users` WHERE `user`='".$login."' AND `pass`='".$haslo."';");
  43.  
  44.  if(mysql_num_rows($query) == 1) {
  45. $zalogowany = true; 
  46.  
  47. if($metod <> "session") {
  48. $wiersz = mysql_fetch_array($query);
  49. $_SESSION['login'] = $wiersz['user'];
  50. $_SESSION['haslo'] = $wiersz['pass'];
  51. $_SESSION['nick'] = $wiersz['nick'];
  52.  
  53.  if($metod == "post" AND isset($_POST['pamietaj']) AND $_POST['pamietaj'] == "ok") {
  54.  $dane = ($login.$haslo)^$_CONFIG['kxc'];
  55.  
  56. //wysyłamy cistko z danymi
  57.  setcookie ('dane', $dane,time()+3600*24*365);
  58.  }
  59. }
  60.  }
  61. }
  62. return $zalogowany;
  63. }
  64.  
  65. ?>
carbolymer
Chodzi tylko o ciastka (sesja ci dobrze działa?)?
Sprawdzałeś czy połączenie z bazą jest nawiązywane i czy select zwraca odpowiednie dane? (używanie or die(''); nie jest dobre - powinna zostać wyświetlana wiadomość przy błędzie)

Mechanizm szyfrowania różnicą symetryczną działa bez zarzutu. Sprawdzałeś pod innymi przeglądarkami? Niektóre przegladarki blokują cookies.
ahryciuk
no wlasnie logowanie działa bez zarzutu ale przy wykorzystaniu tylko sesji jak doloze zapamietywanie do ciastek wtedy dane sa błędnie wczytywane, tylko nie moge dojsc gdzie tkwi problem
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.