Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> MySQL panel logowania
mith
post 11.05.2006, 19:06:15
Post #1





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 14.04.2006

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


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
Go to the top of the page
+Quote Post
maverickkk
post 11.05.2006, 19:19:39
Post #2





Grupa: Zarejestrowani
Postów: 181
Pomógł: 0
Dołączył: 12.11.2005

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


Było miliony razy na forum. Poszukaj.


--------------------
Robie to co lubie, lubie to co Robie
Go to the top of the page
+Quote Post
mike
post 11.05.2006, 19:38:44
Post #3





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


~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
Go to the top of the page
+Quote Post
mith
post 11.05.2006, 20:24:17
Post #4





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 14.04.2006

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


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?
Go to the top of the page
+Quote Post
mike
post 11.05.2006, 20:38:41
Post #5





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


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.
Go to the top of the page
+Quote Post
mith
post 11.05.2006, 21:06:01
Post #6





Grupa: Zarejestrowani
Postów: 57
Pomógł: 0
Dołączył: 14.04.2006

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


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');
Go to the top of the page
+Quote Post
jezoo
post 12.05.2006, 07:35:24
Post #7





Grupa: Zarejestrowani
Postów: 92
Pomógł: 3
Dołączył: 4.04.2006

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


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. ?>


Ten post edytował jezoo 12.05.2006, 07:36:02
Go to the top of the page
+Quote Post
mike
post 12.05.2006, 08:17:50
Post #8





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


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.
Go to the top of the page
+Quote Post
Nightwalker
post 14.05.2006, 05:46:25
Post #9





Grupa: Zarejestrowani
Postów: 180
Pomógł: 0
Dołączył: 5.02.2006
Skąd: Bytom

Ostrzeżenie: (10%)
X----


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 ;-)

Ten post edytował Nightwalk 14.05.2006, 05:49:01


--------------------
Go to the top of the page
+Quote Post
jezoo
post 19.05.2006, 13:26:52
Post #10





Grupa: Zarejestrowani
Postów: 92
Pomógł: 3
Dołączył: 4.04.2006

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


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
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: 19.06.2025 - 14:20