Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MSSQL][HTML][PHP]logowanie - nie dziala
Forum PHP.pl > Forum > Przedszkole
Maciek1705
Witam serdecznie. Ostatnio pisalem sobie stronki do mojej pracz i postanowilem sie yajac kwestia logowania.mialem przyklad ze szkoly i przerobilem go na swoje potrzeby jednak jak go uruchomilem bylem zaskoczony iz nie dziala co wiecej postanowilem sprawdzic oryginal i co tez nie dzialal jest zupelnie bez sensu niby wszystko jest ok haslo ok login ok i nic awaria. Siedze juz 2 dzien nad tym i nie wiem co nie tak jest juz mi sie myli co z czym wiec prosze o pomoc moze to ktos z Was rozkmini:-) oto kod php z formularzem do logowania:
  1. <?
  2. session_name("SKLEP");
  3. ?>
  4. <html>
  5. <body>
  6. <form action='zaloguj2.php' method='POST'>
  7. <div>
  8. <label>Login</label>
  9. <input type='text' name='txtLogin' maxlength='30' class='txtin' />
  10. </div>
  11.  
  12. <div>
  13. <label>Hasło</label>
  14. <input type='password' name='pwdHaslo' maxlength='20' class='txtin' />
  15. </div>
  16.  
  17. <div>
  18. <center><input type='submit' name='zaloguj' value='Zaloguj' /></center>
  19. </div>
  20. </form>
  21. </body>
  22. </html>


a to strona sprawdzajaca logowanie:
  1. <?
  2. session_name("SKLEP");
  3.  
  4. $Haslo = $_POST['pwdHaslo'];
  5. $haslo = md5($Haslo);
  6.  
  7. // Funkcja sprawdzająca poprawność danych logowania.
  8. // Jeśli są poprawne, zwraca TRUE, w przeciwnym razie - FALSE.
  9.  
  10. function logowanie_sprawdz ($login_input, $haslo_input)
  11. {
  12. if ($login_input == '' || $haslo_input == '')
  13. return FALSE;
  14.  
  15. $server = " ";
  16. $database = "[ ]";
  17.  
  18. $polecenieSQL = "SELECT * FROM dbo.Klient WHERE Login = '$login_input'";
  19.  
  20. // Polaczenie z serwerem.
  21. $db_connection = @mssql_connect($server)
  22. or die("Połączenie z serwerem $server nie powiodło się.");
  23.  
  24. // Wybranie biezacej bazy danych.
  25. $result = @mssql_select_db($database, $db_connection)
  26. or die("Nie można otworzyć bazy $database.");
  27.  
  28. $wyniki = @mssql_query($polecenieSQL)
  29. or die("Nie można sprawdzić danych użytkownika. Proszę spróbować ponownie.");
  30.  
  31. // Nie ma zarejestrowanego użytkownika o podanej nazwie.
  32. if ($wyniki == FALSE)
  33. return FALSE;
  34.  
  35. else
  36. {
  37. $klient = @mssql_fetch_array($wyniki);
  38. $login_bd = $klient['Login'];
  39. $haslo_bd = $klient['Haslo'];
  40.  
  41. if ((strcmp($login_bd, $login_input) == 0) && (strcmp($haslo_bd,($haslo_input)) == 0))
  42. //if ((strcmp($login_bd, $login_input) == 0) && (strcmp($haslo_bd, $haslo_input) == 0))
  43. {
  44. return TRUE;
  45. }
  46. else
  47. return FALSE;
  48. }
  49. } // function logowanie_sprawdz()
  50.  
  51. ?>
  52. <HTML>
  53. <HEAD>
  54. <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
  55. <TITLE>Witamy</TITLE>
  56. <link rel="Stylesheet" href=" " type="text/css" />
  57. </HEAD>
  58. <BODY>
  59. <? // Sprawdzenie danych logowania, podanych przez użytkownika.
  60.  
  61. if (!isset($_POST['txtLogin']) || $_POST['txtLogin'] == ''
  62. || !isset($haslo) || ($haslo) == '')
  63.  
  64. $wynik_logowania = FALSE;
  65. else
  66. {
  67. // Prosta obrona przed atakiem SQL injection:
  68. // wycięcie znaków, które mogłyby zostać wykorzystane przez hackera.
  69. $znaki_zabronione = array(";",":","'","*",".","-","=");
  70. $login = str_replace($znaki_zabronione,"",$_POST['login']);
  71.  
  72. $wynik_logowania = logowanie_sprawdz($login, $haslo);
  73. }
  74.  
  75. if ($wynik_logowania == TRUE)
  76. {
  77. $server = " ";
  78. $database = "[ ]";
  79.  
  80. $polecenieSQL = "SELECT * FROM dbo.Klient WHERE Login = '$login'";
  81.  
  82. // Polaczenie z serwerem.
  83. $db_connection = @mssql_connect($server, $srv_login, $srv_password)
  84. or die("Połączenie z serwerem $server nie powiodło się.");
  85.  
  86. // Wybranie biezacej bazy danych.
  87. $result = @mssql_select_db($database, $db_connection)
  88. or die("Nie można otworzyć bazy $database.");
  89.  
  90. $proceduraSQL = mssql_init("dbo.Login_Sprawdz", $db_connection);
  91. mssql_bind($proceduraSQL,"@Par_Login", $login, SQLVARCHAR);
  92.  
  93. $wyniki = mssql_execute($proceduraSQL)
  94. or die("Nie można utworzyć koszyka."); // Komunikat do zmiany.
  95.  
  96. $klient = @mssql_fetch_array($wyniki);
  97.  
  98. $IdKlienta = $klient['IdKlienta'];
  99. $IdSesji = session_id();
  100.  
  101. $polecenieSQL = "INSERT dbo.KlientZalogowany (IdSesji, IdKlienta, OstatniaZmiana) ";
  102. $polecenieSQL .= "VALUES ('$IdSesji', $IdKlienta, GETDATE())";
  103.  
  104. $wyniki = @mssql_query($polecenieSQL)
  105. or die("Nie można zalogować użytkownika. Proszę spróbować ponownie.");
  106.  
  107. $_SESSION['zalogowany'] = TRUE;
  108. $_SESSION['login'] = $login;
  109.  
  110. print("<h3>Jesteś zalogowany jako $login.</h3>");
  111. }
  112.  
  113. if ($wynik_logowania == FALSE)
  114. {
  115. print("<h3 id='blad'>Niepoprawna nazwa użytkownika lub hasło.</h3>");
  116. print("<br /> Nie jesteś jeszcze zarejestrowanym użytkownikiem?");
  117. print("<br /> <a href='rejestracja.php'>Zarejestruj się!</a>");
  118. }
  119. ?>
  120. </BODY>
  121. </HTML>


Dodam ze hasla w bazie sa hasowane md5 i w takiej postaci tam trzymane z raczej jasnych wzgledow jeszcze wrzuce procedure jedna co tam uzuwam:
  1. ALTER PROCEDURE [dbo].[Zalogowany_Sprawdz]
  2. @Par_Login varchar(30)
  3. AS
  4. BEGIN
  5. SELECT *
  6. FROM dbo.Klienci
  7. WHERE Login = @Par_Login
  8. END
  9. GO


to chyba wszystko z gory dzieki za pomoc
potreb
Masz ten warunek:
  1. if (![url="http://www.php.net/isset"]isset[/url]($_POST['txtLogin']) || $_POST['txtLogin'] == '' || ![url="http://www.php.net/isset"]isset[/url]($haslo) || ($haslo) == '')


Skąd hasło pobierasz?? Masz taki cuś jak print_r($_POST); sprawdź jak przesyłane są zmienne.
Na forum było już wiele razy o logowaniu
Maciek1705
no jesli chodzi o pobieranie danych to pobieram login i haslo ze stronki logowanie.php to ten pierwszy formularz i jak dawalem na stronie tej drugiej zalogu np
  1. <?
  2. Print ("$login $haslo")
  3. ?>

gdzie wczesniej je pobralem postem to mi wyswietlal normalnie login i haslo myslalem ze tak mozna zrobic jak zrobilem bo jeszcze jestem cienki z php;p

juz wiem gdzie byl blad dzieki za pomoc ale ja cepek jestem;p
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.