Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MYSQL] Skrypt logowani, ginie sesja czy co
in5ane
post 15.07.2008, 22:02:48
Post #1





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

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


Elo, mam skrypt logowania no i jest problem, w tym ze jak sie zaloguje i odswieze strone, badz przejde na inna podstrone, to mnie wylogowuje. Moze pokaze kod i bedzie jasniej. Prosze o pomoc winksmiley.jpg

config.php:
  1. <?php
  2. if(!isset($_SESSION['sesja'])) {
  3. $_SESSION['sesja'] = '';
  4. }
  5.  
  6. if(eregi("config.php",$_SERVER['PHP_SELF']) OR eregi("config.php",$_SERVER['QUERY_STRING'])) 
  7. { header("Location: /"); die(); }
  8.  
  9. $_CONFIG['kxc'] = "a523d703f908dd69e02db64ec35d07315f4c49ab3cacad14a97304b02f2fbb09";
  10.  
  11. $_CONFIG['MySQL']['host'] = "localhost";
  12. $_CONFIG['MySQL']['user'] = "webporn_webporn";
  13. $_CONFIG['MySQL']['pass'] = "1231231231312312312312312312313123";
  14. $_CONFIG['MySQL']['base'] = "webporn_webporn";
  15.  
  16. @mysql_connect($_CONFIG['MySQL']['host'], $_CONFIG['MySQL']['user'], $_CONFIG['MySQL']['pass']);
  17.  
  18. @mysql_select_db($_CONFIG['MySQL']['base']);
  19.  
  20. function login() {
  21. global $_CONFIG;
  22. $zalogowany = false;
  23.  
  24. if(isset($_COOKIE["dane"])) {
  25. $dane = $_COOKIE["dane"]^$_CONFIG['kxc'];
  26. $login = substr($dane, 0, 32);
  27. $haslo = substr($dane, -32);
  28. $metod = "cookies";
  29. }
  30. elseif(isset($_SESSION['login']) AND isset($_SESSION['haslo'])) {
  31. $login = $_SESSION['login'];
  32. $haslo = $_SESSION['haslo'];
  33. $metod = "session";
  34. }
  35. elseif(isset($_POST['login']) AND isset($_POST['haslo'])) {
  36. $login = mysql_real_escape_string(strip_tags($_POST['login']));
  37. $haslo = md5(mysql_real_escape_string(strip_tags($_POST['haslo'])));
  38. $metod = "post";
  39. }
  40.  
  41. if(isset($metod)) {
  42. $query = mysql_query("SELECT * FROM `users` WHERE `nick`='".$login."' AND `pass`='".$haslo."';");
  43. if(mysql_num_rows($query) == 1) {
  44. $zalogowany = true; 
  45. if($metod <> "session") {
  46. $wiersz = mysql_fetch_array($query);
  47. $_SESSION['login'] = $wiersz['nick'];
  48. $_SESSION['haslo'] = $wiersz['pass'];
  49.  if($metod == "post" AND isset($_POST['pamietaj']) AND $_POST['pamietaj'] == "ok") {
  50.  $dane = ($login.$haslo)^$_CONFIG['kxc'];
  51.  setcookie ("dane", $dane,time()+3600*24*365);
  52.  }
  53. }
  54.  }
  55. }
  56. return $zalogowany;
  57. }
  58.  
  59. function logout() {
  60. if(isset($_COOKIE["dane"])) 
  61. setcookie ("dane", "",time()-3600*24*365);
  62. unset($_SESSION['login']);
  63. unset($_SESSION['haslo']);
  64. unset($_SESSION['nick']);
  65. }
  66.  
  67. ?>


logowanie.php:
  1. <?php
  2. include('config.php');
  3.  
  4. if(!login() AND !isset($_POST['logowanie'])) {
  5. $text = '
  6. <br>
  7. <center>
  8. <table width="100%" cellpadding="5" cellpadding="0">
  9.  <th class="h">Logowanie!</th>
  10.  <tr>
  11. <td align="center">
  12. <br>
  13. <br>
  14. <form action="" method="post" name="loguj">
  15. <input type="hidden" name="logowanie" value="k">
  16. <table cellpadding="0" cellspacing="0">
  17.  <tr>
  18. <td>Login:&nbsp;</td>
  19. <td><input type="text" style="width: 250px" name="login"></td>
  20.  </tr>
  21.  <tr><td><img src="" width="1" height="3"></td></tr>
  22.  <tr>
  23. <td>Hasło:&nbsp;</td>
  24. <td><input type="password" style="width: 250px" name="haslo"></td>
  25.  </tr>
  26.  <tr>
  27. <td colspan="2">
  28.  <input type="checkbox" name="pamietaj" value="ok"> - Zapamiętaj mnie!<br>
  29. </td>
  30.  </tr>
  31. </table>
  32. <br>
  33. <table cellspacing="7"><tr><td>
  34. <input type="submit" value="Loguj!"> 
  35. </td><td>&nbsp;</td></tr></table>
  36. </form>
  37. </td>
  38. </tr>
  39. </table>
  40. ';
  41. die($text);
  42. }
  43.  
  44. if(!login() AND isset($_POST['logowanie'])) {
  45. $text = '
  46. <br>
  47. <center>
  48. <table width="100%" cellpadding="5" cellpadding="0">
  49.  <th class="h">Logowanie!</th>
  50.  <tr>
  51. <td align="center">
  52. <font color="red"><b>Zły Login lub Hasło!</b></font><br>
  53. <br>
  54. <form action="" method="post" name="loguj">
  55. <input type="hidden" name="logowanie" value="k">
  56. <table cellpadding="0" cellspacing="0">
  57.  <tr>
  58. <td>Login:&nbsp;</td>
  59. <td><input type="text" style="width: 250px" name="login"></td>
  60.  </tr>
  61. <tr><td><img src="" width="1" height="3"></td></tr>
  62.  <tr>
  63. <td>Hasło:&nbsp;</td>
  64. <td><input type="password" style="width: 250px" name="haslo"></td>
  65.  </tr>
  66.  <tr>
  67. <td colspan="2">
  68.  <input type="checkbox" name="pamietaj" value="ok"> - Zapamiętaj mnie!<br>
  69. </td>
  70.  </tr>
  71. </table>
  72. <br>
  73. <table cellspacing="7"><tr><td>
  74. <input type="submit" value="Loguj!">
  75. </td><td>&nbsp;</td></tr></table>
  76. </form>
  77. </td>
  78. </tr>
  79. </table>
  80. ';
  81. die($text);
  82. }
  83.  
  84. if(login()){
  85. $text = 'Witaj '.$_SESSION['login'].'!<br>
  86. <br>
  87. Moje gratulacje udało Ci się zalogować, trzeba przyznać, dobry jesteś!<br>
  88. <br>
  89. Możesz teraz przejść do super tajnego działu MEMBERS biggrin.gif<br>
  90. <br>
  91. <a href="members.php">Super Tajny Dział MEMBERS</a>';
  92. die($text);
  93. }
  94.  
  95. ?>


members.php (podstrona):
  1. <?php
  2. include('config.php');
  3. if(!login()) {
  4. $text = '<p style="">zaloguj no sie</p>';
  5. die($text);
  6. }
  7.  
  8. $text = 'To jest ten super tajny i super ważny dział MEMBERS!<br><br>
  9. Podoba Ci się?questionmark.gif<br><br>
  10. Mam lepsze nowiny, sesje nadal tutaj działają.<br>
  11. Chcesz dowodu?<br>
  12. Twój nick to: '.$_SESSION['nick'];
  13. die(text);
  14. ?>


Baza do tego:
id || nick || pass


Z gory dziekuje za pomoc ;-)

Ten post edytował in5ane 15.07.2008, 22:44:31


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
Mlodycompany
post 15.07.2008, 22:04:40
Post #2





Grupa: Zarejestrowani
Postów: 910
Pomógł: 44
Dołączył: 20.02.2008
Skąd: Łódź

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


w kazdym pliku musisz miec session_start(); i zaraz po <?php czyli jak masz warunek to jest zle, bo np. jak masz sesje to ta strona jej nie rozpoczyna czyli jest tak jak by jej nie bylo
Go to the top of the page
+Quote Post
kosmos
post 15.07.2008, 22:17:51
Post #3





Grupa: Zarejestrowani
Postów: 367
Pomógł: 17
Dołączył: 4.03.2008

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


Zawsze ale to zawsze używając sesji na danej podstronie, musisz ją zacząć od

  1. <?php
  2. ?>


Przed tym nie może być żadnych warunków. W swoim skrypcie sprawdzasz czy istnieje sesja i jeśli nie to ją rozpoczynasz. W tym przypadku tak się nie robi
Go to the top of the page
+Quote Post
in5ane
post 15.07.2008, 22:25:21
Post #4





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

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


To nic nie dalo.
A i caly czas mam erro:
Kod
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at ***) in *** on line 2

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at ***) in *** on line 2


@edit:
Troche okroilem ten skrypt. Wyglada tak:
  1. <?php
  2.  
  3. $_CONFIG['MySQL']['host'] = "localhost";
  4. $_CONFIG['MySQL']['user'] = "webporn_webporn";
  5. $_CONFIG['MySQL']['pass'] = "web123porn";
  6. $_CONFIG['MySQL']['base'] = "webporn_webporn";
  7.  
  8. @mysql_connect($_CONFIG['MySQL']['host'], $_CONFIG['MySQL']['user'], $_CONFIG['MySQL']['pass']);
  9. @mysql_select_db($_CONFIG['MySQL']['base']);
  10.  
  11. function login() {
  12. global $_CONFIG;
  13. $zalogowany = false;
  14.  
  15. if(isset($_SESSION['login']) AND isset($_SESSION['haslo'])) {
  16. $login = $_SESSION['login'];
  17. $haslo = $_SESSION['haslo'];
  18. $metod = "session";
  19. }
  20. elseif(isset($_POST['login']) AND isset($_POST['haslo'])) {
  21. $login = mysql_real_escape_string($_POST['login']);
  22. $haslo = mysql_real_escape_string(md5($_POST['haslo']));
  23. $metod = "post";
  24. }
  25.  
  26. if(isset($metod)) {
  27. $query = mysql_query("SELECT * FROM `users` WHERE `nick`='".$login."' AND `pass`='".$haslo."';");
  28. if(mysql_num_rows($query) == 1) {
  29. $zalogowany = true; 
  30. if($metod <> "session") {
  31. $wiersz = mysql_fetch_array($query);
  32. $_SESSION['login'] = $wiersz['nick'];
  33. $_SESSION['haslo'] = $wiersz['pass'];
  34. }
  35.  }
  36. }
  37. return $zalogowany;
  38. }
  39.  
  40. function logout() {
  41. }
  42. ?>


Ten post edytował in5ane 15.07.2008, 22:27:26


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
Shili
post 15.07.2008, 22:28:12
Post #5





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


Sprawdź, czy nie masz na początku znaku BOM.
Go to the top of the page
+Quote Post
in5ane
post 15.07.2008, 22:29:10
Post #6





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

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


Nie ma! (chodzilo ci o jakies spacje czy cus?)


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
Shili
post 15.07.2008, 22:31:57
Post #7





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


Nie, chodzi mi o znak niewidoczny jeśli chodzi o edytory tekstu, a psujący życie przy wysyłaniu nagłówków.
BOM - Byte Order Mark
Go to the top of the page
+Quote Post
kosmos
post 15.07.2008, 22:35:24
Post #8





Grupa: Zarejestrowani
Postów: 367
Pomógł: 17
Dołączył: 4.03.2008

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


Wgrałem twój kod na mój serwer i żadne komunikaty mi się nie pojawiają...
Go to the top of the page
+Quote Post
in5ane
post 15.07.2008, 22:37:44
Post #9





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

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


To ja mam cos serwer skopany. Mozna jakos wylaczyc w .htaccess raporty o tych bledach?


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
Shili
post 15.07.2008, 22:40:04
Post #10





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


Raporty można wyłączyć, ale Ci nie zadziała ustawienie sesji i na tym się skończy. I nie serwer masz skopany, a na początku pliku masz znak BOM (post kosmosa z dużym prawdopodobieństwem to potwierdza)
Go to the top of the page
+Quote Post
in5ane
post 15.07.2008, 22:40:59
Post #11





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

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


Jak mam usunac te BOMY?


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
kosmos
post 15.07.2008, 22:45:26
Post #12





Grupa: Zarejestrowani
Postów: 367
Pomógł: 17
Dołączył: 4.03.2008

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


Pozwoliłem sobie zmienić początek kodu na taki smile.gif ( To dla mnie standard podczas testowania aplikacji )

  1. <?php
  2. print'Ala ma kota';
  3.  
  4. $_CONFIG['MySQL']['host'] = "localhost";
  5. $_CONFIG['MySQL']['user'] = "webporn_webporn";
  6. $_CONFIG['MySQL']['pass'] = "web123porn";
  7. $_CONFIG['MySQL']['base'] = "webporn_webporn";
  8. .
  9. .
  10. .
  11. .
  12. ?>


a wynik mam TAKI

Przyznam się że z tzw BOM`em się nie spotkałem i mnie to zaciekawiło. Jak widać u mnie go nie ma. Ale wygląda na to że Shili ma rację.
Nie mam pojęcia jak go usunąć niestety ale chętnie poczekam na tą odpowiedź bo faktycznie może mi się BOM przytrafić a jak widać może to człowieka wk.....

Ten post edytował kosmos 15.07.2008, 22:46:59
Go to the top of the page
+Quote Post
in5ane
post 15.07.2008, 22:47:27
Post #13





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

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


No to ja juz nie mam pojecia co mam na to poradzic ;/
A jak sie te BOMY usuwa?


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
kosmos
post 15.07.2008, 22:50:07
Post #14





Grupa: Zarejestrowani
Postów: 367
Pomógł: 17
Dołączył: 4.03.2008

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


a spróbuj skopiować do nowego całkiem pliku twój kod który dałeś tu na forum i wgraj go na serwer. Nie wiem może to coś pomoże ?
Go to the top of the page
+Quote Post
in5ane
post 15.07.2008, 22:51:47
Post #15





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

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


Nic a nic, nie dalo rady. No szkurde...

@edit:
Wylaczylem to raportoawnie bledo i czesc ;p, smiga smile.gif

Ten post edytował in5ane 15.07.2008, 22:53:51


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
Shili
post 15.07.2008, 22:55:47
Post #16





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


Wystarczy użyć edytora, który umie się z BOM rozprawić.
Ja ze swojej strony mogę polecić na szybko na przykład notepad++ (jest w polskiej wersji językowej), który w zakładce format ma taką sprytną opcję koduj bez bom.

@up
Śmigać śmiga, ale trudno to samo powiedzieć o sesjach, skoro ich nie ustawiasz, a tylko maskujesz, żeby nie pluły błędami winksmiley.jpg
Go to the top of the page
+Quote Post
in5ane
post 15.07.2008, 23:22:17
Post #17





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

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


Zaraz sprobuje tym notepad++ i powiem jak poszlo. No bo nadal jest jeszcze blad z tym ze jak sie zaloguje i mam te wiadomosc i chce przejsc do tej podstrony members to gubi sesje.

No dobra, smiga, ze juz nie ma tych errorow. Teraz musze zerknac czy gubi te sesje ;p

Już wszystko dziala winksmiley.jpg
Dzieki wszystkim za pomoc (chlopakom z IRCa tez dzieki).


--------------------
> > > Tworzenie stron < < <
Go to the top of the page
+Quote Post
michal_robak
post 31.07.2008, 11:03:28
Post #18





Grupa: Zarejestrowani
Postów: 115
Pomógł: 12
Dołączył: 13.05.2006

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


A ja mam problem z wylogowywanie. Starałem się to wykonać ale nie wyszlo mi. I albo pamiętało tylko jedą sesję i potem przy odpalaniu ponownie stronki logowało się ciągle jako jedno i to samo albo wcale nie chciało logować z automatu. O co chdozi sad.gif pomoze ktos bo mi już witki opadają sad.gif


--------------------
do wszystkiego trzeba podejść z głową a problem sam się rozwiąże
Go to the top of the page
+Quote Post
Shili
post 31.07.2008, 12:23:11
Post #19





Grupa: Zarejestrowani
Postów: 1 085
Pomógł: 231
Dołączył: 12.05.2008

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


Cytat
A ja mam problem z wylogowywanie. Starałem się to wykonać ale nie wyszlo mi.
Zaprezentuj to co starałeś się wykonać.
Go to the top of the page
+Quote Post
michal_robak
post 1.08.2008, 07:18:47
Post #20





Grupa: Zarejestrowani
Postów: 115
Pomógł: 12
Dołączył: 13.05.2006

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


no wydawało mi się, że niewiele jest do roboty a to co zrobiłem wcześniej usunałem bo nie działało mi i ciężko mi było dojść do tego co wcześniej wykombinowałem ale tak. Skoro jest wykonana funkcja logout to nie powinno być z nią problemu prawda ?. Wystarczy ją zastosować więc moim zdaniem w klasie members.php tworzymy przycisk do wylogowania:

  1. <?php
  2. include('config.php');
  3. print_r($_COOKIE);
  4. echo "<br/>";
  5. print_r($_SESSION);
  6.  
  7. ?>
  8.  
  9. <form action="logowanie.php?wyloguj=tak" method="POST">
  10. <input type="submit" name="wyloguj" value="tak">
  11. </form>
  12.  
  13. <?
  14. if(!login()) {
  15. $text = '<p style="">zaloguj no sie</p>';
  16. die($text);
  17. }
  18.  
  19. $text = 'To jest ten super tajny i super ważny dział MEMBERS!<br><br>
  20. Podoba Ci się?<br><br>
  21. Mam lepsze nowiny, sesje nadal tutaj działają.<br>
  22. Chcesz dowodu?<br>
  23. Twój nick to: '.$_SESSION['login'];
  24. die($text);
  25. ?>


przechodzimy do logowania i jak jest opcja wyloguj=tak to wykonujemy to co wykonujemy:
  1. <?php
  2.  
  3. include('config.php');
  4.  
  5. print_r($_COOKIE);
  6. echo "<br/>";
  7. print_r($_SESSION);
  8. if($_GET['wyloguj']=="tak")
  9. {
  10. logout();
  11.  
  12. header("Location: logowanie.php");
  13. }
  14.  
  15. if(!login() AND !isset($_POST['logowanie'])) {
  16. ?>

dalej idzie to co w pierwowzorze

Nie wiem jak to poprawić bo on ewidentnie usuwa ciasteczka. Ale troche tego nie rozumiem. BO jak klikamy opcje zapamietaj to trzyma te cookies ciagle i jak weźmiemy wyloguj to on nie moze sie wylogować bo jak sie wyloguje to wtedy przeciez straci tą informację więc ja tu czegoś chyba nie czae w takim razie sad.gif. SKrypt jest załaczony na stronce gdzie wypiuje w pierwszej linii $COOKIES a w drugie $_SESSION:
http://michal-pietrasz.ovh.org/log/logowanie.php

aha i zapomniałem nadmienić ze na tej podanej stronce mozna sie zalogowac jako q lub a (hasło i login takie samo).


spojrzy ktoś fachowym okien na ten kod.

Ten post edytował michal_robak 1.08.2008, 07:18:27


--------------------
do wszystkiego trzeba podejść z głową a problem sam się rozwiąże
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: 13.07.2025 - 11:50