Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] jak zrobić logowanie?
Forum PHP.pl > Forum > Przedszkole
filip.wil
Mam taki kod (moje raczkowanie w php):
  1. <?php
  2.  
  3. if($_POST['nick'])
  4. {
  5.  
  6. $nicksql = mysql_query("SELECT * FROM userzy WHERE nick LIKE '".$nick."'");
  7. $nickspr = mysql_num_rows($nicksql);
  8.  
  9.  if($nickspr>0)
  10.  { echo "Nick jest zapisany w bazie";
  11. $u=$_POST['nick'];
  12. $p=$_POST['password'];
  13. $query="SELECT username FROM users WHERE username='$u' && password=PASSWORD('$p')";
  14. $result = mysql_query($query);
  15. $roww = mysql_fetch_array($result, MYSQL_NUM);
  16. $_SESSION['admin']='ok';
  17. $_SESSION['user']="$roww[2]";
  18. echo $_SESSION['user'];
  19.  
  20.  
  21.  
  22.  }
  23.  else{echo "Nie ma nicku w bazie.";};
  24. }
  25. else
  26. {
  27. echo "Nie wpisałeś nicku."
  28. ;};
  29.  
  30.  
  31.  
  32.  // $_SESSION['admin']='ok' &&
  33.  // $_SESSION['user']='filip' ;
  34.  // };
  35.  
  36. if(isset($_GET['admin']) && $_GET['admin']=='wyloguj')
  37. {
  38. $_SESSION['admin']='';
  39. $_SESSION['user']='' ;
  40. echo 'Nastąpiło wylogowanie.<br />
  41. Zaloguj ponownie:';
  42. }
  43.  
  44.  
  45. if(isset($_SESSION['admin']) && $_SESSION['admin']=='ok'){
  46.  
  47. echo 'Jestes zalogowany jako filip<br />
  48. <a href="index.php?admin=wyloguj">wyloguj</a>
  49.  
  50.  
  51. ';}
  52.  
  53. else{
  54.  
  55. echo '<form method="POST" action="index.php">
  56. Nick: <input type="text" name="nick" size="20"><br />
  57. Hasło: <input type="password" name="password" size="20">
  58. <input type="submit" value="zaloguj"></p>
  59. </form>
  60. <div>&nbsp;&nbsp;<img src="grafika/kropka.gif" /><a href="index.php?rejestracja=1">rejestracja</a></div>'
  61. ;
  62.  
  63. }
  64.  
  65.  
  66. ?>

i gdy wpiszę nick, który mam zapisany w bazie wyświetla mi się błąd:
Kod
Warning:  mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Program Files\WebServ\httpd\nowa\logowanie.php on line 15

Chciałbym, żeby po wpisaniu nicku sprawdziło czy jest w bazie, potem sprawdziło, czy hasło odpowiada nickowi i dodalo sesje (nick = 'nick zalogowanego' i admin=ok - to sie zmieni jak dodam konta admina). Jak to rozwiązać? Wiem, że teraz jest źle, ale jeszcze nic konkretnego nie potrafię w php...


Głównie chodzi mi o to jak zrobić od 10 do 18 linijki smile.gif Dajcie chociaz jakąś wskazowke
Fishu
Heh wystarczy pomyśleć.Linijke wyżej w zmiennej $result masz błąd.Ponieważ zamiast:
  1. <?php
  2. $query="SELECT username FROM users WHERE username='$u' && password=PASSWORD('$p')";
  3. ?>

Zmień na takie coś:
  1. <?php
  2. $query="SELECT * FROM users WHERE username='$u' && password=PASSWORD('$p')";
  3. ?>

Poprostu zmień SELECT username na SELECT *.Bo po co masz robić tablice jak zaznaczyłeś tylko jedno pole ? tongue.gif
Garrappachc
Najpierw piszesz
  1. $nicksql = mysql_query("SELECT * FROM userzy WHERE nick LIKE '".$nick."'");

(bierzesz z tebeli USERZY)
a potem
  1. $query="SELECT username FROM users WHERE username='$u' && password=PASSWORD('$p')";

(bierzesz z tabeli USERS)
Jak masz jakiś problem z niedziałającym kodem, to go najpierw sprawdź litera po literze rolleyes.gif  
Cytat(Fishu)
Poprostu zmień SELECT username na SELECT *.Bo po co masz robić tablice jak zaznaczyłeś tylko jedno pole ?

A nieprawda to działa, nawet  bardzo często tak robie.
filip.wil
Ciągle ten sam błąd. Teraz mam
  1. <?php
  2.  
  3. if($_POST['nick'])
  4. {
  5.  
  6. $nicksql = mysql_query("SELECT * FROM userzy WHERE nick LIKE '".$nick."'");
  7. $nickspr = mysql_num_rows($nicksql);
  8.  
  9.  if($nickspr>0)
  10.  { echo "Nick jest zapisany w bazie";
  11. $u=$_POST['nick'];
  12. $p=$_POST['password'];
  13. $query="SELECT nick FROM userzy WHERE username='$u' && password=PASSWORD('$p')";
  14. $result = mysql_query($query);
  15. $roww = mysql_fetch_array($result, MYSQL_NUM);
  16. $_SESSION['admin']='ok';
  17. $_SESSION['user']="$roww[2]";
  18. echo $_SESSION['user'];
  19.  
  20.  
  21.  
  22.  }
  23.  else{echo "Nie ma nicku w bazie.";};
  24. }
  25. else
  26. {
  27. echo "Nie wpisałeś nicku."
  28. ;};
  29. ?>

Możecie mi od początku napisać jak zrobić coś takiego?
Dokładnie chciałbym, żeby po wpisaniu nicku znalazło go w bazie danych, potem porównało czy nick=hasło, a potem dało jako sesje "nick". Nie wiem jak sie za to zabrac....
Fishu
Mógłbyś podać błąd jaki ci wywala ? byłoby łatwiej myśleć i szukać gdzie błąd tongue.gif
filip.wil
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\Program Files\WebServ\httpd\nowa\logowanie.php on
line 15
Fishu
Daj taki kod:
  1. <?php
  2. if($_POST['nick'])
  3. {
  4.  
  5. $nicksql = mysql_query("SELECT * FROM userzy WHERE nick LIKE '".$nick."'");
  6. $nickspr = mysql_num_rows($nicksql);
  7.  
  8.  if($nickspr>0)
  9.  { echo "Nick jest zapisany w bazie";
  10. $u=$_POST['nick'];
  11. $p=$_POST['password'];
  12. $query="SELECT * FROM userzy WHERE username='$u' && password=PASSWORD('$p')";
  13. $result = mysql_query($query);
  14. $roww = mysql_fetch_array($result, MYSQL_NUM);
  15. $_SESSION['admin']='ok';
  16. $_SESSION['user']="$roww[2]";
  17. echo $_SESSION['user'];
  18.  
  19.  
  20.  
  21.  }
  22.  else{echo "Nie ma nicku w bazie.";};
  23. }
  24. else
  25. {
  26. echo "Nie wpisałeś nicku."
  27. ;};
  28. ?>
filip.wil
ciągle to samo...

Może ktoś napisze od nowa kod, gdzie znajduje w bazie nick który wpisalem, sprawdza czy wpisane haslo pasuje do niego i jesli wszystko ok daje sesje o ktorych mowilem? Bylbym baaaardzo wdzieczny winksmiley.jpg

EDIT: Nikt nie umie mi pomoc? sad.gif
dadexix
  1. <?php
  2. if(isset($_POST['nick']) && isset($_post['pass'])
  3. {
  4.  
  5. $sql = mysql_fetch_array(mysql_query("SELECT * FROM `userzy` WHERE `nick`='".$_post['nick']."' and `password`=PASSWORD('". $_post['pass'] . "')"));
  6.  
  7.  if($sql>0)
  8.  { echo "Nick jest zapisany w bazie";
  9. $_SESSION['admin']='ok';
  10. $_SESSION['user']="$sql['nick']";
  11. echo $_SESSION['user'];
  12.  
  13.  
  14.  
  15.  }
  16.  else{echo "nick lub haslo są nie prawidłowe";};
  17. }
  18. else
  19. {
  20. echo "Nie wypełniłeś wszystkich pól";
  21. }
  22.  
  23.  
  24.  
  25.  // $_SESSION['admin']='ok' &&
  26.  // $_SESSION['user']='filip';
  27.  // };
  28.  
  29. if(isset($_GET['admin']) && $_GET['admin']=='wyloguj')
  30. {
  31. $_SESSION['admin']='';
  32. $_SESSION['user']='';
  33. echo 'Nastąpiło wylogowanie.<br />
  34. Zaloguj ponownie:';
  35. }
  36.  
  37.  
  38. if(isset($_SESSION['admin']) && $_SESSION['admin']=='ok'){
  39.  
  40. echo 'Jestes zalogowany jako " . $_session['user'] . "<br />
  41. <a href="index.php?admin=wyloguj">wyloguj</a>
  42.  
  43.  
  44. ';}else{
  45.  
  46. echo '<form method="POST" action="index.php">
  47. Nick: <input type="text" name="nick" size="20"><br />
  48. Hasło: <input type="password" name="password" size="20">
  49. <input type="submit" value="zaloguj"></p>
  50. </form>
  51. <div>&nbsp;&nbsp;<img src="grafika/kropka.gif" /><a href="index.php?rejestracja=1">rejestracja</a></div>'
  52. ;
  53.  
  54. }
  55. ?>


Nie zapewniaqm że działa:P
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.