Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] logowanie
gigzorr
post
Post #1





Grupa: Zarejestrowani
Postów: 652
Pomógł: 47
Dołączył: 6.02.2010
Skąd: Radom

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


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.
Go to the top of the page
+Quote Post
sadistic_son
post
Post #2





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


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.
Go to the top of the page
+Quote Post
Pawel_W
post
Post #3





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

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


ew złe kodowanie pliku
Go to the top of the page
+Quote Post
gigzorr
post
Post #4





Grupa: Zarejestrowani
Postów: 652
Pomógł: 47
Dołączył: 6.02.2010
Skąd: Radom

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


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>


Ten post edytował gigzorr 20.04.2010, 18:05:31
Go to the top of the page
+Quote Post
sadistic_son
post
Post #5





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


Wywal addslashes i htmlspecialchars z linijek 21 i 22.

Ten post edytował sadistic_son 20.04.2010, 18:09:31
Go to the top of the page
+Quote Post
gigzorr
post
Post #6





Grupa: Zarejestrowani
Postów: 652
Pomógł: 47
Dołączył: 6.02.2010
Skąd: Radom

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


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.
Go to the top of the page
+Quote Post
sadistic_son
post
Post #7





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


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


Ten post edytował sadistic_son 20.04.2010, 18:54:14
Go to the top of the page
+Quote Post
gigzorr
post
Post #8





Grupa: Zarejestrowani
Postów: 652
Pomógł: 47
Dołączył: 6.02.2010
Skąd: Radom

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


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.

Ten post edytował gigzorr 20.04.2010, 19:24:45
Go to the top of the page
+Quote Post
mortus
post
Post #9





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


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.
Go to the top of the page
+Quote Post
gigzorr
post
Post #10





Grupa: Zarejestrowani
Postów: 652
Pomógł: 47
Dołączył: 6.02.2010
Skąd: Radom

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


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.

Ten post edytował gigzorr 21.04.2010, 13:46:54
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.09.2025 - 18:19