Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]logowanie problem
Forum PHP.pl > Forum > Przedszkole
ArturEales
Witam mam problem ze skryptem logowania. Problem polega na tym że po poprawnym zalogowaniu chciałbym pobrać nazwę użytkownika i przypisać do zmiennej np $user próbowałem tak:


  1. <?php
  2. //plik konfiguracyjny
  3. //Logowanie do Bazy Danych
  4. $connection = @mysql_connect('0', '0', '0');
  5. $db = @mysql_select_db('0', $connection);
  6.  
  7.  
  8. $intTimeoutSeconds = 1800;
  9.  
  10. if(isset($_SESSION['intLastRefreshTime']))
  11. {
  12. if(($_SESSION['intLastRefreshTime']+$intTimeoutSeconds)<time())
  13. {
  14. }
  15. }
  16. $_SESSION['intLastRefreshTime'] = time();
  17.  
  18. if(isset($_POST['logowanie'])) {
  19.  
  20. $dane = @mysql_query('SELECT login, haslo FROM user WHERE login = "'.$_POST['login'].'" AND haslo = "'.$_POST['haslo'].'"') or die(mysql_error());
  21.  
  22. if(mysql_num_rows($dane) == 1) {
  23. $_SESSION['logowanie'] = 'poprawne';
  24. $user = $_POST['login']; //TUTAJ !!!!
  25. } else {
  26. $_SESSION['logowanie'] = 'Błędny login lub hasło!';
  27. }
  28.  
  29. unset($_POST['logowanie']);
  30. }
  31.  
  32. if(isset($_POST['wylogowanie'])) {
  33.  
  34. unset($_SESSION['logowanie']);
  35. unset($_POST['wylogowanie']);
  36. }
  37.  
  38.  
  39. function wyloguj()
  40. {
  41. if($_SESSION['logowanie'] == 'poprawne')
  42. {
  43. $string = '
  44. <style type="text/css" media="screen">
  45. input.submit {
  46. background:url(images/p01.gif) no-repeat #000000;
  47. border:none;
  48. width: 100px;
  49. height: 25px;
  50. color:#FFFFFF;
  51. font-size:14px;
  52. font-weight:700;
  53. font-family:cursive;
  54. }
  55.  
  56. input.submit:hover {
  57. background:url(images/p02.gif) no-repeat #804040;
  58. border:none;
  59. width: 100px;
  60. height: 25px;
  61. color:#FFFFFF;
  62. font-size:14px;
  63. font-weight:700;
  64. font-family:cursive;
  65. }
  66. </style>';
  67.  
  68.  
  69. $string .= '<form action="'.getenv(REQUEST_URI).'" method="post">';
  70. $string .= ' <table>';
  71. $string .= ' <tr>';
  72. $string .= ' <td>';
  73. $string .= ' <input type="submit" name="wylogowanie" value="Wyloguj" class="submit" />';
  74. $string .= ' </td>';
  75. $string .= ' </tr>';
  76. $string .= ' </table>';
  77. $string .= '</form>';
  78. }
  79. return $string;
  80. }
  81.  
  82. function logowanie()
  83. {
  84.  
  85. if($_SESSION['logowanie'] != 'poprawne')
  86. {
  87. $string = '<form action="'.getenv(REQUEST_URI).'" method="post">';
  88. $string .= ' <ul style="list-style-type: none; margin: 0; padding: 0;">';
  89.  
  90. if(isset($_SESSION['logowanie'])) $string .= '<li>'.$_SESSION['logowanie'].'</li>';
  91. $string .= '<style type="text/css" media="screen">
  92. body {
  93. background-color: #90EE90;
  94. font-size: 12px;
  95. font-family: Verdana, Arial, Helvetica, SunSans-Regular, Sans-Serif;
  96. color:#564b47;
  97. padding:0px;
  98. margin:0px;
  99. }
  100. #content {
  101. position:absolute;
  102. height:200px;
  103. width:400px;
  104. margin:-100px 0px 0px -200px;
  105. top: 50%;
  106. left: 50%;
  107. text-align: left;
  108. padding: 1px;
  109. background-color: #FFEBCD;
  110. overflow: auto;
  111. }
  112. p, h1 {
  113. margin: 0px;
  114. padding: 10px;
  115. }
  116. h1 {
  117. font-size: 18px;
  118. color: #FFFAF0;
  119. background-color: #216254;
  120. }
  121. h2 {
  122. font-family: sans-serif;
  123. margin: 0px;
  124. padding: 3px;
  125. font-size: 17px;
  126. color: #404040;
  127. }
  128. </style>';
  129. $string .= '<div id="content">';
  130. $string .= ' <li><center><h1>Logowanie do systemu</h1></center></li>';
  131. $string .= ' <li><center><h2>Login</h2></center><center><input type="text" name="login"/></center></li>';
  132. $string .= ' <li><center><h2>Hasło</h2></center><center><input type="password" name="haslo"/></center></li>';
  133. $string .= ' <li><center><input type="submit" name="logowanie" value="Logowanie"/></center></li>';
  134. $string .= ' </ul>';
  135. $string .= '</form>';
  136. $string .= '</div>';
  137. }
  138. return $string;
  139. }
  140. ?>


no i oczywiście nie działa :/
Mlodycompany
ale co nie działa? możesz jakoś sprecyzować? jak na mój gust to zmienna $user pozostaje w funkcji. Żeby z niej korzystać to musisz ją z tej funkcji wydobyć.
ArturEales
Jest tak mam sobie plik user.php i chciałem wyświetlić tam nazwę użytkownika ale nie wiem jak ja pobrać ze skryptu powyżej kombinowałem i nic nie wykombinowałem....
zend
Pomijając kwesie, że Twój skrypt jest podatny na ataki, to usuń @ z kodu
milw0rm
Dodaj na samej górze kodu:
  1. ini_set('display_errors','1');


i wstaw nam co zwraca strona ... i przeczytaj sobie jak zabezpieczyć się przed php injection
zend
Cytat
przeczytaj sobie jak zabezpieczyć się przed php injection
Gdzie Ty tu widzisz php injection? Nie chodzi Ci raczej o sql injection?
ArturEales
Wstawiłem ten kod na samom górę ale stronka nic nie zwróciła.
zend
Przeczytałeś wogóle wszystkie odpowiedzi? $connection = @mysql_connect('0', '0', '0'); >>>> $connection = mysql_connect('0', '0', '0');
haahh
Chwile, chwile.. jak się nazywa plik z tym kodem logowania? Jeżeli user.php i powyższy kod to oddzielne pliki to, żeby w user.php to musisz użyć superglobalnych $_SESSION tam przechować sobie nazwę użytkownika, albo jego id i wyszukać w bazie jego nazwę. Nie możesz sobie na jednej stronie dać $user = 'kowalski' a w drugim kodzie wywołać echo $user;.

@zapis nazwę użytkownika w $_SESSION['nazwa_uzytkownika']
ArturEales
ok ok ok tylko pytanie nie brzmiało jak zabezpieczyć ten skrypt bo tym się zajmę potem najpierw chciałbym żeby działał tak jak che tz zwracał mi w postaci zmiennej nazwę usera...

PLIK USER.php

  1. <?php
  2.  
  3. include_once('config/config.php');
  4. ?>
  5.  
  6. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  7. <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en-US" xml:lang="en">
  8. <head>
  9. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  10. <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
  11. <title>User</title>
  12. </head>
  13. <body>
  14. <img src="config/avatar/avatar1.jpeg" border="1" width="52" height="52"><br />
  15. <font size="1.5" face="comic sans ms">Twój IP:<br /><?echo ''.$_SERVER['REMOTE_ADDR'].'';?></font>
  16. <br />
  17. <font size="1.5" face="comic sans ms">Nick:<br /><?echo "$user";?></font><br />
  18. <?php
  19. echo wyloguj();
  20. ?>
  21. <br />
  22.  
  23. </body>
  24. </html>
  25.  


ok spokojnie specjalistą od zabezpieczeń nie jestem staram się proszę o porady i ewentualne linki do informacji na temat zabezpieczeń i proszę o pomoc z przesłaniem tego id "bezpiecznie" milewidziany fragment kodu smile.gif


PS:
Dziękuje za dotychczasową pomoc smile.gif

Błagam haahh pisz nowe posty...
haahh
Najprościej:
  1. if(mysql_num_rows($dane) == 1) {
  2.  
  3. $_SESSION['logowanie'] = 'poprawne';
  4.  
  5. $_SESSION['user'] = $_POST['login'];
  6.  
  7. }
  8.  
  9.  
  10. // a w pliku user.php
  11.  
  12.  
  13. echo $_SESSION['user'];
  14.  

Z id:

  1. $dane = @mysql_query('SELECT login, haslo, user_id FROM user WHERE login = "'.$_POST['login'].'" AND haslo = "'.$_POST['haslo'].'"') or die(mysql_error());
  2.  
  3. if(mysql_num_rows($dane) == 1) {
  4.  
  5. $row = mysql_fetch_array($dane, MYSQL_ASSOC);
  6.  
  7. $_SESSION['logowanie'] = 'poprawne';
  8. $_SESSION['user_id'] = $row['user_id'];
  9.  
  10.  
  11. } else {
  12.  
  13. $_SESSION['logowanie'] = 'Błędny login lub hasło!';
  14.  
  15. }
  16.  
  17.  
  18. // a w pliku user.php
  19.  
  20.  
  21. $id = $_SESSION['user_id'];
  22. $dane = mysql_query("SELECT login FROM user WHERE user_id='$id' LIMIT 1") or die(mysql_error());
  23. $row = mysql_fetch_array($dane, MYSQL_ASSOC);
  24.  
  25. echo $row['login'];
  26.  



Do filtrowania danych używaj funkcji mysql_real_escape_string, trim. Poza tym poszukaj na forum tematów o zabezpieczaniu hasła, hashowaniu.
ArturEales
Niby działa ale nie wyświetla nicku hmm... niewiem gdzie jest błąd...
haahh
Coś wydaje mi się, że coś źle z MySQL ( w sensie, że nie z kodem). Google aż sypie rozwiązaniami na ten błąd. Tak czy inaczej możesz pokazać kod, jeżeli sądzisz, że coś w nim 'zwaliło' połączenie.

Ja tam popełniłem błąd i napisałem MYSQLI_ASSOC zamiast MYSQL_ASSOC - cały czas mam z tym problem smile.gif bo się przyzwyczaiłem do mysqli, może to jest problem.
ArturEales
A propos błędu moja wina ... wkleiłem twój kod przed ...
  1. include_once('config/config.php');
a powinienem po ... ale teraz jest problem ponieważ ?echo $row['login'];?> nic nie zwraca :/

Działa smile.gif Dzięki miałeś racje drugi błąd to MYSQLI_ASSOC

Nie chcąc zakładać nowego tematu napisze dalej w tym... chciałbym zmienić sposób wylogowywania ale mam problem... a więc tak: Obecnie gdy kliknę Wyloguj przycisk znika i po odświeżeniu strony zostaje wylogowany... ja chciałbym żebym został wylogowany zaraz po kliknięciu wylogowany proszę o pomoc... dodam że przycisk wyloguj jest wyświetlany w ramce pobranej z pliku user.php
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.