Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z logowaniem pod linuxem
Forum PHP.pl > Forum > PHP
maniek22
Witam.

Mam taki problemik, skrypt umieszczony poniżej działa mi na krasnalu (windows) a jak go przerzuce na serwer na linuxie to wyskakuje mi komunikat " zalogowanie niemozliwe" i nie moge znalezc bledu czego sie tak dzieje.

  1. <?
  2.  
  3. if($iduzytkownika && $haslo)
  4. {
  5. // jeżeli użytkownik właśnie podjął próbę zalogowania
  6.  
  7. $bd_lacz=mysql_connect("localhost", "uwierzytel", "uwierzytel");
  8. mysql_select_db("uwierz", $bd_lacz);
  9. $zapytanie="select * from uwierz "
  10.  ."where uzytkownik='$iduzytkownika' "
  11.  ." and haslo=password('$haslo')";
  12. $wynik=mysql_query($zapytanie, $bd_lacz);
  13. if(mysql_num_rows($wynik)>0)
  14. {
  15. // jeżeli dane są w bazie zarejestrowanie identyfikatora użytkownika
  16. $prawid_uzyt=$iduzytkownika;
  17. session_register("prawid_uzyt");
  18.  
  19. }
  20. }
  21.  
  22.  
  23.  
  24. if(session_is_registered("prawid_uzyt"))
  25. {
  26. header("Location:glowna.php");
  27. }
  28. else
  29. {
  30. if(isset($iduzytkownika))
  31. {
  32. // jeżeli próba logowania była nieudana
  33. echo "Zalogowanie niemożliwe";
  34.  
  35. }
  36. else
  37. {
  38. // nie było próby logowania lub nastąpiło wylogowanie
  39. echo "Użytkownik niezalogowany.<br>";
  40. }
  41.  
  42. // tworzenie formularza logowania
  43. echo "<form method=post action="index.php">";
  44. echo "<table>";
  45. echo "<tr><td>Identyfikator użytkownika:</td>";
  46. echo "<td><input type=text name=iduzytkownika></td></tr>";
  47. echo "<tr><td>Hasło:</td>";
  48. echo "<td><input type=password name=haslo></td></tr>";
  49. echo "<tr><td colspan=2 align=center>";
  50. echo "<input type=submit value="Logowanie"></td></tr>";
  51. echo "</table></form>";
  52. }
  53. ?>
kossa
register_globals = off

  1. <?php
  2. if ($_POST["iduzytkownika"] && $_POST["haslo"])
  3. ?>


Łukasz
b_chmura
a gdzie pobierasz dane z formularza?

  1. <?php
  2. $iduzytkownika = $_POST['iduzytkownika'];
  3. $haslo = $_POST['haslo'];
  4. ?>
kossa
Cytat(b_chmura @ 16.07.2007, 17:02:32 ) *
a gdzie pobierasz dane z formularza?

  1. <?php
  2. $iduzytkownika = $_POST['iduzytkownika'];
  3. $haslo = $_POST['haslo'];
  4. ?>



na krasnalu register_globals są włączone zatem odbieranie tak działało popranie

  1. <?php
  2. if($iduzytkownika && $haslo)
  3. ?>


Łukasz
maniek22
Na linuksie ustawilem sobie register_globals na on i inne skrypty bez $_POST dzialaja dlatego nie wiem gdzie jest blad. Na serwerze mam php 5.2 a mysql 5.0.32.
b_chmura
  1. <?
  2. $iduzytkownika = $_POST['iduzytkownika'];
  3. $haslo  = $_POST['haslo'];
  4.  
  5. if(!empty($iduzytkownika) AND !empty($haslo))
  6. {
  7. // jeżeli użytkownik właśnie podjął próbę zalogowania
  8.  
  9. $bd_lacz=mysql_connect("localhost", "uwierzytel", "uwierzytel");
  10. mysql_select_db("uwierz", $bd_lacz);
  11.  
  12. $zapytanie = "select * from uwierz "
  13. ."where uzytkownik='$iduzytkownika' "
  14. ." and haslo=password('$haslo')";
  15.  
  16. $wynik = mysql_query($zapytanie, $bd_lacz);
  17.  
  18. if(mysql_num_rows($wynik) > 0)
  19. {
  20. // jeżeli dane są w bazie zarejestrowanie identyfikatora użytkownika
  21. $prawid_uzyt = $iduzytkownika;
  22. session_register("prawid_uzyt");
  23.  
  24. }
  25. }
  26. if(session_is_registered("prawid_uzyt"))
  27. {
  28. header("Location:glowna.php");
  29. }
  30. else
  31. {
  32. if(!empty($iduzytkownika))
  33. {
  34. // jeżeli próba logowania była nieudana
  35. echo "Zalogowanie niemożliwe";
  36. }
  37. else
  38. {
  39. // nie było próby logowania lub nastąpiło wylogowanie
  40. echo "Użytkownik niezalogowany.<br>";
  41. }
  42. // tworzenie formularza logowania
  43. echo "<form method=post action="index.php">";
  44. echo "<table>";
  45. echo "<tr><td>Identyfikator użytkownika:</td>";
  46. echo "<td><input type=text name=iduzytkownika></td></tr>";
  47. echo "<tr><td>Hasło:</td>";
  48. echo "<td><input type=password name=haslo></td></tr>";
  49. echo "<tr><td colspan=2 align=center>";
  50. echo "<input type=submit value="Logowanie"></td></tr>";
  51. echo "</table></form>";
  52. }
  53. ?>


jeśli nie będzie działać sprawdź przede wszystkim czy wyciąga Ci jakieś dane z bazy i czy czasem w którymś momencie ich nie gubi, tak samo zrób ze zmienną $iduzytkownika i $haslo
maniek22
Sprawdzalem zmodyfikowany przez ciebie skrypt i dalej nie dziala " zalogowanie nie mozliwe". Jak moge sprawdzic czy wyciaga dane? mysql error czy jest jakas inna opcja? dzieki
b_chmura
  1. <?php
  2. echo $iduzytkownika;
  3. echo $haslo;
  4. ?>


co jakiś czas wstawiać i sprawdzać czy wyświetla jakąś wartosc
maniek22
zrobilem tak jak mi podpowiedziales i zmienne $iduzytkownika i $haslo wyciaga ale mysql_num_rows($wynik) mam 0.
b_chmura
po co to $bd_lacz?

daj tak:
  1. <?php
  2. // (..)
  3.  
  4. mysql_connect("localhost", "uwierzytel", "uwierzytel");
  5. mysql_select_db("uwierz");
  6. $zapytanie = "SELECT * FROM `uwierz` WHERE `uzytkownik` = '$iduzytkownika' AND `haslo` = password('$haslo')";
  7.  
  8. $wynik = mysql_query($zapytanie);
  9.  
  10. //  (...)
  11. ?>
maniek22
zmienilem, wydaje mi sie ze cos jest nie tak z zapytaniem bo zwraca wynik 0 czyli chyba przy porownaniu hasla i loginu z formularza nie znajduje odpowiednika w bazie, tylko pytanie czego akurat tak sie dzieje?
b_chmura
może zapomniałeś loginu i/lub hasła haha.gif

no to już wykaż sie własną inicjatywą i spróbuj jakoś sam wydobyć te dane z bazy ;-)
maniek22
Sprawdzilem zapytania bezposrednio w bazie i nie wyszukuja mi danych zwracaja pusty wynik tak jakby nie istnialy. Zapytanie u siebie na kompie dziala i daja mi wynik. Hasla i loginy sa takie same w obu bazach ale na serwerze nie dziala. nawet zrobilem zapytanie tylko z loginem i tez nic. Co jest grane?
bim2
Może nie dodałeś żadnych danych do bazy? Bo jesli zwraca 0...
maniek22
W bazie mam dane.

Jak wykonuje takie zapytanie: SELECT * FROM `logowanie` WHERE `uzytkownik` = 'szmukier' AND `haslo` = password('123') to daje mi zero.

A jak dam SELECT * FROM `logowanie` WHERE `uzytkownik` = 'szmukier'; to znajduje mi w bazie dane, tak samo jak dam bez haszowania hasla np. SELECT * FROM `logowanie` WHERE `uzytkownik` = 'uzytkownik' AND `haslo` = ('haslo') to mi tez znajduje

Mam na serwerze mysql 5 i nie wiem czy cos jest wylaczone ze nie znajduje jak chce skorzystac z PASSWORD lub SHA1.
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.