Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL][PHP]Pomoc z logowaniem
rafalkml
post 4.01.2011, 17:31:47
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 15.12.2010

Ostrzeżenie: (0%)
-----


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.  

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Aganastarn
post 4.01.2011, 17:47:28
Post #2





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 4.01.2011

Ostrzeżenie: (0%)
-----


Rozpoczęcie sesji musi być na samym początku skryptu.
Go to the top of the page
+Quote Post
rafalkml
post 4.01.2011, 18:02:41
Post #3





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 15.12.2010

Ostrzeżenie: (0%)
-----


Nawet kiedy wcześniej jest funkcja, a wykonywany kod jest za otwarcie sesji? Nie działa przy zmianie tego.
Go to the top of the page
+Quote Post
sadistic_son
post 4.01.2011, 18:17:18
Post #4





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


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.

Ten post edytował sadistic_son 4.01.2011, 18:17:58


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
rafalkml
post 10.01.2011, 09:21:49
Post #5





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 15.12.2010

Ostrzeżenie: (0%)
-----


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ć.

Ten post edytował rafalkml 10.01.2011, 12:08:59
Go to the top of the page
+Quote Post
CuteOne
post 10.01.2011, 09:37:20
Post #6





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


  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
Go to the top of the page
+Quote Post
rafalkml
post 10.01.2011, 10:40:02
Post #7





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 15.12.2010

Ostrzeżenie: (0%)
-----


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

Ten post edytował rafalkml 10.01.2011, 10:42:06
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 06:05