Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL + PHP] Początek, logowanie
Forum PHP.pl > Forum > Przedszkole
Maxie
Zainteresowałem się ostatnio MySQL i zechciałem robić system logowania z poradnika (link). Teraz mam problem - Otóż gdy klikam "loguj" to nic, a nic się nie dzieje.

Tak wyglądają te pliki:
index.php:
  1. <?
  2. $message="Zostales pomyslnie wylogowany!";
  3.  
  4. $login=$_POST[&#8216;login’];
  5. if($login) {
  6. $uzytkownik=$_POST[&#8216;uzytkownik’];
  7. $md5_haslo=md5($_POST[&#8216;haslo’]);
  8.  
  9. $host="mysql.cba.pl"; // Nazwa hosta.
  10. $db_user="******_cba_pl"; // Nazwa użytkownika - MySQL.
  11. $db_password="********"; // Hasło do bazy.
  12. $database="localhost"; // Nazwa bazy.
  13.  
  14. mysql_connect($host,$db_user,$db_password);
  15. mysql_select_db($database);
  16.  
  17. $rezultat=mysql_query("select * FROM logowanie WHERE uzytkownik=’$uzytkownik’ AND haslo=’$md5_haslo’");
  18. if(@mysql_num_rows($rezultat)){
  19. session_register("uzytkownik"); // Zapamiętuje zmienną sesji
  20. header("location:main.php"); // Przekierowanie do strony main.php
  21. }else {
  22. $message="Nieprawidłowa nazwa użytkownika lub hasło";
  23. }
  24. }
  25. ?>
  26.  
  27. <form id="form1" name="form1" method="post" action="<? echo $PHP_SELF; ?>">
  28. Login:
  29. <input name="uzytkownik" type="text" id="uzytkownik" /><br>
  30. Hasło:
  31. <input name="haslo" type="password" id="haslo" /><br>
  32. <input name="login" type="submit" id="login" value="Loguj" /><br></form>


main.php:

  1. <?
  2.  
  3. session_start(); // Na samej górze zadeklaruj sesję.
  4. if(!session_is_registered("uzytkownik")){ // Sprawdza zmienną sesji.
  5. header("location:index.php"); // Przekierowanie do index.php
  6. }
  7. ?>


Nadmienię, że korzystam na razie z darmowego hostingu cba.pl, jeżeli to ma jakieś znaczenie.

PS. Tam gdzie masa gwiazdek to po prostu cenzura.
PS2. Jeżeli w złym dziale to sorry, ale nie byłem pewien gdzie to wysłać.

Pozdrawiam, Maxie.

pianta_d
Witam

Przy połączeniu dajesz
  1. $database="localhost"; // Nazwa bazy.


a w zapytaniu masz
  1. SELECT * FROM logowanie
dram
Wydaje mi się że
$host="mysql.cba.pl"; // Nazwa hosta.
$db_user="******_cba_pl"; // Nazwa użytkownika - MySQL.
$db_password="********"; // Hasło do bazy.
$database="localhost"; // Nazwa bazy.

Nazwa HOST-a to powinno być "localhost" jeżeli chodzi o CBA
nospor
Temat: Jak poprawnie zada pytanie
Zapoznaj się z tym tematem i do niego zastosuj.
Powinno ci się pojawić zapewne parę błędów

ps: przenosze na przedszkole
pianta_d
Zamiast
  1. `
uzywaj
  1. '


Na cytowanej stronie masz opisane problemy i rozwiązania jakie mieli użytkownicy z tym skryptem

Cytat
Działa tylko przy kopiowaniu trzeba sprawdzić czy dobrze przenosi apostrofy. Jak nie będzie działać to trzeba podmienić skopiowane apostrofy na prawidłowe.
Maxie
Nic nie pomogło. Poprawiłem te apostrofy, starałem się zmienić trochę dane do logowania. Dalej dzieje się to samo czyli: Nic.

Czekam na inne odpowiedzi, pozdrawiam, Maxie.
pianta_d
Pokaz jak poprawiłeś
Maxie
  1. <?
  2. $message="Zostales pomyslnie wylogowany!";
  3.  
  4. $login=$_POST['login'];
  5. if($login) {
  6. $uzytkownik=$_POST['uzytkownik'];
  7. $md5_haslo=md5($_POST['haslo']);
  8.  
  9. $host="localhost"; // Nazwa hosta.
  10. $db_user="******_cba_pl"; // Nazwa użytkownika - MySQL.
  11. $db_password="*******"; // Hasło do bazy.
  12. $database="localhost"; // Nazwa bazy.
  13.  
  14. mysql_connect($host,$db_user,$db_password);
  15. mysql_select_db($database);
  16.  
  17. $rezultat=mysql_query("select * FROM logowanie WHERE uzytkownik='$uzytkownik' AND haslo='$md5_haslo'");
  18. if(*mysql_num_rows($rezultat)){
  19. session_register("uzytkownik"); // Zapamiętuje zmienną sesji
  20. header("location:main.php"); // Przekierowanie do strony main.php
  21. }else {
  22. $message="Nieprawidłowa nazwa użytkownika lub hasło";
  23. }
  24. }
  25. ?>


Proszę.
pianta_d
linia 20
  1. if(*mysql_num_rows($rezultat)){
co to jest ta gwiazdka??
Maxie
To tylko tutaj, spokojnie biggrin.gif . W oryginale jest @.
pianta_d
No, muszę Ci powiedzieć, że na moim localu chodzi
  1. <?
  2. $message="Zostales pomyslnie wylogowany!";
  3.  
  4. $login=$_POST['login'];
  5. if($login) {
  6. $uzytkownik=$_POST['uzytkownik'];
  7. $md5_haslo=md5($_POST['haslo']);
  8.  
  9. $host="localhost"; // Nazwa hosta.
  10. $db_user=""; // Nazwa uĹźytkownika - MySQL.
  11. $db_password=""; // Hasło do bazy.
  12. $database="test"; // Nazwa bazy.
  13.  
  14. mysql_connect($host,$db_user,$db_password);
  15. mysql_select_db($database);
  16.  
  17. $rezultat=mysql_query("select * FROM t WHERE uzyt='$uzytkownik' AND haslo='$md5_haslo'");
  18. if(@mysql_num_rows($rezultat)){
  19. session_register("uzytkownik"); // Zapamiętuje zmiennÂą sesji
  20. header("location:main.php"); // Przekierowanie do strony main.php
  21. }else {
  22. $message="Nieprawidłowa nazwa uĹźytkownika lub hasło";
  23. }
  24. }
  25. ?>
  26.  
  27. <form id="form1" name="form1" method="post" action="<? echo $PHP_SELF; ?>">
  28. Login:
  29. <input name="uzytkownik" type="text" id="uzytkownik" /><br>
  30. Hasło:
  31. <input name="haslo" type="password" id="haslo" /><br>
  32. <input name="login" type="submit" id="login" value="Loguj" /><br>
  33. </form>


main.php
  1. <?
  2. session_start(); // Na samej górze zadeklaruj sesję.
  3. if(!session_is_registered("uzytkownik")){ // Sprawdza zmienną sesji.
  4. header("location:index.php"); // Przekierowanie do index.php
  5. }
  6. echo "<pre>";
  7. print_r($_SESSION);
  8. echo "</pre>";
  9. ?>



A powiedz mi czy zastosowałeś się do wszystkich porad ze strony skryptu w tym
Cytat
W stworzonej dla potrzeb logowania tabeli w kolumnie "uzytkownik" dodamy rekord o nazwie "admin", a w kolumnie "haslo" zakodowany ciąg znaków funkcją md5() -
"81dc9bdb52d04dc20036dbd8313ed055".

* W trakcie testu w polu hasła należy wprowadzić hasło przed zakodowaniem w md5(), czyli 1234.
Maxie
Tak robiłem na dwa sposoby. Nie działa, przekopiowałem to co Ty miałeś (prócz danych logowania) - dalej nie działa.

Proszę o pomoc :<
Daiquiri
Maxie, zapoznałeś się z linkiem, który podpowiedział Nospor?

Usuń małpy z kodu. Wyświetl sobie zapytanie zwykłym echo itd. Spróbuj sam zawęzić miejsce błędu.
pianta_d
Jak próbowałem dostać się przez skrypt wpisując inne dane niż te, które podał autor skryptu, nie działo się nic, czyli ten sam objaw co u Ciebie.
Sprawdź dokładnie jeszcze rac co przechowujesz w bazie, dokładnie.
Przekłamanie o jeden znak w md5 i nie zrobisz nic.


Powodzenia
Maxie
Próbowałem zrobić wszystko co tylko mi przyszło na myśl, nie działa. Znalazłem inny skrypt, zawiera też rejestrację biggrin.gif . Ale pojawia się też problem, chciałbym by po zalogowaniu przenosiło nas na inną stronę i ona wymagała autoryzacji, a za to zmienia się mi tylko "panel logowania" na "panel wylogowywania". Oto link do poradnika: http://pcvolt.pl/showthread.php?tid=664 .

Jeżeli Ktoś wiedział by jak to zrobić to proszę o odpowiedź, pozdrawiam, Maxie.
-zanst-
Ostatnio miałem taki sam problem, i okazało się, że ustawiłem za małą ilość znaków w polu hasła, i cały kod md5() się nie zmieścił. Sprawdź tutaj, czy kod md5() jest taki sam jak w bazie.
Maxie
Postanowiłem zostawić jak jest, mam jeszcze jeden problem z systemem logowania (oczywiście tym drugim, w tym w którym jest rejestracja). Otóż nie wiem jak wywołać zalogowanego użytkownika czyli jego nick. Z:
  1. $login = $_POST['login'];

i
  1. $query = "SELECT `password` FROM `users` WHERE `login`='$login'";

wywnioskowałem, że zmienna z nickiem to $login, ale nie działa. Wiecie jak wywołać nick zalogowanego użytkownika?
Daiquiri
Co znaczy "nie działa"? Jeżeli zapytanie zostaje wykonane (i zwraca poprawne dane) to zmienna musi zawierać nazwę użytkownika. Pytanie w którym miejscu chcesz ją wykorzystać? Być może jest "poza zasięgiem". Jeżeli wykorzystujesz mechanizm sesji, to po poprawnym zalogowaniu przypisz wartość zmiennej $login do np. $_SESSION['user'].

Tak teraz patrze, jak korzystasz z tego skryptu w poradniku, to login masz pod $_SESSION["USER_ID"].
Maxie
Działa, a dokładnie to:

  1. $_SESSION["USER_ID"]


Wielkie dzięki, temat do zamknięcia!
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.