Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL + PHP] Początek, logowanie
Maxie
post 19.10.2011, 23:11:28
Post #1





Grupa: Zarejestrowani
Postów: 82
Pomógł: 1
Dołączył: 19.10.2011

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


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.

Go to the top of the page
+Quote Post
pianta_d
post 20.10.2011, 06:23:54
Post #2





Grupa: Zarejestrowani
Postów: 176
Pomógł: 18
Dołączył: 5.01.2007

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


Witam

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


a w zapytaniu masz
  1. SELECT * FROM logowanie


Ten post edytował pianta_d 20.10.2011, 06:24:15
Go to the top of the page
+Quote Post
dram
post 20.10.2011, 07:22:35
Post #3





Grupa: Zarejestrowani
Postów: 80
Pomógł: 0
Dołączył: 15.10.2011

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


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
Go to the top of the page
+Quote Post
nospor
post 20.10.2011, 07:42:22
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
pianta_d
post 20.10.2011, 10:18:45
Post #5





Grupa: Zarejestrowani
Postów: 176
Pomógł: 18
Dołączył: 5.01.2007

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


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.
Go to the top of the page
+Quote Post
Maxie
post 20.10.2011, 17:43:03
Post #6





Grupa: Zarejestrowani
Postów: 82
Pomógł: 1
Dołączył: 19.10.2011

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


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.
Go to the top of the page
+Quote Post
pianta_d
post 20.10.2011, 17:44:50
Post #7





Grupa: Zarejestrowani
Postów: 176
Pomógł: 18
Dołączył: 5.01.2007

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


Pokaz jak poprawiłeś
Go to the top of the page
+Quote Post
Maxie
post 20.10.2011, 17:48:59
Post #8





Grupa: Zarejestrowani
Postów: 82
Pomógł: 1
Dołączył: 19.10.2011

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


  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ę.
Go to the top of the page
+Quote Post
pianta_d
post 20.10.2011, 17:51:39
Post #9





Grupa: Zarejestrowani
Postów: 176
Pomógł: 18
Dołączył: 5.01.2007

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


linia 20
  1. if(*mysql_num_rows($rezultat)){
co to jest ta gwiazdka??
Go to the top of the page
+Quote Post
Maxie
post 20.10.2011, 17:52:56
Post #10





Grupa: Zarejestrowani
Postów: 82
Pomógł: 1
Dołączył: 19.10.2011

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


To tylko tutaj, spokojnie biggrin.gif . W oryginale jest @.
Go to the top of the page
+Quote Post
pianta_d
post 20.10.2011, 18:17:32
Post #11





Grupa: Zarejestrowani
Postów: 176
Pomógł: 18
Dołączył: 5.01.2007

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


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.
Go to the top of the page
+Quote Post
Maxie
post 20.10.2011, 18:25:00
Post #12





Grupa: Zarejestrowani
Postów: 82
Pomógł: 1
Dołączył: 19.10.2011

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


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 :<
Go to the top of the page
+Quote Post
Daiquiri
post 20.10.2011, 18:30:18
Post #13





Grupa: Administratorzy
Postów: 1 552
Pomógł: 211
Dołączył: 7.07.2009
Skąd: NJ




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.
Go to the top of the page
+Quote Post
pianta_d
post 20.10.2011, 18:30:27
Post #14





Grupa: Zarejestrowani
Postów: 176
Pomógł: 18
Dołączył: 5.01.2007

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


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
Go to the top of the page
+Quote Post
Maxie
post 21.10.2011, 17:55:24
Post #15





Grupa: Zarejestrowani
Postów: 82
Pomógł: 1
Dołączył: 19.10.2011

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


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.
Go to the top of the page
+Quote Post
--zanst--
post 21.10.2011, 18:42:47
Post #16





Goście







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.
Go to the top of the page
+Quote Post
Maxie
post 22.10.2011, 14:32:38
Post #17





Grupa: Zarejestrowani
Postów: 82
Pomógł: 1
Dołączył: 19.10.2011

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


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?
Go to the top of the page
+Quote Post
Daiquiri
post 22.10.2011, 15:21:28
Post #18





Grupa: Administratorzy
Postów: 1 552
Pomógł: 211
Dołączył: 7.07.2009
Skąd: NJ




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"].
Go to the top of the page
+Quote Post
Maxie
post 22.10.2011, 20:56:16
Post #19





Grupa: Zarejestrowani
Postów: 82
Pomógł: 1
Dołączył: 19.10.2011

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


Działa, a dokładnie to:

  1. $_SESSION["USER_ID"]


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