Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] logowanie
Forum PHP.pl > Forum > Przedszkole
gigzorr
Witam.
Po wielu nieudanych probach , napisania skryptu logowania poddalem sie.
  1. <?php session_start();?>
  2. <?php
  3. // laczenie z baza danych i wybor bazy danych
  4.  
  5. $db = mysql_connect("localhost","root","vertrigo") or die ("polaczenie nie moze byc zrealizowane");
  6. $wyborbazy = mysql_select_db("strona") or die ("nie ma takiej bazy danych");
  7.  
  8. $username = $_POST['username'];
  9. $password = md5($_POST['password']);
  10. $password = addslashes($password);
  11. $username = htmlspecialchars($username);
  12.  
  13. if ($_GET['username'] != '') { //jezeli ktos przez adres probuje kombinowac
  14. }
  15. if ($_GET['password'] != '') { //jezeli ktos przez adres probuje kombinowac
  16. }
  17.  
  18. $password = md5($password); //szyfrowanie hasla
  19. if (!$username OR empty($username))
  20. {
  21. echo 'Wypełnij pole z loginem!';
  22. }
  23. if (!$password OR empty($password))
  24. {
  25. echo 'Wypełnij pole z hasłem!';
  26. }
  27.  
  28. $istnick_zapytanie = mysql_query("SELECT * FROM `rejestracja` WHERE `uzytkownik` = '$username' AND `haslo` = '$password'"); // sprawdzenie czy istnieje uzytkownik o takim nicku i hasle
  29. print_r($istnick_zapytanie);
  30. if ($istnick_zapytanie[0] == 0)
  31. {
  32. echo 'Logowanie nieudane. Sprawdź pisownię nicku oraz hasła.';
  33. }
  34. else
  35. {
  36.  
  37. $_SESSION['username'] = $username;
  38. $_SESSION['password'] = $password;
  39.  
  40. $username = $_SESSION['username'];
  41. $password = $_SESSION['password'];
  42. if ((empty($username)) AND (empty($password)))
  43. {
  44. echo '<br>Nie byłeś zalogowany albo zostałeś wylogowany<br><a href="index.php">Strona Główna</a><br>';
  45. }
  46. $user = (mysql_query("SELECT * FROM uzytkownicy WHERE `uzytkownik`='$username' AND `haslo`='$password' LIMIT 1"));
  47.  
  48. if (empty($user[id]) OR !isset($user[id]))
  49. {
  50. echo '<br>Nieprawidłowe logowanie.<br>';
  51. }
  52. // tresc dla zalogowanego uzytkownika
  53. echo 'Witaj '.$username[uzytkownik].' zostałeś/aś pomyślnie zalogowany/a, tutaj umieść ukryta strone tylko dla zalogowanych';
  54.  
  55. }
  56. ?>


Oto skrypt , problem jest taki , ze jakbym nie zmienil zapytanie caly czas.
Kod
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\Program Files\VertrigoServ1\www\mojastrona\zalogowano.php:11) in C:\Program Files\VertrigoServ1\www\mojastrona\zalogowano.php on line 11

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Program Files\VertrigoServ1\www\mojastrona\zalogowano.php:11) in C:\Program Files\VertrigoServ1\www\mojastrona\zalogowano.php on line 11
3Logowanie nieudane. Sprawdź pisownię nicku oraz hasła.
sadistic_son
Po pierwsze i najważniejsze session_start() powinieneś mieć na samym początku, przed jakimkolwiek kodem HTML. Zakładam, że to co wkleiłeś to nie jest wszystko, czyli pewnie wcześniej masz <html><body> itp.
Pawel_W
ew złe kodowanie pliku
gigzorr
Cytat(sadistic_son @ 20.04.2010, 18:53:37 ) *
Po pierwsze i najważniejsze session_start() powinieneś mieć na samym początku, przed jakimkolwiek kodem HTML. Zakładam, że to co wkleiłeś to nie jest wszystko, czyli pewnie wcześniej masz <html><body> itp.



Dzieki za podpowiedz , trafiles w sedno , ale dalej jest ten trzeci problem , w bazie danych mam tabele rejestracja i tam jest id -uniqe uzytkownik - varchar i haslo -char.
Teraz jest tak :
  1. <?php session_start(); ?>
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  3. <html>
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  6. <title></title>
  7. </head>
  8. <body>
  9. <html>
  10.  
  11.  
  12.  
  13. <?php
  14. // laczenie z baza danych i wybor bazy danych
  15.  
  16. $db = mysql_connect("localhost","root","vertrigo") or die ("polaczenie nie moze byc zrealizowane");
  17. $wyborbazy = mysql_select_db("strona") or die ("nie ma takiej bazy danych");
  18.  
  19. $username = $_POST['username'];
  20. $password = md5($_POST['password']);
  21. $password = addslashes($password);
  22. $username = htmlspecialchars($username);
  23.  
  24. if ($_GET['username'] != '') { //jezeli ktos przez adres probuje kombinowac
  25. }
  26. if ($_GET['password'] != '') { //jezeli ktos przez adres probuje kombinowac
  27. }
  28.  
  29. $password = md5($password); //szyfrowanie hasla
  30. if (!$username OR empty($username))
  31. {
  32. echo 'Wypełnij pole z loginem!';
  33. }
  34. if (!$password OR empty($password))
  35. {
  36. echo 'Wypełnij pole z hasłem!';
  37. }
  38.  
  39. $istnick_zapytanie = mysql_query("SELECT * FROM `rejestracja` WHERE `uzytkownik` = '$username' AND `haslo` = '$password'"); // sprawdzenie czy istnieje uzytkownik o takim nicku i hasle
  40. print_r($istnick_zapytanie);
  41. if ($istnick_zapytanie[0] == 0)
  42. {
  43. echo 'Logowanie nieudane. Sprawdź pisownię nicku oraz hasła.';
  44. }
  45. else
  46. {
  47.  
  48. $_SESSION['username'] = $username;
  49. $_SESSION['password'] = $password;
  50.  
  51. $username = $_SESSION['username'];
  52. $password = $_SESSION['password'];
  53. if ((empty($username)) AND (empty($password)))
  54. {
  55. echo '<br>Nie byłeś zalogowany albo zostałeś wylogowany<br><a href="index.php">Strona Główna</a><br>';
  56. }
  57. $user = (mysql_query("SELECT * FROM uzytkownicy WHERE `uzytkownik`='$username' AND `haslo`='$password' LIMIT 1"));
  58.  
  59. if (empty($user[id]) OR !isset($user[id]))
  60. {
  61. echo '<br>Nieprawidłowe logowanie.<br>';
  62. }
  63. // tresc dla zalogowanego uzytkownika
  64. echo 'Witaj '.$username[uzytkownik].' zostałeś/aś pomyślnie zalogowany/a, tutaj umieść ukryta strone tylko dla zalogowanych';
  65.  
  66. }
  67. ?>
  68.  
  69. </body>
  70. </html>
sadistic_son
Wywal addslashes i htmlspecialchars z linijek 21 i 22.
gigzorr
Cytat(sadistic_son @ 20.04.2010, 19:09:08 ) *
Wywal addslashes i htmlspecialchars z linijek 21 i 22.



Dalej to samo , jak dla mnie to cos z pierwszym zapytaniem jest zle , ale chociaz bledu nie zwraca.
sadistic_son
Wywal to:
  1. if ($_GET['username'] != '') { //jezeli ktos przez adres probuje kombinowac
  2. }
  3. if ($_GET['password'] != '') { //jezeli ktos przez adres probuje kombinowac
  4. }
Bo skoro te dane przesyłasz POSTem to GET zawsze bedzie pusty czyli !isset.

W ogole masz tonę błędów w tym skrypcie! Wywal linijki 55 i 56 a zamiast 43 wstaw to:
  1. $query="SELECT * FROM `rejestracja` WHERE `uzytkownik` = '".$username."' AND `haslo` = '".$password."' LIMIT 1";
  2. $istnick_zapytanie=mysql_result(mysql_query($query),0);


Twoj caly skrypt nie ma wiekszego sensu. Masz tu poprawione...
  1. <?php session_start(); ?>
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  3. <html>
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  6. <title></title>
  7. </head>
  8. <body>
  9. <html>
  10.  
  11.  
  12.  
  13. <?php
  14. // laczenie z baza danych i wybor bazy danych
  15.  
  16. $db = mysql_connect("localhost","root","vertrigo") or die ("polaczenie nie moze byc zrealizowane");
  17. $wyborbazy = mysql_select_db("strona") or die ("nie ma takiej bazy danych");
  18.  
  19. if(isset($_POST['username'])){
  20. $username = $_POST['username'];
  21. }else{ echo 'podaj login';}
  22. if(isset($_POST['password'])){
  23. $password = md5($_POST['password']);
  24. }else{echo 'podaj haslo';}
  25.  
  26.  
  27. $query="SELECT * FROM `rejestracja` WHERE `uzytkownik` = '".$username."' AND `haslo` = '".$password."' LIMIT 1";
  28.  
  29. if(!mysql_result(mysql_query($query),0)){
  30. echo 'Logowanie nieudane. Sprawdź pisownię nicku oraz hasła.';
  31. }
  32. else
  33. {
  34.  
  35. $_SESSION['zalogowany_user_login'] = $username;
  36.  
  37. // tresc dla zalogowanego uzytkownika
  38. echo 'Witaj '.$_SESSION['zalogowany_user_login'].' zostałeś/aś pomyślnie zalogowany/a, tutaj umieść ukryta strone tylko dla zalogowanych';
  39.  
  40. }
  41. ?>
gigzorr
Cytat(sadistic_son @ 20.04.2010, 19:47:01 ) *
Wywal to:
  1. if ($_GET['username'] != '') { //jezeli ktos przez adres probuje kombinowac
  2. }
  3. if ($_GET['password'] != '') { //jezeli ktos przez adres probuje kombinowac
  4. }
Bo skoro te dane przesyłasz POSTem to GET zawsze bedzie pusty czyli !isset.

W ogole masz tonę błędów w tym skrypcie! Wywal linijki 55 i 56 a zamiast 43 wstaw to:
  1. $query="SELECT * FROM `rejestracja` WHERE `uzytkownik` = '".$username."' AND `haslo` = '".$password."' LIMIT 1";
  2. $istnick_zapytanie=mysql_result(mysql_query($query),0);


Twoj caly skrypt nie ma wiekszego sensu. Masz tu poprawione...
  1. <?php session_start(); ?>
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  3. <html>
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  6. <title></title>
  7. </head>
  8. <body>
  9. <html>
  10.  
  11.  
  12.  
  13. <?php
  14. // laczenie z baza danych i wybor bazy danych
  15.  
  16. $db = mysql_connect("localhost","root","vertrigo") or die ("polaczenie nie moze byc zrealizowane");
  17. $wyborbazy = mysql_select_db("strona") or die ("nie ma takiej bazy danych");
  18.  
  19. if(isset($_POST['username'])){
  20. $username = $_POST['username'];
  21. }else{ echo 'podaj login';}
  22. if(isset($_POST['password'])){
  23. $password = md5($_POST['password']);
  24. }else{echo 'podaj haslo';}
  25.  
  26.  
  27. $query="SELECT * FROM `rejestracja` WHERE `uzytkownik` = '".$username."' AND `haslo` = '".$password."' LIMIT 1";
  28.  
  29. if(!mysql_result(mysql_query($query),0)){
  30. echo 'Logowanie nieudane. Sprawdź pisownię nicku oraz hasła.';
  31. }
  32. else
  33. {
  34.  
  35. $_SESSION['zalogowany_user_login'] = $username;
  36.  
  37. // tresc dla zalogowanego uzytkownika
  38. echo 'Witaj '.$_SESSION['zalogowany_user_login'].' zostałeś/aś pomyślnie zalogowany/a, tutaj umieść ukryta strone tylko dla zalogowanych';
  39.  
  40. }
  41. ?>


To samo +
Kod
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Program Files\VertrigoServ1\www\mojastrona\zalogowano.php:1) in C:\Program Files\VertrigoServ1\www\mojastrona\zalogowano.php on line 1

Warning: mysql_result() [function.mysql-result]: Unable to jump to row 0 on MySQL result index 3 in C:\Program Files\VertrigoServ1\www\mojastrona\zalogowano.php on line 36
Logowanie nieudane. Sprawdź pisownię nicku oraz hasła.

Pierwszego bledu powinno wogole nie byc..
Drugi blad mowi ze nie ma takiej tabeli jesli dobrze wyczytalem o.O
Myslalem , ze to przez nalozenie uniqe na id , ale wywalilem wogole id i dalej to samo. I dont have idea anymore.
mortus
Proponuję w lini 28 dać:
  1. $result = mysql_query($query) or die(mysql_error());
a linię 29 zastąpić czymś takim:
  1. if(!$result) {
Odnośnie błędu session_start mam pytanie, czy plik jest includowany, czy jest całkowicie niezależnym skryptem? Jeśli to niezależny skrypt, to sprawdź kodowanie pliku, bo możliwe, że masz ustawione kodowanie UTF-8 z BOM i to powoduje problemy.
gigzorr
1
Cytat(mortus @ 20.04.2010, 20:40:46 ) *
Proponuję w lini 28 dać:
  1. $result = mysql_query($query) or die(mysql_error());
a linię 29 zastąpić czymś takim:
  1. if(!$result) {
Odnośnie błędu session_start mam pytanie, czy plik jest includowany, czy jest całkowicie niezależnym skryptem? Jeśli to niezależny skrypt, to sprawdź kodowanie pliku, bo możliwe, że masz ustawione kodowanie UTF-8 z BOM i to powoduje problemy.


Jak dodałem tego ifa zamiast tamtego to teraz jest cały czas
Kod
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\Program Files\VertrigoServ1\www\mojastrona\zalogowano.php:1) in C:\Program Files\VertrigoServ1\www\mojastrona\zalogowano.php on line 1

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Program Files\VertrigoServ1\www\mojastrona\zalogowano.php:1) in C:\Program Files\VertrigoServ1\www\mojastrona\zalogowano.php on line 1
podaj loginpodaj hasloWitaj zostałeś/aś pomyślnie zalogowany/a, tutaj umieść ukryta strone tylko dla zalogowanych


Plik jest calkowicie niezaleznym skryptem , kodowanie jest napewno dobre , netbeansa uzywam.
Zapytanie tez sprawdzilem tym co dales.
A ten blad z headers znikl , napisalem jeszce raz session_start(); i bum nie ma.Nie da sie sprawdzic jeszcze inaczej jakos zapytania co zwraca?
  1. <?php session_start(); ?>
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  3. <html>
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  6. <title></title>
  7. </head>
  8. <body>
  9.  
  10. <?php
  11. // laczenie z baza danych i wybor bazy danych
  12. $db = mysql_connect("localhost","root","vertrigo") or die ("polaczenie nie moze byc zrealizowane");
  13. $wyborbazy = mysql_select_db("strona") or die ("nie ma takiej bazy danych");
  14.  
  15. if(isset($_POST['username']))
  16. {
  17. $username = $_POST['username'];
  18. }
  19. else
  20. {
  21. echo 'podaj login';
  22. }
  23. if (isset($_POST['password']))
  24. {
  25. $password = md5($_POST['password']);
  26. }
  27. else
  28. {
  29. echo 'podaj haslo';
  30. }
  31.  
  32. $query = "SELECT * FROM `rejestracja` WHERE `uzytkownik` = '".$username."' AND `haslo` = '".$password."' LIMIT 1";
  33. $result = mysql_query($query) or die(mysql_error());
  34.  
  35. if(!$result)
  36. {
  37. echo 'Logowanie nieudane. Sprawdź pisownię nicku oraz hasła.';
  38. }
  39. else
  40. {
  41. $_SESSION['zalogowany_user_login'] = $username;
  42. // tresc dla zalogowanego uzytkownika
  43. echo 'Witaj '.$_SESSION['zalogowany_user_login'].' zostałeś/aś pomyślnie zalogowany/a, tutaj umieść ukryta strone tylko dla zalogowanych<br/>';
  44. echo '<a href="wylogowywanie.php">Wyloguj?</a>';
  45. }
  46.  
  47. ?>
  48. </body>
  49. </html>

Tak teraz wyglada skrypt.
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.