Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Problem z logowaniem poprzez session
przemo191
post 29.08.2011, 16:39:54
Post #1





Grupa: Zarejestrowani
Postów: 154
Pomógł: 3
Dołączył: 1.08.2011

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


Witam mam taki problem, zrobiłem skrypt logowania, który sprawdza poprawność pola login i hasło z bazą danych. Kiedy wpisujemy złe dane do formularza logowania skrypt zachowuje się jak należy, natomiast kiedy wpiszemy dobre dane to wywala błąd:
Notice: Undefined index: test in C:\wamp\www\depis\baza_napraw\loguj.php on line 42

Kod php to:
  1. <?php
  2.  
  3. $user1 = $_POST['user'];
  4. $pass1 = $_POST['password'];
  5. $typ_bazy = $_POST['typ_bazy'];
  6.  
  7. $user2 = ($user1);
  8. $pass2 = md5($pass1);
  9.  
  10. include("../db_pass.php");
  11. mysql_connect($host,$username,$password);
  12. mysql_select_db($database) or die("Nie odnaleziono bazy danych");
  13. $query="SELECT * FROM account WHERE USER='$user2' and TYP_BAZY='$typ_bazy' and PASSWORD='$pass2'";
  14. $result=mysql_query($query);
  15. $num=mysql_numrows($result);
  16.  
  17. $i=0;
  18. while ($i < $num) {
  19. $user3 = mysql_result($result,$i,"USER");
  20. $pass3 = mysql_result($result,$i,"PASSWORD");
  21. $i++;
  22. }
  23.  
  24. if($pass2 = $pass3){
  25. $pass4 = "$pass2";
  26. }else{
  27. header('Location: index.html');
  28. }
  29.  
  30. if($user2 = $user3){
  31. $user4 = "$user2";
  32. }else{
  33. header('Location: index.html');
  34. }
  35.  
  36.  
  37. function loguj($user, $password){
  38. $users['$user3'] = '$pass3';
  39.  
  40. if($users[$user] == $password && $password != "") {
  41. $_SESSION['is_logged'] = true;
  42. return true;
  43. }
  44. else {
  45. return false;
  46. }
  47. }
  48.  
  49. if(loguj("$user4", "$pass4")){
  50. if(!isset($_SESSION['redirect_to'])) $to = 'startowa.php';
  51. else {
  52. $to = $_SESSION['redirect_to'];
  53. }
  54. header('Location: '.$to);
  55. }
  56. else {
  57. header('Location: index.html');
  58. }
  59. ?>


Nie wiem gdzie jest błąd.
Go to the top of the page
+Quote Post
Rid
post 29.08.2011, 16:44:35
Post #2





Grupa: Zarejestrowani
Postów: 715
Pomógł: 47
Dołączył: 5.12.2010

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


Niech Pan spróbuje tak:
  1. $users['$user3'] = '$pass3'; zamienić
  2. na
  3. $users['$user3'] = $pass3;


  1. $_SESSION['is_logged'] = true;
  2. zamienić na:
  3. $_SESSION['is_logged'] = "true";
,nie wiem czy to pomoże,ale spróbować można.

Ten post edytował Rid 29.08.2011, 16:49:59
Go to the top of the page
+Quote Post
!*!
post 29.08.2011, 16:52:30
Post #3





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Sprawdzanie loginu i hasła jest co najmniej dziwne i to:

  1. if($users[$user] == $password && $password != "")


CZyli mogę wpisać " " (x2) i przejdzie? Poza tym user jest porównaniem do hasła?

Ten post edytował !*! 29.08.2011, 16:53:25


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
przemo191
post 29.08.2011, 16:55:54
Post #4





Grupa: Zarejestrowani
Postów: 154
Pomógł: 3
Dołączył: 1.08.2011

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


Cytat(!*! @ 29.08.2011, 17:52:30 ) *
Sprawdzanie loginu i hasła jest co najmniej dziwne i to:

  1. if($users[$user] == $password && $password != "")


CZyli mogę wpisać " " (x2) i przejdzie? Poza tym user jest porównaniem do hasła?


Właśnie nie wiem jak to zrobić inaczej ;(

@Rid - niestety nie działa
Go to the top of the page
+Quote Post
!*!
post 29.08.2011, 16:58:08
Post #5





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Podstawy. Poczytaj o isset, empty, trim na php.net i poszukaj jakiegoś gotowego rozwiązania jeśli chodzi o logowanie, bo to co podałeś wyżej jest... po co ta pętla? i w ogóle dużo tych $passX.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
przemo191
post 29.08.2011, 16:59:33
Post #6





Grupa: Zarejestrowani
Postów: 154
Pomógł: 3
Dołączył: 1.08.2011

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


Nie mówię, że ten skrypt ma sens wink.gif Tylko że nie działa i nie wiem czemu. Czyżby przez to że właśnie to jest bez sensu?
Go to the top of the page
+Quote Post
Rid
post 29.08.2011, 16:59:45
Post #7





Grupa: Zarejestrowani
Postów: 715
Pomógł: 47
Dołączył: 5.12.2010

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


  1. if($pass2 = $pass3){
  2. $pass4 = "$pass2";
  3. }else{
  4. header('Location: index.html');
  5. }
  6.  
  7. if($user2 = $user3){
  8. $user4 = "$user2";
  9. }else{
  10. header('Location: index.html');
  11. }


ni wiem czy dobrze wnioskuję ,ale jeśli $pass2=$pass3 to
$pass4 przyrównaj napis $pass2.Nie wiem czy dobrze wnioskuję ,ja tam przyzwyczaiłem się już do rzutowania typów danych w c#-ciężko mi już powiedzieć czy to napis czy zmienna. blink.gif

Ten post edytował Rid 29.08.2011, 17:01:35
Go to the top of the page
+Quote Post
przemo191
post 29.08.2011, 17:04:37
Post #8





Grupa: Zarejestrowani
Postów: 154
Pomógł: 3
Dołączył: 1.08.2011

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


$pass2 to jest to co użytkownik wpiszę do formularza i jest to kodowane przez md5
$pass3 jest to hasło w postaci md5 wyciągnięte z bazy danych.
Go to the top of the page
+Quote Post
!*!
post 29.08.2011, 17:05:00
Post #9





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Tak w skrócie... Robisz odwołanie do bazy, potem nie wiadomo po co pętle, następnie sprawdzasz hasło z hasłem, usera z userem, żeby później sprawdzić usera z hasłem. To już brzmi kiepsko wink.gif

  1. $sql="SELECT login,password FROM user WHERE login='$myusername' and password='$mypassword'";
  2. $result=mysql_query($sql);
  3.  
  4. $count=mysql_num_rows($result);
  5.  
  6. if($count==1){
  7. echo 'zalogowany porpawnie';
  8. }
  9. else {
  10. echo 'zle haslo lub login';
  11. }


Przed wysłaniem sprawdź czy w ogóle istnieją.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
przemo191
post 29.08.2011, 17:28:14
Post #10





Grupa: Zarejestrowani
Postów: 154
Pomógł: 3
Dołączył: 1.08.2011

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


Coś mi się wydaje że sam tego nie naprawię. Mógłbym prosić o jakiś link lub lekturkę z systemem logowania połączoną z bazą danych.

Ten post edytował przemo191 29.08.2011, 17:29:23
Go to the top of the page
+Quote Post
!*!
post 30.08.2011, 08:04:08
Post #11





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Google na forum też już było sporo tematów i rozwiązań.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
nospor
post 30.08.2011, 08:58:12
Post #12





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




Cytat
Coś mi się wydaje że sam tego nie naprawię.
Przecież w swoim przedostatnim poście !*! podał ci rozwiązanie. To jest cały kod. Jedyne co musisz zrobić to wstawić swoje dane w ten kod.

Cytat
$_SESSION['is_logged'] = true;
zamienić na:
$_SESSION['is_logged'] = "true";
Nie za bardzo rozumiem.... niby w czym ma pomóc zamiana TRUE (wartość logiczna, mówiąca czy coś jest prawdą czy nie) na tekst 'TRUE'?

@przemo191 zapoznaj się dodatkowo z podstawami php, bo leżysz na tym totalnie.
if($user2 = $user3){
To nie jest porównanie.
To jest porównanie:
if($user2 == $user3){

'$pass3' - to jest tekst $pass3
$pass3 - to jest zmienna $pass3

Nie strzelaj kodem na chybił trafił tylko patrz co piszesz.


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

"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

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: 12.06.2025 - 18:47