Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: MySQL panel logowania
Forum PHP.pl > Forum > PHP
mith
Witam
Jak można zrobić panel logowania na stronie pobierając login i hasło z bazy danych.

Szkic bazy danych:

login: | haslo:

login1 | haslo1
login2 | haslo2
login3 | haslo3
maverickkk
Było miliony razy na forum. Poszukaj.
mike
~maverickkk bardzo konstruktywna wypowiedź.
Postaraj sie takich mniej udzielać.

~mith robisz prosty formularz, którym prześlesz dane: login i hasło.
A potem już proste
  1. <?php
  2.  
  3. // połącznie z serwerem bazy
  4. $resDBConnection = mysql_connect( 'localhost', 'user', 'pass' );
  5.  
  6. // wybór bazy danych
  7. mysql_select_db( 'db', $resDBConnection );
  8.  
  9. // przygotowanie zapytania i wykonanie go
  10. $strSQL = "SELECT * FROM users WHERE login = '" . $_POST[ 'login' ] . "' AND haslo = '" . $_POST[ 'pass' ] . "'";
  11. $resQuesryResult = mysql_query( $strSQL, $resDBConnection );
  12.  
  13. // jesli są wyniki to znaczy że jest taki użytkownik
  14. if( mysql_num_rows( $resQuesryResult ) > 0 )
  15. {
  16. echo 'Jest taki użytkownik';
  17. }
  18. else
  19. {
  20. echo 'Nie ma takiego użytkownika';
  21. }
  22.  
  23. ?>


Kod ten oczywiście musisz wzbogacic o formularz, który pojawi się w zależności od tego czy ktoś jest już zalogowany czy nie.
Potrzebna Ci będzie też sesja, aby wiedzieć że użytkownik już się zalogował.

Poczytasz o tym w manualu i na forum.

Powodzenia
mith
Wielkie dzięki mike_mech.
Stworzyłem coś takiego:

  1. <?
  2. $dbhost = "...";
  3. $db = "...";
  4. $dbuser = "...";
  5. $dbpass = "...";
  6.  
  7. $connection = mysql_connect($dbhost, $dbuser, $dbpass) or die ("Błąd: Nie można połączyć się z bazą MySQL");
  8. mysql_select_db($db, $connection) or die ("Błąd: Nie można wybrać bazy MySQL");
  9.  
  10. $login = $_POST['login'];
  11. $pass = $_POST['pass'];
  12.  
  13. if ( isset( $_SESSION['login'] ) )
  14. {
  15. print('Zalogowany');
  16. } else {
  17.  
  18. $strSQL = "SELECT * FROM konta WHERE login = '.$login.' AND haslo = '.$pass.'";
  19. $resQuesryResult = mysql_query( $strSQL, $connection );
  20. if( mysql_num_rows( $resQuesryResult ) > 0 )
  21. {
  22. $_SESSION['login'] = $login;
  23. } else {
  24. <form method="POST">
  25. <p><input type="text" name="login" size="20"></p>
  26. <p><input type="text" name="pass" size="20"></p>
  27. <p><input type="submit" value="Prześlij" name="B1"><input type="reset" value="Resetuj" name="B2"></p>
  28. </form>
  29. ');
  30. }
  31. }
  32. ?>


Ale cokolwiek wpisze to i tak wyświetla mi ten formularz w którym podaje się login i hasło.
Co tu może być źle?
mike
Porównaj $strSQL u mnie i u Ciebie. Masz tam błąd.
Poczytaj tutaj Łańcuchy znaków (string) jeśli nie widzisz błędu.

P.S.
Nie lepiej tak:
  1. <?php
  2.  
  3. if( mysql_num_rows( $resQuesryResult ) > 0 )
  4. {
  5.  $_SESSION['login'] = $login;
  6. } else {
  7. ?>
  8. <form method="POST">
  9. <p><input type="text" name="login" size="20"></p>
  10. <p><input type="text" name="pass" size="20"></p>
  11. <p><input type="submit" value="Prześlij" name="B1"><input type="reset" value="Resetuj" name="B2"></p>
  12. </form>
  13. <?php
  14. }
  15. ?>

Kod HTML jest przejrzystszy.
mith
No już jest trochę lepiej logować się zaloguje ale chyba te sesje gubi bo jak przejdę do innego działu to on znowu wyświetla mi ten formularz gdzie mam podał login i hasło. A nie wyświetla mi tego komunikatu co występuje w:

print('Zalogowany');
jezoo
mith session_start() zdeklaruj zaraz na poczatku po
<?

i musisz pamietac o sptawdzaniu sesji, czyli na kazdej stronie skryptu musi byc:
  1. <?php
  2.  
  3. if(issest($_SESSION['login']))
  4. {
  5. echo "zawartos dla autoryzowanych";
  6. }
  7. else
  8. {
  9.  echo "Podaj dane do zalogowania";
  10.  // Formularz logowania
  11. }
  12.  
  13. ?>
mike
Cytat(jezoo @ 2006-05-12 08:35:24)
mith session_start() zdeklaruj zaraz na poczatku po
<?

~jezoo a jakie to ma znaczenie w tej sytuacji?
To nie ma różnicy czy odpalisz sesję po połączeniu z bazę czy przed tym.

Istotne jest to żeby zainicjować sesje przed tym jak zaczniesz z niej korzystać oraz zanim wyślesz tekst do przglądarki.
Nightwalker
To jest mój pierwszy skrypt logowania z baza mySQL, może się komuś przyda:

  1. <?php
  2.  
  3.  
  4. ?>
  5. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  6. <html xmlns="http://www.w3.org/1999/xhtml">
  7. <head>
  8. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  9. <title>Untitled Document</title>
  10. <style type="text/css">
  11. <!--
  12. body,td,th {
  13. color: #CCCCCC;
  14. font-family: Verdana, Arial, Helvetica, sans-serif;
  15. font-size: 14px;
  16. }
  17. body {
  18. background-color: #000000;
  19. }
  20. a {
  21. font-family: Arial, Helvetica, sans-serif;
  22. color: #CCCCCC;
  23. font-weight: bold;
  24. }
  25. a:link {
  26. text-decoration: none;
  27. }
  28. a:visited {
  29. text-decoration: none;
  30. color: #CCCCCC;
  31. }
  32. a:hover {
  33. text-decoration: underline;
  34. color: #999999;
  35. }
  36. a:active {
  37. text-decoration: none;
  38. color: #FFFFFF;
  39. }
  40. input {
  41. font-family:"Courier New", Courier, monospace;
  42. background:#999999;
  43. color:#FFFFFF;
  44. border:1px solid #FFFFFF;
  45. margin:1px;
  46. padding-left:1px;
  47. padding-right:2px;
  48. }
  49. .error-box {
  50. border:1px solid #FFFFFF;
  51. background:#999999;
  52. text-align:left;
  53. vertical-align:middle;
  54. padding-top:7px;
  55. padding-left:7px;
  56. }
  57. -->
  58. </style></head>
  59.  
  60. <body>
  61. <?php
  62.  
  63.  
  64. function error_box($code_number, $code_name)
  65. {
  66. echo '<br /><br /><br /><br /><table width="50%" border="0" cellspacing="0" cellpadding="0" class="error-box" align="center"><tr><td><span style="color:#CC0000;"><b>Błąd '.$code_number.'</b>:<pre>'.$code_name.'</pre></span></td></tr></table>';
  67. }
  68.  
  69. // połącznie z serwerem bazy
  70. $resDBConnection = @mysql_connect( 'localhost', 'Administrator', '' );
  71.  
  72. // wybór bazy danych
  73. if(!@mysql_select_db( 'test', $resDBConnection ))
  74. {
  75. error_box('1', 'Nie można połączyć się z bazą danych.');
  76. exit();
  77. }
  78.  
  79. // przygotowanie zapytania i wykonanie go
  80. $strSQL = "SELECT * FROM forum_members WHERE m_name='" . $_POST[ 'login' ] . "' AND m_password='" . base64_encode($_POST[ 'haslo' ]) ."'";
  81. $resQuesryResult = @mysql_query( $strSQL, $resDBConnection );
  82. $resQueFetch = mysql_fetch_array($resQuesryResult);
  83.  
  84. // jesli są wyniki to znaczy że jest taki użytkownik
  85. if(isset($_POST['Submit']))
  86. {
  87. if( $resQueFetch == TRUE )
  88. {
  89. echo '<p align="center">Logowanie przebiegło pomyślnie, przekierowywuje...<br />Jeżeli nie chcesz czekać kliknij <a href="'.$_SERVER['PHP_SELF'].'">tutaj</a>.</p>';
  90. $_SESSION['login'] = $resQueFetch['m_name']; 
  91. header('Refresh: 2; URL="'.$_SERVER['PHP_SELF'].'"');
  92. }
  93. else
  94. {
  95. error_box('2', 'Dane które wprowadziłeś są błędne!');
  96. header ('Refresh: 2; URL="'.$_SERVER['PHP_SELF'].'"');
  97. }
  98. }
  99. elseif(isset($_SESSION['login']))
  100. {
  101. echo 'Witaj w Panelu Admina ' . $_SESSION['login'] . ' !';
  102.  
  103. echo '<form id="form2" name="form2" method="post" action="'.$_SERVER['PHP_SELF'].'"><label><input name="wyloguj" type="submit" id="wyloguj" value="Wyloguj" /></label></form>';
  104.  
  105. if(isset($_POST['wyloguj']))
  106. {
  107. unset( $_SESSION['login'] );
  108. header('Location: ?');
  109. }
  110. }
  111. else
  112. {
  113. echo('Zaloguj się (Twoja przeglądarka musi przyjmować cookies!)<br /><br /><form id="form1" name="form1" method="post" action="'.$_SERVER['PHP_SELF'].'"><label><input name="login" type="text" id="login" /></label>Login<br /><label><input name="haslo" type="password" id="haslo" /></label>Haslo <p><label><input type="submit" name="Submit" value="Loguj" /></label></p></form>');
  114. }
  115.  
  116.  
  117. ?>
  118. </body>
  119. </html>


podziękowania dla mike_mech za naprowadzenie ;-)
jezoo
Cytat(mike_mech)
To nie ma różnicy czy odpalisz sesję po połączeniu z bazę czy przed tym.

~mike_mech
jak stosowalem w srodku skryptu to mi wywalalo blad, ze nie mozna headrea zmienic i takie tam, tak, ze ja stosuje zawsze na poczatku i mi smiga
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.