Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Skrypt logowania.
Forum PHP.pl > Forum > Przedszkole
ArekJ
Witam stworzyłem prosty skrypt logowania, ale nie działa :/ A dokładnie wyświetla się:

Cytat
Nieprawid?owa nazwa u?ytkownika lub has?o


na krzaczki nie zwracać uwagi potem poprawie tongue.gif Hasło jest poprawne i login też. Brzmią one TEST TEST. Strona na której możecie zobaczyć formularz to:

http://swiat-magii.pl/login.php

a kod skryptu to:

  1. <?
  2.  
  3.  
  4. require_once('konfiguracja.php');
  5.  
  6.   $message="";
  7.                  
  8.  
  9. $login=$_POST['login'];
  10. if($login) {
  11.  
  12. $login = htmlspecialchars(strip_tags($_POST['login']));
  13. $haslo = htmlspecialchars(strip_tags(md5($_POST['haslo'])));
  14.  
  15. $rezultat=mysql_query("select * FROM uzytkownik WHERE uzytkownik='$login' AND haslo='$haslo'");
  16.   if(@mysql_num_rows($rezultat) == 1){
  17.  $_SESSION['login']=
  18.   header("locatio:index.php");
  19. }else {
  20. $message="Nieprawid?owa nazwa u?ytkownika lub has?o";
  21. }
  22. }
  23. ?>
  24.  
  25.  
  26. <head>
  27.  
  28. <title>Dokument</title>
  29. </head>
  30. <body>
  31. <? echo $message; ?>
  32.  
  33. <form id="form1" name="form1" method="post" action="<? echo $PHP_SELF; ?>">
  34.  
  35. <input name="uzytkownik" type="text" id="login" />
  36. <input name="haslo" type="password" id="haslo" />
  37.  
  38. <input name="login" type="submit" id="login" value="login" />
  39. </form>
  40.  
  41. </body>
  42. </html>


Ma ktoś jakieś sugestie gdzie tkwi problem?
Lion_87
ok pytania:

masz jego haslo zapisane w md5?
co to w kodzie jest?
Cytat
$_SESSION['login']=
]

i sprawdz dajac przed $rezultat=mysql_query polaczenie z baza



p.S.
Cytat
<input name="uzytkownik"
ArekJ
No hasło mam zapisane w md5, a jak sprawdzić połączenie?

O.O dzięki za wyłapanie błędu jak wrócę z pod prysznica to sprawdze smile.gif
Lion_87
masz <input name="uzytkownik"

a nie powinno byc login??
ArekJ
Poprawiłem, ale nadal występuje ten sam błąd :/
Może ktoś jeszcze coś zauważył?
melkorm
  1. <?php
  2.  
  3. require_once('konfiguracja.php');
  4.  
  5. $message="";
  6. if($_POST['submit']) {
  7.    $login = htmlspecialchars(strip_tags($_POST['login']));
  8.    $haslo = htmlspecialchars(strip_tags(md5($_POST['haslo'])));
  9.    $rezultat = mysql_query('SELECT * FROM uzytkownik WHERE uzytkownik = '.$login.' AND haslo = '.$haslo);
  10.    if(@mysql_num_rows($rezultat) == 1){
  11.        header("location  : index.php");
  12.        exit;
  13.    }
  14.    else {
  15.        $message = "Nieprawid?owa nazwa u?ytkownika lub has?o";
  16.    }
  17. }
  18. ?>
  19.  
  20.  
  21. <head>
  22.  
  23. <title>Dokument</title>
  24. </head>
  25. <body>
  26. <? echo $message; ?>
  27.  
  28. <form id="form1" name="form1" method="post" action="<? echo $PHP_SELF; ?>">
  29.  
  30. <input name="login" type="text"  />
  31. <input name="haslo" type="password"  />
  32. <input type="submit" name="submit"  value="1" />
  33. </form>
  34.  
  35. </body>
  36. </html>


Troche poprawione. SParwdź czy napewno w bazie nazwy pól są takei same jak w zapytaniu snitch.gif
ArekJ
"Poprawiłem" kody wygląda tak:

  1. <?php
  2.  
  3. include('konfiguracja.php');
  4.  
  5. $message="";
  6. if($_POST['submit']) {
  7.   $login = htmlspecialchars(strip_tags($_POST['login']));
  8.   $haslo = htmlspecialchars(strip_tags(md5($_POST['haslo'])));
  9.   $rezultat=mysql_query("select * FROM uzytkownik WHERE login='$login' AND haslo='$haslo'");
  10.   if(@mysql_num_rows($rezultat) == 1){
  11.       header("location  &nbsp: index.php");
  12.       exit;
  13.   }
  14.   else {
  15.       $message = "Nieprawid?owa nazwa u?ytkownika lub has?o";
  16.   }
  17. }
  18. ?>
  19.  
  20.  
  21. <head>
  22.  
  23. <title>Dokument</title>
  24. </head>
  25. <body>
  26. <? echo $message; ?>
  27.  
  28. <form id="form1" name="form1" method="post" action="<? echo $PHP_SELF; ?>">
  29.  
  30. <input name="login" type="text"  />
  31. <input name="haslo" type="password"  />
  32. <input type="submit" name="submit"  value="1" />
  33. </form>
  34.  
  35. </body>
  36. </html>


a nadal nie działa :/ Zastanawiam się co może być nie tak, bo nadal wywala, że nie można się zalogować...
Lion_87
  1. <?php
  2. //...
  3. $haslo = htmlspecialchars(strip_tags(md5($_POST['haslo'])));
  4.  
  5. // wstaw tu dla sprawdzenia polaczenie z baza
  6.  
  7.  $rezultat=mysql_query("select * FROM uzytkownik WHERE login='$login' AND haslo='$haslo'");
  8. //...
  9. ?>
ArekJ
nadal to samo...
melkorm
wstaw za połączeniem

  1. <?php
  2. mysql_select_db("nazwBazy");
  3. ?>


I możesz wywalić tą małpe zprzed mysql_num_rows która zakrywałą błąd ;]
ArekJ
Żadnego błędu nie wywala, ani jak jest to dodatkowe wybranie bazy ani bez tego :/ Może w tym skrypcie czegoś brakuje? Albo jest taki dokitu, że nie ma prawa zadziałać tongue.gif
Lion_87
a daj po session_start()

to

  1. <?php
  2. @$polaczenie = mysql_pconnect("127.0.0.1","---","---");
  3.  if (!$polaczenie) {
  4.    echo "Nie udało się nawiązać połączenia z serwerem.";
  5.    exit;
  6.   }
  7.  mysql_select_db("---");
  8.  if(!mysql_select_db("---")) {
  9.   echo "Nie udało się połączyć z bazą";
  10.   exit;
  11.  }
  12.  $zapytanie = "select * FROM uzytkownik WHERE login='$login' AND haslo='$haslo'";
  13.  $wynik = mysql_query($zapytanie);
  14. echo"$zapytanie";
  15. ?>


i napisz co wyswietlilo
melkorm
przetestowałem to u siebie i działa - więc problem musisz mieć w bazie smile.gif
ArekJ
Pewnie mi coś źle skrypt rejestracyjny dodaje :/ A wygląda on tak:

  1. <?
  2.    els:
  3.        
  4. $login = htmlspecialchars(strip_tags($_POST['login']));
  5. $haslo = htmlspecialchars(strip_tags(md5($_POST['haslo'])));
  6. $email = htmlspecialchars(strip_tags($_POST['email']));
  7.  
  8.  if (!check_email($_POST['email']) || $_POST['login']=='' || $_POST['haslo']=='' || $_POST['email']=='') {
  9.  
  10.      error('Błąd podczas wypełniania formularzu! Popraw go i spróbuj ponownie. Możliwe błęd:    \n'.'-puste pole,\n'.'-błędny e-mail.');
  11.  
  12.  }
  13.  
  14.  
  15.  $sql = 'SELECT COUNT(*) FROM uzytkownik WHERE login = "'.mysql_real_escape_string($login).'"';
  16. $sql = 'SELECT COUNT(*) FROM uzytkownik WHERE login = "'.mysql_real_escape_string($haslo).'"';
  17.  $sql = 'SELECT COUNT(*) FROM uzytkownik WHERE login = "'.mysql_real_escape_string($email).'"';
  18.  
  19.  
  20.  $result = mysql_query($sql);
  21.  
  22.      if (!$result) {
  23.  
  24.          error('Błąd w zapytaniu SQL');
  25.  
  26.      }
  27.  
  28.      if (@mysql_result($result,0,0)>0) {
  29.          error('Wybrany login jest zajęty. \n'.
  30.          'Proszę wpisać inny login. ');
  31.      }
  32.  
  33.  
  34.      $sql = 'INSERT INTO uzytkownik SET login = "'.mysql_real_escape_string($login).'", haslo = md5("'.$_POST['haslo'].'"), email = "'.mysql_real_escape_string($email).'"';
  35.  
  36.          if (!mysql_query($sql)) error('Błąd w zapytaniu SQL');
  37.  
  38.          echo('<HTML>
  39.              <HEAD>
  40.              <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
  41.              <TITLE>Rejestracja zakończona</TITLE>
  42.              <STYLE type=\"text/css\">
  43.              <!--
  44.              BODY, { fo: 8pt; font-famil: Verdana, Arial; text-decoratio: none }
  45.              -->
  46.              </STYLE>
  47.              </HEAD>
  48.              <BODY>
  49.              <P><B>Rejestracja zakończona pomyślnie!</B></P>
  50.                <P>Logi: <B>'.$_POST['login'].'</B><BR>
  51.                Hasło: <B>'.$_POST['haslo'].'</B></P><br /><br /><br /><br /><br /><br />
  52.          ');
  53.    endif
  54.    ?>
melkorm
EH. podaj wiersz bazy gdzie masz swojego użytkownika test winksmiley.jpg I podaj dane jakie podałeś w formularzu ;]
Lion_87
  1. <?
  2.  
  3.  
  4. require_once('konfiguracja.php');
  5.  
  6.  $message="";
  7.                
  8.  
  9. $login=$_POST['login'];
  10. if($login) {
  11.  
  12. $login = htmlspecialchars(strip_tags($_POST['login']));
  13. $haslo = htmlspecialchars(strip_tags(md5($_POST['haslo'])));
  14.  
  15. @$polaczenie = mysql_pconnect("127.0.0.1","--","--");
  16.  if (!$polaczenie) {
  17.    echo "Nie udało się nawiązać połączenia z serwerem.";
  18.    exit;
  19.   }
  20.  mysql_select_db("--");
  21.  if(!mysql_select_db("--")) {
  22.   echo "Nie udało się połączyć z bazą";
  23.   exit;
  24.  }
  25.  
  26. $zapytanie = mysql_query("select * FROM uzytkownik WHERE uzytkownik='$login' AND haslo='$haslo'");
  27. $login = mysql_fetch_array($zapytanie);
  28. $num_rows = mysql_num_rows($zapytanie);
  29.  
  30.  if($num_rows == 1){
  31.  header("Locatio: index.php");
  32.      exit;
  33.  }
  34.  else {
  35.      $message = "Nieprawid?owa nazwa u?ytkownika lub has?o";
  36.  }
  37. }
  38. ?>
  39.  
  40.  
  41. <head>
  42.  
  43. <title>Dokument</title>
  44. </head>
  45. <body>
  46. <? echo $message; ?>
  47.  
  48. <form id="form1" name="form1" method="post" action="<? echo $PHP_SELF; ?>">
  49.  
  50. <input name="login" type="text" id="login" />
  51. <input name="haslo" type="password" id="haslo" />
  52.  
  53. <input type="submit" id="login" value="login" />
  54. </form>
  55.  
  56. </body>
  57. </html>




Cytat
if(@mysql_num_rows($rezultat) == 1)

P.S. moze masz wiecej poprostu uzytkownikow TEST w bazie niz 1

i

dodaj n bo forum zjadlo
Cytat
header("Locatio
<------
ArekJ
Eh... wstawiłem kod Lion_87, ale nie działa :/ Może ktoś ma link do jakiegoś gotowego DZIAŁAJĄCEGO ( winksmiley.jpg ) Skryptu rejestracji?
Lion_87
-Czy w tabeli masz tylko jednego uzytkownika TEST?
-Zrob echo "$zapytanie"; po zapytaniu i pokaz wynik.
ArekJ
Jest tylko 1 użytkownik TEST, skrypt rejestracji mi to sprawdza :]
A jak daje to echo to nic sie nie wyswietla sad.gif
Lion_87
a Gdzie wstawiasz to echo??
ArekJ
  1. <?
  2.  
  3.  
  4. require_once('konfiguracja.php');
  5.  
  6. $message="";
  7.                
  8.  
  9. $login=$_POST['login'];
  10. if($login) {
  11.  
  12. $login = htmlspecialchars(strip_tags($_POST['login']));
  13. $haslo = htmlspecialchars(strip_tags(md5($_POST['haslo'])));
  14.  
  15. @$polaczenie = mysql_pconnect("localhost","root","root");
  16. if (!$polaczenie) {
  17.   echo "Nie uda?o si? nawi?za? po??czenia z serwerem.";
  18.   exit;
  19.  }
  20. mysql_select_db("swiatmagii");
  21. if(!mysql_select_db("swiatmagii")) {
  22.  echo "Nie uda?o si? po??czy? z baz?";
  23.  exit;
  24. }
  25.  
  26. $zapytanie = mysql_query("select * FROM uzytkownik WHERE uzytkownik='$login' AND haslo='$haslo'");
  27. echo "$zapytanie";
  28. $login = mysql_fetch_array($zapytanie);
  29. $num_rows = mysql_num_rows($zapytanie);
  30.  
  31. if($num_rows == 1){
  32. header("Locatio: index.php");
  33.     exit;
  34. }
  35. else {
  36.     $message = "Nieprawid?owa nazwa u?ytkownika lub has?o";
  37. }
  38. }
  39. ?>
  40.  
  41.  
  42. <head>
  43.  
  44. <title>Dokument</title>
  45. </head>
  46. <body>
  47. <? echo $message; ?>
  48.  
  49. <form id="form1" name="form1" method="post" action="<? echo $PHP_SELF; ?>">
  50.  
  51. <input name="login" type="text" id="login" />
  52. <input name="haslo" type="password" id="haslo" />
  53.  
  54. <input type="submit" id="login" value="login" />
  55. </form>
  56.  
  57. </body>
  58. </html>
Lion_87
no tak CI nie wyswietli

musisz zamiast
  1. <?php
  2. $zapytanie = mysql_query("select * FROM uzytkownik WHERE uzytkownik='$login' AND haslo='$haslo'");
  3. echo "$zapytanie";
  4. $login = mysql_fetch_array($zapytanie);
  5. $num_rows = mysql_num_rows($zapytanie);
  6. ?>


wstaw to

  1. <?php
  2. $zapytanie = "select * FROM uzytkownik WHERE uzytkownik='$login' AND haslo='$haslo'";
  3.  $wynik = mysql_query($zapytanie);
  4. echo "$zapytanie";
  5. $login = mysql_fetch_array($wynik);
  6. $num_rows = mysql_num_rows($wynik);
  7. ?>
ArekJ
wywala:

Kod
select * FROM uzytkownik WHERE login='TEST' AND haslo='033bd94b1168d7e4f0d644c3c95e35bf' Nieprawid?owa nazwa u?ytkownika lub has?o


I to hasło nie wygląda mi na te zapisane w bazie danych...

Bo w bazie jest

Kod
033bd94b1168d7e4


Czyli gdzieś w tym skrypcie jest błąd...
Lion_87
a jaka max ilosc znakow masz w kolumnie haslo ? o.O
ArekJ
A w morde! 16-cie :/ Muszę do nowa baze założyć sad.gif No dobra, ale mam nadzieje, że to pomoże...
Lion_87
pomoze pomoze smile.gif
ArekJ
Zadziałało smile.gif Dziękuje!!! A i jeszcze mam pytanie. Jak zrobić, żeby na daną stronę miał dostęp tylko zalogowany?
Lion_87
hmmm mozesz np

przy logowaniu zapisywac cookie(Uhaslo) z haslem usera a potem

  1. <?php
  2. @$polaczenie = mysql_pconnect("127.0.0.1","---", "---");
  3.  if (!$polaczenie) {
  4.    echo "Nie udało się nawiązać połączenia z serwerem.";
  5.    exit;
  6.   }
  7.  mysql_select_db("---");
  8.  if(!mysql_select_db("---")) {
  9.   echo "Nie udało się połączyć z bazą";
  10.   exit;
  11.  }
  12.  
  13. $zapytanie = "select * from uzytkownik where haslo='".$_COOKIE["Uhaslo"]."'";
  14. $wynik = mysql_query($zapytanie);
  15. $team = mysql_fetch_array($wynik);
  16. $user_ses = stripslashes($team['haslo']);  
  17.    
  18. if($_COOKIE["Uhaslo"] == $user_ses) {
  19.   include "strona.htm";
  20.  }
  21.  else {
  22.   echo "NIE MASZ DOSTEPU.";
  23.  }
  24.  break;
  25. ?>
ArekJ
A na sesjach można?
Lion_87
no mozna tylko po co CI sesje lepiej cookie
ArekJ
Dobra, to zaraz zobacze to cookie. I jeszcze mam pytanie ile dać miejsca na hasło 100 wystarczy?
Lion_87
hmm mozesz dac i 100 a mozesz i sprawdzic jak wtgladaj md5 roznych dlugosci hasel

  1. <?php
  2. $user_ses = "lalala";
  3. $user_ses2 = md5($user_ses);  
  4.  
  5.   echo "$user_ses2<br />";
  6.  
  7. $user_ses3 = "jakkajakjjghjfgjfghjfak";
  8. $user_ses4 = md5($user_ses3);  
  9.  
  10.   echo "$user_ses4";
  11. ?>
ArekJ
MD5 zauważyłem, że koduje w 32 znakach(nie ważne jak długie hasło to ma 32 znaki). A z ciastkami potem zobacze! Lion_87 Bardzo dziękuje za pomoc smile.gif
Lion_87
ZAWSZE CHETNIE POMOGE biggrin.gif
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.