Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: logowanie
Forum PHP.pl > Forum > Przedszkole
kowal1122
witam

mam problem z logowaniem oto skrypt:

  1. <?php # logowanie.php
  2.  
  3. if (isset($_POST['submit'])) 
  4. {
  5. require_once ('mysql_connect.php');
  6. function escape_data ($data) {
  7. if (ini_get('magic_quotes_gpc')) {
  8. $data = stripslashes($data);
  9. }
  10. return mysql_real_escape_string($data);
  11. }
  12. $message = NULL;
  13. if (empty($_POST['username'])) {
  14. $u = FALSE;
  15. $message .= '<p>Zapomniałe&para; wprowadzić nazwę użytkownika!</p>';
  16. } else {
  17. $u = escape_data($_POST['username']);
  18. }
  19.  
  20. if (empty($_POST['password'])) {
  21. $p = FALSE;
  22. $message .= '<p>Zapomniałe&para; wprowadzić hasło!</p>';
  23. } else {
  24.  $p = escape_data($_POST['password']);
  25. }
  26.  
  27. if ($u && $p) { // Jeżeli wszystko jest OK.
  28. $query = &#092;"SELECT user_id, first_name FROM users WHERE username='$u' AND password=PASSWORD('$p')\";
  29. $result = @mysql_query ($query);
  30. $row = mysql_fetch_array ($result, MYSQL_NUM); 
  31. if ($row) { 
  32.  
  33. // Rozpocznij sesję, zarejestruj warto&para;ci i przekieruj użytkownika.
  34. session_name ('IDTwojejSesji');
  35. ini_set ('session.use_cookies', 0);
  36. $_SESSION['first_name'] = $row[1];
  37. $_SESSION['user_id'] = $row[0];
  38. header (&#092;"Location: http://\" . $_SERVER['HTTP_HOST'] . 
  39. dirname($_SERVER['PHP_SELF']) . &#092;"/
  40. zalogowany.php?&#092;" . SID);
  41. exit();
  42.  
  43. } else {
  44. $message = '<p>Wprowadzona przez Ciebie nazwa użytkownika i hasło nie zgadzaj&plusmn; się z naszymi danymi.</p>'; 
  45. }
  46. } else {
  47. $message .= '<p>Spróbuj jeszcze raz.</p>';
  48. }
  49. }
  50. $page_title = 'Logowanie';
  51. include ('szablony/naglowek.inc');
  52. if (isset($message)) {
  53. echo '<font color=\"red\">', $message, '</font>';
  54. }
  55. ?>
  56. <form action=\"<?php echo $_SERVER['PHP_SELF']; ?>\" method=\"post\">
  57. <fieldset><legend>Wprowadz wymagane informacje do poniższego formularza:</legend>
  58. <p><b>Nazwa użytkownika:</b> <input type=\"text\" name=\"username\" size=\"10\" maxlength=\"20\" value=\"<?php if (isset($_POST['username'])) echo $_POST['username']; ?>\" /></p>
  59. <p><b>Hasło:</b> <input type=\"password\" name=\"password\" size=\"20\" maxlength=\"20\" /></p>
  60. <div align=\"center\"><input type=\"submit\" name=\"submit\" value=\"Zaloguj się\" /></div>
  61. </form><!-- Koniec formularza -->


i wyskakuje mi:
Wprowadzona przez Ciebie nazwa użytkownika i hasło nie zgadzaj&plusmn; się z naszymi danymi.
niewiem juz co sie dzieje.


help me
nospor
Na początek daj po query:
  1. <?php
  2.  
  3. if (!$result) echo mysql_error();
  4.  
  5. ?>

Daj też se echo $u;echo $p;
sprawdz czy ci się zgadzają dane, czy są w bazie, czy haslo po zakodowaniu się zgadza z tym w bazie
kowal1122
zrobilem

if (!$result) echo mysql_error(); - niepojawia sie tongue.gif

echo $u;echo $p; - to juz robilem wczesniej pojawia się wszystko porawnie to co wpisalem.


sprawdz czy ci się zgadzają dane, czy są w bazie, czy haslo po zakodowaniu się zgadza z tym w bazie - dane zgadzają się te same są w bazie... niewiem jak spawdzic tylko czy haslo po zakodowaniu zgadza sie z tym w bazie?
SongoQ
Wyswietl sobie to zapytanie i wykonaj np w phpmyadmin i sprawdz czy co prawidlowo zwraca.
kowal1122
mow jasniej,najlepiej jakis przyklad daj sad.gif
SongoQ
  1. <?php
  2. $query = &#092;"SELECT user_id, first_name FROM users WHERE username='$u' AND password=PASSWORD('$p')\";
  3. echo $query;
  4.  
  5. ?>


To co Ci zwroci $query skopiuj i wklej np do phpmyadmina i zobacz co zapytanie zwraca.
kowal1122
zapytanie:
SELECT user_id, first_name
FROM users
WHERE username = 'x'
AND PASSWORD = PASSWORD( 'x' )

a co zwraca to niewiem...
Ociu
1.
  1. <?php
  2. $result = mysql_query ($query);
  3. ?>

2. Wrzuć sobie zapytanie do phpmyadmin i zobacz czy coś wzraca.
kowal1122
wpisalem podany przez ciebie kod php ale nic sie nie dzieje
Ociu
  1. <?php
  2. mysql_query ($query) or die(mysql_error());
  3. ?>
kowal1122
nic sie niewyświetla tongue.gif
SongoQ
Zapytanie jest poprawne czyli w bazie nie masz odpowiedniach rekordow.
kowal1122
czyli bląd lezy w bazie danych?
SongoQ
Na to wyglada, zrzuc strukture i dane.
kowal1122
baza danych: sitename
tabela: users

dane w tabeli: user_id username first name last_name email password registration_date
a w nich dane wszystko dalem na x oprucz user_id(1)
coś jeszcze podac?
SongoQ
Tylko jak dodajesz rekord to w polu password musisz dodac uzywajac PASSWORD('x')

Czyli to co podales:
  1. INSERT
  2. INTO users (user_id, username, first_name, last_name, email, password, registration_date) VALUES (1, 'x', 'x', 'x', 'x', PASSWORD('x'), NOW())
kowal1122
powstaje cos dziwnego zamiast hasła x pokazuje się dziwny ciąg liter: *241E241B694B4F0
niewiem co sie dzieje...
SongoQ
no i jest ok. Pomysl logicznie czy jesli kodujesz haslo w bazie to bedziesz je widzial w postaci jawnej?
kowal1122
raczej nie
ale jak bym chcial komus zmienic haslo to nawet go nieznam...
SongoQ
Przeciez o to chodzi, nawet admini systemow nie znaja hesel userow, zmiana polega na tym ze ustawiasz nowe. Nie rozumiem co Cie tak dziwi.
kowal1122
przejdzy dalej:

błędy:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at d:\wamp\www\logowanie.php:1) in d:\wamp\www\logowanie.php on line 45

Warning: Cannot modify header information - headers already sent by (output started at d:\wamp\www\logowanie.php:1) in d:\wamp\www\logowanie.php on line 48

  1. <?php // Skrypt 7.16 - logowanie.php
  2. if (isset($_POST['submit'])) 
  3. {
  4. require_once ('mysql_connect.php');
  5. function escape_data ($data) {
  6. if (ini_get('magic_quotes_gpc')) {
  7. $data = stripslashes($data);
  8. }
  9. return mysql_real_escape_string($data);
  10. }
  11. $message = NULL;
  12. if (empty($_POST['username'])) {
  13. $u = FALSE;
  14. $message .= '<p>Zapomniałe&para; wprowadzić nazwę użytkownika!</p>';
  15. } else {
  16. $u = escape_data($_POST['username']);
  17. }
  18.  
  19. if (empty($_POST['password'])) {
  20. $p = FALSE;
  21. $message .= '<p>Zapomniałe&para; wprowadzić hasło!</p>';
  22. } else {
  23.  $p = escape_data($_POST['password']);
  24. }
  25.  
  26.  echo $u.'/'.$p;
  27.  $query = &#092;"SELECT user_id, first_name FROM users WHERE username='$u' AND password=PASSWORD('$p')\";
  28.  echo $query;
  29.  $result = mysql_query ($query);
  30.  mysql_query ($query) or die(mysql_error());
  31.  
  32.  
  33. if ($u && $p) { // Jeżeli wszystko jest OK.
  34. $query = &#092;"SELECT user_id, first_name FROM users WHERE username='$u' AND password='$p'\";
  35. if (!$result) echo mysql_error();
  36.  
  37. $result = @mysql_query ($query);
  38. $row = mysql_fetch_array ($result, MYSQL_NUM); 
  39. if ($row) { 
  40.  
  41. // Rozpocznij sesję, zarejestruj warto&para;ci i przekieruj użytkownika.
  42. session_name ('IDTwojejSesji');
  43. ini_set ('session.use_cookies', 0);
  44. $_SESSION['first_name'] = $row[1];
  45. $_SESSION['user_id'] = $row[0];
  46. header (&#092;"Location: http://\" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . \"zalogowany.php\");
  47. exit();
  48.  
  49. } else {
  50. $message = '<p>Wprowadzona przez Ciebie nazwa użytkownika i hasło nie zgadzaj&plusmn; się z naszymi danymi.</p>'; 
  51. }
  52. } else {
  53. $message .= '<p>Spróbuj jeszcze raz.</p>';
  54. }
  55. }
  56. $page_title = 'Logowanie';
  57. include ('szablony/naglowek.inc');
  58. if (isset($message)) {
  59. echo '<font color=\"red\">', $message, '</font>';
  60. }
  61. ?>
  62. <form action=\"<?php echo $_SERVER['PHP_SELF']; ?>\" method=\"post\">
  63. <fieldset><legend>Wprowadz wymagane informacje do poniższego formularza:</legend>
  64. <p><b>Nazwa użytkownika:</b> <input type=\"text\" name=\"username\" size=\"10\" maxlength=\"20\" value=\"<?php if (isset($_POST['username'])) echo $_POST['username']; ?>\" /></p>
  65. <p><b>Hasło:</b> <input type=\"password\" name=\"password\" size=\"20\" maxlength=\"20\" /></p>
  66. <div align=\"center\"><input type=\"submit\" name=\"submit\" value=\"Zaloguj się\" /></div>
  67. </form><!-- Koniec formularza -->


help me
SongoQ
Przed session_start(); masz jakies echo. Chyba sie pluje o to echo $u.'/'.$p;
kowal1122
nie...
chyba sie pluje o cos innego sad.gif
SongoQ
no to sprawdz dokladnie co wysylasz zanim wyslesz session_start()
niko
a ma to ktoś napisane jako działający plik.php ? no i baze którą mógłbym sobie załadowac na serwer ? [*.sql]

moge proscić o gotowego zipa z tym wszystkim ? smile.gif
-=Peter=-
W tym kawałku:
  1. <?php
  2.  
  3.  session_name ('IDTwojejSesji');
  4. ini_set ('session.use_cookies', 0);
  5. $_SESSION['first_name'] = $row[1];
  6. $_SESSION['user_id'] = $row[0];
  7. header (&#092;"Location: http://\" . $_SERVER['HTTP_HOST'] . 
  8. dirname($_SERVER['PHP_SELF']) . &#092;"/
  9. zalogowany.php?&#092;" . SID);
  10. exit();
  11.  
  12. ?>

Pomieszales na moje oko rozne sposoby logowania, jesli wysylasz cookie to niepotrzebnie jest dodawany SID do adresu url., zmien to na:
  1. <?php
  2.  
  3. $_SESSION['first_name'] = $row[1];
  4. $_SESSION['user_id'] = $row[0];
  5. header (&#092;"Location: http://\" . $_SERVER['HTTP_HOST'] . 
  6. dirname($_SERVER['PHP_SELF']) . &#092;"/zalogowany.php\");
  7. exit();
  8.  
  9. ?>

Pozatym wywal funkcje "escape_data", bo u mnie na lokalu ona nie dziala, wtedy powinno byc wszystko ok. (logowanie wzięte z ksiązki php i mysql, dynamiczne strony www. Szybki start tongue.gif tez sie z niej ucze tongue.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.