Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL][PHP]Pomoc z logowaniem
Forum PHP.pl > Forum > Przedszkole
rafalkml
Witam,
Mam problem odnośnie logowania w php z dostępem do bazy danych. Kiedy się loguje, jest nawiązanie połączenia z bazą danych, jest informacja, że zostałem zalogowany, ale wypisuje też błąd Fatal error: Exception thrown without a stack frame in Unknown on line 0 i zalogowany nie jestem. Poniżej umieszczam kod. Czy do index.php mogę dołączyć ten skrypt przez include?
  1. <?php
  2.  
  3.  
  4. function loguj($nazwa_uz, $haslo) {
  5.  
  6. try
  7. {
  8. $pdo = new PDO('USUNIETO DANE DO LOGOWANIA');
  9. echo 'Połączenie nawiązane!';
  10. return $pdo;
  11. }
  12. catch(PDOException $e)
  13. {
  14. echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage();
  15. }
  16.  
  17.  
  18. $wynik = $pdo->query("select * from fusion_users
  19. where user_name='".$nazwa_uz."'
  20. and user_password = sha1('".$haslo."')");
  21. if (!$wynik) {
  22. throw new Exception('Logowanie nie powiodło się.');
  23. }
  24.  
  25. if ($wynik->num_rows>0) {
  26. return true;
  27. } else {
  28. throw new Exception('Logowanie nie powiodło się.');
  29. }
  30. }
  31.  
  32.  
  33.  
  34.  
  35. if(!isset($_SESSION['uzytkownik']))
  36. {
  37.  
  38. $_SESSION['uzytkownik'] = 0;
  39. }
  40. if($_SESSION['uzytkownik'] > 0)
  41. {
  42.  
  43. echo 'Witaj, '.$uzytkownicy[$_SESSION['uzytkownik']]['nazwa_uz'].'!';
  44. }
  45. else
  46. {
  47.  
  48.  
  49. if($_SERVER['REQUEST_METHOD'] == 'POST')
  50. {
  51. if(($id = loguj($_POST['nazwa_uz'], $_POST['haslo'])) !== false)
  52. {
  53.  
  54. $_SESSION['uzytkownik'] = $id;
  55. echo 'Zostałeś zalogowany!';
  56. }
  57. else
  58. {
  59. echo 'Błąd logowania, nieprawidłowe dane!';
  60. }
  61. }
  62. else
  63. {
  64. echo '<form method="post" action="baza.php">
  65. Nazwa użytkownika: <input type="text" name="nazwa_uz"/> | Hasło: <input type="password" name="haslo"/> <input type="submit" value="Logowanie"/>
  66. </form>';
  67. }
  68. }
  69. ?>
  70.  

Aganastarn
Rozpoczęcie sesji musi być na samym początku skryptu.
rafalkml
Nawet kiedy wcześniej jest funkcja, a wykonywany kod jest za otwarcie sesji? Nie działa przy zmianie tego.
sadistic_son
Podany kod nie jest za pewne całym plikiem index.php. Gdzie jest <html> , <head> itd.? To co podales jest za pewne includowane do innego pliku. Daj to session_start na samiutkim poczatku glownego pliku i sprawdz co sie stanie.
rafalkml
Problem tkwił w błędnym napisaniu funkcji. Zmieniłem ją, logowanie działa. Jednak zalogowuje za każdym razem, nawet kiedy login i hasło są błędne. Wydaje mi się, że błąd jest w użyciu pdo, ale za bardzo nie mogę sobie z tym poradzić.
CuteOne
  1. try
  2. {
  3. $pdo = new PDO('mysql:host=localhost;dbname=NAZWA BAZY', 'login', 'hasło');
  4. return $pdo;
  5. }


wywal to do funkcji, która odpowiada za połączenie z bazą.. inaczej zawsze będzie zwracane true
rafalkml
Zauważyłem właśnie to
  1. return $pdo

i usunąłem. Jednak teraz się zmieniło to, że wyświetla komunikat, że "zalogowanie niemożliwe" i nie loguje.

EDIT. Jednak już 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.