Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][PDO] Apache pada gdy dolanczam do strony pewna klase.
Forum PHP.pl > Forum > PHP
qba10
Witam
Napisalem pewien skrypt logowania oparty o bibliotekę PDO. Ale niestety gdy załączam go do mojej strony, i próbuję się zalogować wyskakuje błąd windowsa i apache siada...
Tu moja prośba żeby ktoś sprawdził kod i napisał czy wszystko powinno działać czy nie.

PS: skrypt sprawdzałem na dwóch serwerach i zawszę ten sam bieg wydarzeń (apache off).

  1. <?php
  2. class logowanie {
  3.  
  4.  
  5. //pola
  6. private $cookie;
  7. public $zalogowany;
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14. //metody
  15. public function __construct($login, $haslo, $zapamietaj)
  16. {
  17. if (isset($_COOKIE[securityhash('logowanie')]) and $this -> zalogowany != 1)
  18. {
  19. $this -> cookie();
  20. }
  21. if ($this -> zalogowany != 1)
  22. {
  23.  
  24. $this -> autoryzacja($login, $haslo, $zapamietaj);
  25. }
  26.  
  27.  
  28. }
  29.  
  30.  
  31.  
  32.  
  33. private function cookie()
  34. {
  35. $stmt = PDOquery('SELECT login, haslo FROM users');
  36.      
  37.      foreach($stmt as $wynik)
  38.      {
  39.      $dane = secruityhash('jump'.$wynik['login'].$wynik['haslo'].'maslo');
  40.      
  41.      if ($dane == $_COOKIE[securityhash('logowanie')])
  42.      {
  43.      $this -> cookie = 1;
  44.      
  45.      }
  46.      }
  47.      $stmt -> closeCursor();
  48.  
  49. }
  50.  
  51. private function autoryzacja($login, $haslo, $zapamietaj)
  52. {
  53. if($this -> cookie == 1)
  54. {
  55. $zaloguj = 1;
  56. $metoda = 'cookie';
  57. }
  58. elseif(isset($_SESSION['login']) and isset($_SESSION['haslo']))
  59. {
  60. $login_use = $_SESSION['login'];
  61. $haslo_use = $_SESSION['haslo'];
  62. $metoda = 'session';
  63. }
  64. elseif(!empty($login) and !empty($haslo))
  65. {
  66. $login_use = securityhash($login);
  67. $haslo_use = securityhash($haslo);
  68. $metoda = 'post';
  69. }
  70.  
  71. if (isset($metoda))
  72. {
  73.  if($metoda == 'cookie')
  74.  {
  75.  
  76.  $this -> zalogowany = 1;
  77.  
  78.  }
  79.  else
  80.  {
  81.  
  82.  $stmt = PDOquery(&#092;"SELECT * FROM users where `login` = '$login_use', `haslo` = '$haslo_use'\");
  83.  foreach($stmt as $wynik)
  84.      {
  85.      
  86.      $_SESSION['zalogowany'] = 1;
  87.      $_SESSION['login'] = $login_use;
  88.      $_SESSION['haslo'] = $haslo_use;
  89.      $_SESSION['nick'] = $wynik['nick'];
  90.      $this -> zalogowany = 1;
  91.      
  92.      }
  93.      $stmt -> closeCursor();
  94.      }
  95.    
  96.  
  97.  
  98.      
  99.  
  100.  
  101.  }
  102.  
  103.  
  104.  
  105. }
  106.  
  107.  
  108.  
  109. }
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116. ?>


I dodatkowo klasa security:
  1. <?php
  2. class security
  3. {
  4.  
  5. public static function hash($hash)
  6. {
  7. $probny = sha1($hash);
  8. $probny1 = substr($probny,0,4);
  9. $probny2 = substr($probny,-4);
  10. $hash = md5(sha1($probny1.md5($hash).$probny2));
  11.  
  12. return $hash ;
  13.  
  14.  
  15. }
  16.  
  17.  
  18.  
  19.  
  20.  
  21.  
  22. }
  23. ?>


Edit: Skrypt sprawdzany na WAMP i XAMPP
Kildyt
Sprawdź przez error_reporting, czy nie ma jakiegoś błędu.

PS Na przyszłość używaj tabulacji.
qba10
Włączyłem pełne raportowanie i nic tam nie znalazłem. Teraz zrobiłem mały teścik (Narazie metody cookie() nie testowałem) i zauważyłem że kod działa normalnie aż do 71 ("if (isset($metoda))" ) Więc czy może źle użyłem PDO?
bim2
Własnie ja mam coś podobnego, tlyko kod jest bardziej rozwinięty. gdy nie dziedziczepewnej klasy to śmiga, ale jak dam dziedziczenie to siada. ;/ przejrzałem cały kod, komentując linia po lini i nie znalazłem błędu. :|
ucho
Jeżeli apache się wywala to wskazuje to raczej na błąd w samym mod_php i/lub apachu niż kodzie - masz oba w najnowszych wersjach?
NuLL
Ciekawe jak Ci to dziala i bledow nie wypisuje skoro zamiast security::hash masz wszedzie securityhash blink.gif wacko.gif
dr_bonzo
NuLL: to forum usuwa "::"
qba10
Jak już pisałem skrypt był testowany na xampp'ie (PHP 5.2.6 Apache 2.2.9) i na WAMP'ie (PHP 5.2.6 Apache nie pamietętam) Wiec to chyba najnowsze stabilne wersje.

Edit: Problem rozwiązany - ale i tak wam nie wytłumaczę co było źle bo sam nie wiem..... Tyle różnych kombinacji miałem aż potem błąd mysql zaczął wyskakiwać, poprawiłem go i jest wszystko jest git biggrin.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.