Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MYSQL][PHP]System logowania/rejestracji
Forum PHP.pl > Forum > Przedszkole
kingofspace
mam zrobiony layout bardzo fajny sama grafika i html zrobilem sobie plik includowany lay.php w ktorym mam 2 funkcje
head ktora jako parametr pobiera title strony i foot gdzie jest stopka strona
w funkcje head mam dodatkowo formularz logowania;].
teraz moj epytanie brzmi jak zrobic baze (mysql zecz jasna) logowanie i rejestracje
potrzebuje podzial na rangi i dane zapisane w sesji mają byc id mail login ranga
Od czego zaczząć;]

moze lepjej jak bym to zrobil w jakims framework 9niemialem stycznosci nigdy z zrzadnym)
to bedzie strona do sprzedazy serwerów gier fps
Spawnm
Pytasz się o podstawy,
przeczytaj jakiś kurs, wszystkie to opisują.
kingofspace
no ja juz przerobilem jakies kursiki na necie i nadal niewiem od czego zaczac;] ogolni ejakies podstawy php znam
Wicepsik
Od stworzenia tabeli w bazie danych.
kingofspace
oki troszke ssie pobawilem i stworzylem cos takiego

baza
  1. CREATE TABLE `users` (
  2. `user_id` INT NOT NULL AUTO_INCREMENT ,
  3. `user_login` VARCHAR( 30 ),
  4. `user_haslo` VARCHAR( 30 ),
  5. `user_mail` VARCHAR( 30 ),
  6. `user_status` VARCHAR( 30 ),
  7. `user_kasa` VARCHAR( 30 ),
  8. `user_ranga` VARCHAR( 30 ),
  9. PRIMARY KEY ( `user_id` )
  10. );


a tu plik logi.php

  1. <?php
  2. session_register("zalogowany");
  3.  
  4. if(empty($_SESSION["zalogowany"]))$_SESSION["zalogowany"]=0;
  5.  
  6. require('include/baza.php');
  7. include('include/lay.php');
  8.  
  9.  
  10. headstr($title = "Strona główna");
  11. function ShowLogin($tresc = ""){
  12. echo('<div class="n">
  13. <div class="nt">
  14. <h1>Logowanie...</h1>
  15. </div>
  16. ');
  17. echo('.$title.');
  18.  
  19. echo('
  20. <div class="nb"><br/><div><a href="#"><br/></a></div></div>
  21. </div>
  22. ');
  23. }
  24. echo('<div id="left">');
  25.  
  26.  
  27. $user=$_POST["user"];
  28. $haslo=$_POST["haslo"];
  29. echo($user);
  30. echo($haslo);
  31. //cos do logowania haha.gif
  32.  
  33.  
  34.  
  35.  
  36.  
  37.  
  38. echo('</div>');
  39. footstr();
  40. ?>
  41.  
  42.  
  43.  
  44.  



Co dalej mam zrobic?
Makciek
1) połącz się z bazą danych
2) filtruj jakoś te zmienne, radzę ci kodować hasła o tak:
  1. SH1(MD5($_ZMIENNA_Z_HASŁEM))

a tu podstawowa filtracja:
  1. [b]$password = mysql_real_escape_string([/b][b]strip_tags($_POST['haslo'])[/b][b])[/b]

3) Sprawdzanie czy użytkownik istnieje, hasła są takie same (jeśli każesz je powtórzyć), wygenerowanie kodu aktywacji i wysłanie e-maila aktywujacego
3.1)dopisanie do bazy loginu, hasła itp + kod aktywacji

Przy logowaniu też kodujesz hasła i porównujesz zakodowane formy
kingofspace
na początku chce zrobic logowanie rejestracja to jest maly pikus;]

w tym pliku mam juz wyciagniete zmienne z posta do zwyklej zmiennej jak je przefiltrowac i zakodowac ?

moj plik polaczenie z baza jest includowane z jakiegos pliczku

  1.  
  2. <?php
  3. session_register("zalogowany");
  4.  
  5. if(empty($_SESSION["zalogowany"]))$_SESSION["zalogowany"]=0;
  6.  
  7. require('include/baza.php');
  8. include('include/lay.php');
  9.  
  10.  
  11. headstr($title = "Strona główna");
  12. function ShowLogin($tresc = ""){
  13. echo('<div class="n">
  14. <div class="nt">
  15. <h1>Logowanie...</h1>
  16. </div>
  17. ');
  18. echo('.$title.');
  19.  
  20. echo('
  21. <div class="nb"><br/><div><a href="#"><br/></a></div></div>
  22. </div>
  23. ');
  24. }
  25. echo('<div id="left">');
  26.  
  27.  
  28. $user=$_POST["user"];
  29. $haslo=$_POST["haslo"];
  30. echo($user);
  31. echo($haslo);
  32.  
  33.  
  34. //cos do logowania haha.gif
  35.  
  36.  
  37.  
  38.  
  39.  
  40.  
  41. echo('</div>');
  42. footstr();
  43. ?>
  44.  
  45.  
  46.  
  47.  
Makciek
sorry w kodowaniu powinno być SHA1 a nie SH1, no ale nie mogę wy-edytować posta :/ więc pisze w nowym
kingofspace
mam tak przefilrowane zmienne dobrze?

  1. <?php
  2. session_register("zalogowany");
  3.  
  4. if(empty($_SESSION["zalogowany"]))$_SESSION["zalogowany"]=0;
  5.  
  6. require('include/baza.php');
  7. include('include/lay.php');
  8.  
  9.  
  10. headstr($title = "Strona główna");
  11. function ShowLogin($tresc = ""){
  12. echo('<div class="n">
  13. <div class="nt">
  14. <h1>Logowanie...</h1>
  15. </div>
  16. ');
  17. echo('.$title.');
  18.  
  19. echo('
  20. <div class="nb"><br/><div><a href="#"><br/></a></div></div>
  21. </div>
  22. ');
  23. }
  24. echo('<div id="left">');
  25.  
  26.  
  27. $user=$_POST["user"];
  28. $haslo=$_POST["haslo"];
  29. //filtrowanie zmiennych
  30. $haslo=mysql_real_escape_string($haslo);
  31. $user=strip_tags($user);
  32. $haslo=strip_tags($haslo);
  33.  
  34.  
  35. echo($user);
  36. echo($haslo);
  37.  
  38.  
  39. //cos do logowania haha.gif
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46. echo('</div>');
  47. footstr();
  48. ?>
  49.  
  50.  
  51.  
  52.  
Makciek
sorry bbcode cos nawala :/

kod taki:

$user=mysql_real_escape_string(strip_tags($_POST['user']));//filtrujemy
#
$haslo=SHA1(MD5($_POST['haslo']));//kodujemy
#

echo($user);
#
echo($haslo);
kingofspace
nierozumiem tego co podales niewiem ocb
darko
Cytat
$user=mysql_real_escape_string(strip_tags($user));//filtrujemy
$haslo=SHA1(MD5($haslo));


Jak usunie $user i $haslo, to co to niby ma robić?

Raczej:

  1. $user=mysql_real_escape_string(strip_tags($_POST["user"]));//filtrujemy
  2. $haslo=MD5($_POST["haslo"]);


po co SHA1(MD5()); ?
Makciek
Cytat(Makciek @ 25.11.2009, 17:26:48 ) *
sorry bbcode cos nawala :/

kod taki:

$user=mysql_real_escape_string(strip_tags($_POST['user']));//filtrujemy
// mysql_real_escape_string() - nie pozwala wykonać ataku SQL Injection
// strip_tags() - nie pzwala zrobic ataku xss
// zmieniłem tylko to, że wpakowałem to wszystko w jedno tongue.gif
//ps. mysql_realy... działa tylko po połączeniu z bazą
#
$haslo=SHA1(MD5($_POST['haslo']));//kodujemy
// SHA1() - jedno hashowanie
// MD5() - drugie hashowanie

#

echo($user);
#
echo($haslo);


a tak dokładnie to czego nie rozumiesz?
kingofspace
sobie juz poradzilem zmienne zwracaja mi zafiltrowane i zakodowane dane teraz mam problem z polączeniem do mysql

mam plik includowany
  1.  
  2. <?
  3. $db_host="localhost";
  4. $db_user="uzytkownik";
  5. $db_pass="haslo";
  6. $db_data="bazaa_panel";
  7.  
  8.  
  9. $link = mysql_connect ("$db_host", "$db_user", "$db_pass")
  10. or die ("Nie można się połączyć");
  11. print ("Połączenie nawiązane");
  12. mysql_select_db($db_data,$link);
  13. ?>
  14.  



w pliku z logowaniemam taki kod

  1. <?php
  2. session_register("zalogowany");
  3.  
  4. if(empty($_SESSION["zalogowany"]))$_SESSION["zalogowany"]=0;
  5.  
  6. require('include/baza.php');
  7. include('include/lay.php');
  8.  
  9.  
  10. headstr($title = "Strona główna");
  11. function ShowLogin($tresc = ""){
  12. echo('<div class="n">
  13. <div class="nt">
  14. <h1>Logowanie...</h1>
  15. </div>
  16. ');
  17. echo('.$title.');
  18.  
  19. echo('
  20. <div class="nb"><br/><div><a href="#"><br/></a></div></div>
  21. </div>
  22. ');
  23. }
  24. echo('<div id="left">');
  25.  
  26.  
  27. $user=$_POST["user"];
  28. $haslo=$_POST["haslo"];
  29. //filtrowanie zmiennych
  30. $haslo=mysql_real_escape_string($haslo);
  31. $user=strip_tags($user);
  32. $haslo=strip_tags($haslo);
  33. //zakodowanie hasla
  34. $haslo=MD5($haslo);
  35.  
  36. $zapytanie = "SELECT `user_id `,`user_login`,`user_haslo `,`user_mail `,`user_status `,`user_kasa`,`user_ranga FROM `users` WHERE `user_login`='$user' AND `user_haslo `='$haslo'";
  37. $wynik = mysql_query($zapytanie);
  38. $wiersze = mysql_num_rows($wynik);
  39. echo($wiersze);
  40.  
  41. echo($user);
  42. echo($haslo);
  43.  
  44.  
  45. //cos do logowania haha.gif
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52. echo('</div>');
  53. footstr();
  54. ?>
  55.  
  56.  
  57.  
  58.  


i mi wywala bład


Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/kos/domains/kingofspace.d2.pl/public_html/login.php on line 40

wydaje mi sie ze niemoze polaczyc z baza jednak wyswietla w skrypcie do lączenia z baza
Połączenie nawiązane

co jest nie tak?
Makciek
@darko

chyba nie zauwazyles tongue.gif, poprawile to juz wczesniej smile.gif

co do SHA1(MD5()) - to tak dla pewności tongue.gif
darko
albo trzymasz w bazie niezahashowane hasło w postaci zwykłego tekstu, albo nie ma takiego użytkownika
kingofspace
haslo mam zahashowane takim samym kodowaniem login mam taki sam jak wpisuje w formularzu wydaje moze mam zle zapytanie bo mi ni eprzechodzi przez phpmyadmina
Makciek
j/w

pozatym po co dawac takie dlugie zapytanie:
$zapytanie = "SELECT `user_id `,`user_login`,`user_haslo `,`user_mail `,`user_status `,`user_kasa`,`user_ranga FROM `users` WHERE `user_login`='$user' AND `user_haslo `='$haslo'";

nie lepiej dać po prostu :


$zapytanie = "SELECT * FROM `users` WHERE `user_login`='$user' AND `user_haslo `='$haslo'";? tongue.gif

może sproboj:
mysql_query(...) or die (mysql_error());
kingofspace
mialem racje mam blad w zapytaniu zwrocilo blad

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '` WHERE `user_login`='kingofspace' AND `user_haslo `='12bea9674f3d121afd7750d332' at line 1
Makciek
Cytat(kingofspace @ 25.11.2009, 17:53:31 ) *
mialem racje mam blad w zapytaniu zwrocilo blad

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '` WHERE `user_login`='kingofspace' AND `user_haslo `='12bea9674f3d121afd7750d332' at line 1


eh to spacja :/
`user_haslo ` // spacja na koncu
powinno byc
`user_haslo`
darko
spróbuj tak:
  1. $zapytanie = "SELECT * FROM users WHERE user_login='$user' AND user_haslo='$haslo'";
kingofspace
dziala wyswietla mi sie liczba wierszy pobranych z bazy
moj skrypt przybral forme
http://wklej.org/id/215652/

co proponujecie dalej?
Makciek
wiesz co dam ci moj pierwszy skrypt logowania
co prawda jest on nieoptymalny i nie radzę go stosować ale możesz w nim zobaczyć co tam jest filtrację itp. tongue.gif
oczywiście nie jest to wzór do naśladowania, ale mały pokaz co minimum powinien posiadać taki skrypt
// session['lvl'] 1 = zwykly uzytkownik, a session['lvl'] 2 = admin

http://wklej.to/Pbvi

ps. ten kod do generowania to mój fail, to jest przy rejestracji
ps2. w miom jest html specjal hars, ale to jest cos w stylu strip_tags, tylko ze strip nie zostawia śmieci

@edit
co do hasła i filtracji, to jak mówiłem, to stary skrypt
@edit2
eh dopiero po czasie człowiek zauważa jekie głupoty kiedyś pisał tongue.gif
gdy już zakończysz pisanie skryptu i wszystko będzie działać to usuń mysql_error()
darko
Zrób uprawnienia, umieść w bazie nowe pole np. typu small integer, ustal poziom uprawnień dla poszczególnych ról.

Jeśli podane login i hasło będą pasować do tych w bazie, to zapamiętaj w sesji jakieś jednoznacznie identyfikujące konkretnego użytkownika informacje (np. wygeneruj coś jak token na podstawie na przykład: id, loginu i daty dodania usera do bazy, dodaj sól i zahashuj) dla kolejnych podstron, które będzie odwiedzał, na przykład:
  1. $q = "select user_id, user_login, user_date_add from users WHERE user_login='$user' AND user_haslo='$haslo'";
  2. $result = mysql_query($q);
  3. // (...)
  4. // fetch_array
  5. // (...) i zapisz do zmiennych o tych samych nazwach, następnie
  6.  
  7. $_SESSION["__user_token"] = md5($user_id.$user_login.$user_date_add.$salt);
  8. $_SESSION["__user_auth_id"] = $user_id;

i tyle, później jak sprawdzasz na jakiejś podstronie token, to wyciągasz po id_user z bazy te same dane, sól masz wszędzie taką samą, haszujesz i porównujesz z zawartością zmiennej $_SESSION["__user_token"], jeśli wartości są identyczne, to znaczy, że user jest zalogowany.

Na końcu wypadałoby zrobić wylogowanie usuwając zmienne sesyjne i sesję.
kingofspace
stworzylem taki skrypcik wydaje mi sie ze dziala jak mam zrobic ze po pewnym czasie po zalogowaniu przeniesie na inną strone?

  1. <?php
  2. session_register("zalogowany");
  3.  
  4. if(empty($_SESSION["zalogowany"]))$_SESSION["zalogowany"]=0;
  5.  
  6. require('include/baza.php');
  7. include('include/lay.php');
  8.  
  9.  
  10. headstr($title = "Strona główna");
  11.  
  12. echo('<div id="left">');
  13.  
  14.  
  15. $user=$_POST["user"];
  16. $haslo=$_POST["haslo"];
  17. //filtrowanie zmiennych
  18. $haslo=mysql_real_escape_string($haslo);
  19. $user=strip_tags($user);
  20. $haslo=strip_tags($haslo);
  21. //zakodowanie hasla
  22. $haslo=MD5($haslo);
  23.  
  24.  
  25. $zapytanie = "SELECT * FROM users WHERE user_login='$user' AND user_haslo='$haslo'";
  26. $wynik=mysql_query($zapytanie);
  27. $wiersze = mysql_num_rows($wynik);
  28. $zwrotnik=mysql_fetch_array($wynik);
  29.  
  30. $_zwrotnik["user_id"]=$userid;
  31. $_zwrotnik["user_login"]=$userlogin;
  32. $_zwrotnik["user_mail"]=$usermail;
  33. $_zwrotnik["user_status"]=$userstatus;
  34. $_zwrotnik["user_kasa"]=$userkasa;
  35. $_zwrotnik["user_ranga"]=$userranga;
  36.  
  37.  
  38. if($wiersze=1)
  39. {
  40. $_SESSION["zalogowany"]=1;
  41. $_SESSION["login"]=$user;
  42. if($userstatus=confirm)
  43. {
  44. if($userranga=0)
  45. {
  46. $_SESSION["kasa"]=$userkasa;
  47. $_SESSION["ranga"]=administrator;
  48. echo('Zalogowano jako administrator');
  49. }
  50. else
  51. {
  52. $_SESSION["kasa"]=$userkasa;
  53. $_SESSION["ranga"]=uzytkownik;
  54. echo('Zalogowano jako użytkownik');
  55. }
  56.  
  57. }
  58. else
  59. {
  60. echo('to konto niezostalo jeszcze aktywowane odbierz poczte albo skontaktuj sie z administratorem serwisu');
  61. }
  62.  
  63.  
  64.  
  65. }
  66. else
  67. {
  68. <div class="n">
  69. <div class="nt">
  70. <h1>Logowanie</h1>
  71. Zalogowanie nie bylo możliwe zly login lub haslo
  72. </div><div class="nb"><br/><div><a href="#"><br/></a></div></div>
  73. </div>
  74.  
  75.  
  76. ');
  77.  
  78.  
  79.  
  80.  
  81.  
  82. }
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90. echo('</div>');
  91. footstr();
  92. ?>
  93.  
  94.  
  95.  
  96.  


mile widziana krytyka tego skryptu
darko
Cytat
mile widziana krytyka tego skryptu


Proszę bardzo:
- brak PDO
- nieprawidłowe wyciągnięcie danych z zapytania (linia 30)
- tylko dwa poziomy uprawnień
- narzucony z góry "layout"

Ad. nieprawidłowe wyciągnięcie danych z zapytania (linia 30), powinno być tak:

  1. $_zwrotnik=mysql_fetch_row($wynik);
  2. $userid=$_zwrotnik[0];
  3. $userlogin=$_zwrotnik[1];
  4. $usermail=$_zwrotnik[2];
  5. $userstatus=$_zwrotnik[3];
  6. $userkasa=$_zwrotnik[4];
  7. $userranga=$_zwrotnik[5];
kingofspace
niewiem co to POD
co masz na mysli nie prawidlowe?
co masz na mysli bledy logiczne
ja potrzebuje 2 poziomy uprawnien

aktualnie mam skrypt w takiej formie

  1. <?php
  2. session_register("zalogowany");
  3.  
  4. if(empty($_SESSION["zalogowany"]))$_SESSION["zalogowany"]=0;
  5.  
  6. require('include/baza.php');
  7. include('include/lay.php');
  8.  
  9.  
  10. headstr($title = "Strona główna");
  11.  
  12. echo('<div id="left">');
  13.  
  14. echo('<div class="n">
  15. <div class="nt">
  16. <h1>Logowanie</h1>');
  17. $user=$_POST["user"];
  18. $haslo=$_POST["haslo"];
  19. //filtrowanie zmiennych
  20. $haslo=mysql_real_escape_string($haslo);
  21. $user=strip_tags($user);
  22. $haslo=strip_tags($haslo);
  23. //zakodowanie hasla
  24. $haslo=MD5($haslo);
  25.  
  26.  
  27. $zapytanie = "SELECT * FROM users WHERE user_login='$user' AND user_haslo='$haslo'";
  28. $wynik=mysql_query($zapytanie);
  29. $wiersze = mysql_num_rows($wynik);
  30. $zwrotnik=mysql_fetch_array($wynik);
  31.  
  32. $userid=$_zwrotnik["user_id"];
  33. $userlogin=$_zwrotnik["user_login"];
  34. $usermail=$_zwrotnik["user_mail"];
  35. $userstatus=$_zwrotnik["user_status"];
  36. $userkasa=$_zwrotnik["user_kasa"];
  37. $userranga=$_zwrotnik["user_ranga"];
  38.  
  39.  
  40. if($wiersze=='1')
  41. {
  42. $_SESSION["zalogowany"]=1;
  43. $_SESSION["login"]=$user;
  44. if($userstatus=='confirm')
  45. {
  46. if($userranga=='1')
  47. {
  48. $_SESSION["kasa"]=$userkasa;
  49. $_SESSION["ranga"]=administrator;
  50. echo('Zalogowano jako administrator<br/>');
  51. echo('<a href="/admpanel.php">Przejdź do panelu admina</a>');
  52. }
  53. else
  54. {
  55. $_SESSION["kasa"]=$userkasa;
  56. $_SESSION["ranga"]=uzytkownik;
  57. echo('Zalogowano jako użytkownik<br/>');
  58. echo('<a href="panel.php">Przejdź do panelu użytkownika</a>');
  59. }
  60.  
  61. }
  62. else
  63. {
  64. echo('to konto niezostalo jeszcze aktywowane odbierz poczte albo skontaktuj sie z administratorem serwisu');
  65. }
  66.  
  67.  
  68.  
  69. }
  70. else
  71. {
  72.  
  73. Zalogowanie nie bylo możliwe zly login lub haslo
  74.  
  75.  
  76.  
  77. ');
  78.  
  79.  
  80.  
  81.  
  82.  
  83. }
  84.  
  85.  
  86.  
  87.  
  88.  
  89. echo('</div><div class="nb"><br/><div><a href="#"><br/></a></div></div>
  90. </div>');
  91.  
  92. echo('</div>');
  93. footstr();
  94. ?>
  95.  
  96.  
  97.  


wykonywanie tego skryptu zatrzymuje si ena warunku gddzie jest sprawdzane czy zmienna status ma wartos confirm wtedy wykonuje sie kod else {
}

pomoze ktoś

refreshe
darko
Popraw tak, jak Ci napisałem powyżej na:

  1. $_zwrotnik=mysql_fetch_row($wynik);
  2. $userid=$_zwrotnik[0];
  3. $userlogin=$_zwrotnik[1];
  4. $usermail=$_zwrotnik[2];
  5. $userstatus=$_zwrotnik[3];
  6. $userkasa=$_zwrotnik[4];
  7. $userranga=$_zwrotnik[5];
kingofspace
poprawilem na tak jak ty kazaleś lecz nadal przy probie logowania mam wyswietlania to konto niezostalo jeszcze aktywowane odbierz poczte albo skontaktuj sie z administratorem serwisu

moj kod
  1. <?php
  2. session_register("zalogowany");
  3.  
  4. if(empty($_SESSION["zalogowany"]))$_SESSION["zalogowany"]=0;
  5.  
  6. require('include/baza.php');
  7. include('include/lay.php');
  8.  
  9.  
  10. headstr($title = "Strona główna");
  11.  
  12. echo('<div id="left">');
  13.  
  14. echo('<div class="n">
  15. <div class="nt">
  16. <h1>Logowanie</h1>');
  17. $user=$_POST["user"];
  18. $haslo=$_POST["haslo"];
  19. //filtrowanie zmiennych
  20. $haslo=mysql_real_escape_string($haslo);
  21. $user=strip_tags($user);
  22. $haslo=strip_tags($haslo);
  23. //zakodowanie hasla
  24. $haslo=MD5($haslo);
  25.  
  26.  
  27. $zapytanie = "SELECT * FROM users WHERE user_login='$user' AND user_haslo='$haslo'";
  28. $wynik=mysql_query($zapytanie);
  29. $wiersze = mysql_num_rows($wynik);
  30.  
  31. $_zwrotnik=mysql_fetch_row($wynik);
  32. $userid=$_zwrotnik[0];
  33. $userlogin=$_zwrotnik[1];
  34. $usermail=$_zwrotnik[2];
  35. $userstatus=$_zwrotnik[3];
  36. $userkasa=$_zwrotnik[4];
  37. $userranga=$_zwrotnik[5];
  38.  
  39.  
  40. if($wiersze=='1')
  41. {
  42. $_SESSION["zalogowany"]=1;
  43. $_SESSION["login"]=$user;
  44. if($userstatus=='confirm')
  45. {
  46. if($userranga=='1')
  47. {
  48. $_SESSION["kasa"]=$userkasa;
  49. $_SESSION["ranga"]=administrator;
  50. echo('Zalogowano jako administrator<br/>');
  51. echo('<a href="/admpanel.php">Przejdź do panelu admina</a>');
  52. }
  53. else
  54. {
  55. $_SESSION["kasa"]=$userkasa;
  56. $_SESSION["ranga"]=uzytkownik;
  57. echo('Zalogowano jako użytkownik<br/>');
  58. echo('<a href="panel.php">Przejdź do panelu użytkownika</a>');
  59. }
  60.  
  61. }
  62. else
  63. {
  64. echo('to konto niezostalo jeszcze aktywowane odbierz poczte albo skontaktuj sie z administratorem serwisu');
  65. }
  66.  
  67.  
  68.  
  69. }
  70. else
  71. {
  72.  
  73. Zalogowanie nie bylo możliwe zly login lub haslo
  74.  
  75.  
  76.  
  77. ');
  78.  
  79.  
  80.  
  81.  
  82.  
  83. }
  84.  
  85. echo '<pre>';
  86.  
  87. print_r($$_SESSION);
  88.  
  89. echo '</pre>';
  90.  
  91.  
  92.  
  93. echo('</div><div class="nb"><br/><div><a href="#"><br/></a></div></div>
  94. </div>');
  95.  
  96. echo('</div>');
  97. footstr();
  98. ?>
  99.  
  100.  
  101.  
darko
To zamień jeszcze to:

$_zwrotnik=mysql_fetch_row($wynik);
$userid=$_zwrotnik[0];
$userlogin=$_zwrotnik[1];
$usermail=$_zwrotnik[2];
$userstatus=$_zwrotnik[3];
$userkasa=$_zwrotnik[4];
$userranga=$_zwrotnik[5];

na:

  1. while($_zwrotnik=mysql_fetch_array($wynik,MYSQL_NUM)) {
  2. $userid=$_zwrotnik[0];
  3. $userlogin=$_zwrotnik[1];
  4. $usermail=$_zwrotnik[2];
  5. $userstatus=$_zwrotnik[3];
  6. $userkasa=$_zwrotnik[4];
  7. $userranga=$_zwrotnik[5];
  8. }
kingofspace
darko niestety dalej wywala mi ze konto niepotwierdzone
darko
daj: print_r($zapytanie); print_r($wynik); print_r($userstatus);
kingofspace
wywalilo tresc ze konto nie potwierdzone plus gratis


SELECT * FROM users WHERE user_login='kingofspace' AND user_haslo='12bea9674f3d121afd7750d332933b41'Resource id #5kingofspace777@gmail.com
darko
Masz przesunięty jeden indeks, wypluwa mail zamiast status, tak już powinno hulać:
  1. while($_zwrotnik=mysql_fetch_array($wynik,MYSQL_ASSOC)) {
  2. $userid=$_zwrotnik["user_id"];
  3. $userlogin=$_zwrotnik["user_login"];
  4. $usermail=$_zwrotnik["user_mail"];
  5. $userstatus=$_zwrotnik["user_status"];
  6. $userkasa=$_zwrotnik["user_kasa"];
  7. $userranga=$_zwrotnik["user_ranga"];
  8. }


Daj tak i wyprintuj jeszcze raz.

kingofspace
to dziala faktycznie dziekuje ale pojawil sie kolejny problem haha.gif

zalogowalem sie w login.php i dalem tam linka do panel.php i po kliknieciu w link i dla sprawdzenia co mam w sesji profilaktycznie wywolalem
  1. echo('<pre>');
  2. print_r($_SESSION);
  3. echo('</pre>');


wyskoczylo na www

Array
(
[zalogowany] => 1
)

a jak wywolalem to po zalogowaniu w pliku login.php
wywalilo

Array
(
[zalogowany] => 1
[login] => kingofspace
[kasa] => 0
[ranga] => uzytkownik
)

gdzie mi znikly pozostale elementy tablicy?
crackcomm
Cytat(darko @ 25.11.2009, 17:35:12 ) *
po co SHA1(MD5()); ?


Dla bezpieczeństwa ?
darko
linia 90 (?) print_r($$_SESSION); zamień na print_r($_SESSION);

Co do sesji, to gdzieś po drodze nadpisujesz albo usuwasz te dane. Przeanalizuj swój kod pod kątem warunków i miejsc, w których podstawiasz coś pod:
$_SESSION["zalogowany"]
$_SESSION["login"]
$_SESSION["kasa"] oraz
$_SESSION["ranga"]

ps. $_SESSION["ranga"]=administrator; i $_SESSION["ranga"]=uzytkownik; zamieniłbym na odpowiednio $_SESSION["ranga"]="administrator"; i $_SESSION["ranga"]="uzytkownik";

crackcomm
A ja zmieniłbym na liczby, użytkownik =0, moderator =1, super mod =2, admin =3?
kingofspace
no poprawilem to ""
ale z tym dlaczego niezapisuje sie do sesji odpowiednio to niemam pojecia moglbys zobaczyc co i jak?

w pliku login.php mam cos takiego

  1. <?php
  2. session_register("zalogowany");
  3.  
  4. if(empty($_SESSION["zalogowany"]))$_SESSION["zalogowany"]=0;
  5.  
  6. require('include/baza.php');
  7. include('include/lay.php');
  8.  
  9.  
  10. headstr($title = "Strona główna");
  11.  
  12. echo('<div id="left">');
  13.  
  14. echo('<div class="n">
  15. <div class="nt">
  16. <h1>Logowanie</h1>');
  17. $user=$_POST["user"];
  18. $haslo=$_POST["haslo"];
  19. //filtrowanie zmiennych
  20. $haslo=mysql_real_escape_string($haslo);
  21. $user=strip_tags($user);
  22. $haslo=strip_tags($haslo);
  23. //zakodowanie hasla
  24. $haslo=MD5($haslo);
  25.  
  26.  
  27. $zapytanie = "SELECT * FROM users WHERE user_login='$user' AND user_haslo='$haslo'";
  28. $wynik=mysql_query($zapytanie);
  29. $wiersze = mysql_num_rows($wynik);
  30.  
  31.  
  32.  
  33. while($_zwrotnik=mysql_fetch_array($wynik,MYSQL_ASSOC)) {
  34.  
  35. $userid=$_zwrotnik["user_id"];
  36.  
  37. $userlogin=$_zwrotnik["user_login"];
  38.  
  39. $usermail=$_zwrotnik["user_mail"];
  40.  
  41. $userstatus=$_zwrotnik["user_status"];
  42.  
  43. $userkasa=$_zwrotnik["user_kasa"];
  44.  
  45. $userranga=$_zwrotnik["user_ranga"];
  46.  
  47. }
  48.  
  49. if($wiersze=='1')
  50. {
  51. $_SESSION["zalogowany"]=1;
  52. $_SESSION["login"]=$user;
  53. if($userstatus=='confirm')
  54. {
  55. if($userranga=='1')
  56. {
  57. $_SESSION["kasa"]=$userkasa;
  58. $_SESSION["ranga"]="administrator";
  59. echo('Zalogowano jako administrator<br/>');
  60. echo('<a href="/admpanel.php">Przejdź do panelu admina</a>');
  61. }
  62. else
  63. {
  64. $_SESSION["kasa"]=$userkasa;
  65. $_SESSION["ranga"]="uzytkownik";
  66. echo('Zalogowano jako użytkownik<br/>');
  67. echo('<a href="panel.php">Przejdź do panelu użytkownika</a>');
  68. }
  69.  
  70. }
  71. else
  72. {
  73. echo('to konto niezostalo jeszcze aktywowane odbierz poczte albo skontaktuj sie z administratorem serwisu');
  74.  
  75. }
  76.  
  77.  
  78.  
  79. }
  80. else
  81. {
  82.  
  83. Zalogowanie nie bylo możliwe zly login lub haslo
  84.  
  85.  
  86.  
  87. ');
  88.  
  89.  
  90.  
  91.  
  92.  
  93. }
  94.  
  95.  
  96. echo('<pre>');
  97. print_r($_SESSION);
  98. echo('</pre>');
  99. echo('</div><div class="nb"><br/><div><a href="#"><br/></a></div></div>
  100. </div>');
  101.  
  102. echo('</div>');
  103. footstr();
  104. ?>
  105.  
  106.  
  107.  
  108.  


a w panel .php

  1. <?php
  2.  
  3. include('include/lay.php');
  4. headstr($title = "Strona główna");
  5.  
  6. if($_SESSION["zalogowany"]=1)
  7. {
  8. //początek strony
  9.  
  10.  
  11. <div class="n">
  12. <div class="nt">
  13. <h1>Nowa wiadomość</h1>
  14. </div>
  15. ');
  16. echo('<pre>');
  17. print_r($_SESSION);
  18. echo('</pre>');
  19. echo('
  20. <div class="nb"><br/> <div><a href="#"><br/></a></div></div>
  21. </div>
  22. ');
  23.  
  24. //koniec strony
  25. }
  26. else
  27. {
  28. echo('zaloguj się aby uzyskac dostęp do tej strony');
  29. }
  30. footstr();
  31. ?>


to akurat niema znaczenia czy bedzie na cyfrach czy na nazwach rang
darko
w panel.php na samym początku daj

session_start();

obowiązkowo, a session_register jest zdeprecjonowane i nie korzystaj z tego
kingofspace
no i dziala mam juz calą tablice;]
a co moglbym poprawic w mojim skrypcie logowani ejest to bezpieczne?
darko
Przeginasz... tongue.gif kończę wątek, załóż nowy temat
Quantum
Cytat(crackcomm)
Cytat(darko @ 25.11.2009, 17:35:12 ) *
po co SHA1(MD5()); ?


Dla bezpieczeństwa ?


crackcomm, darko raczej chodziło po co hashować sha-1 zahashowany string już przez md5 smile.gif lepiej dodać losową sól (którą zapisujesz w bazie dla późniejszego logowania), i hashujesz tylko sha-1, na przykład :
  1.  
  2. $salt = str_shuffle(sha1(mt_rand(1, 99999)));
  3. $haslo = sha1($haslo.$salt);
  4.  
darko
@sniffer32 czytasz mi w myślach smile.gif

ps. można też zrobić sól na podstawie loginu, id i daty dodania usera i wtedy wystarczy md5($haslo.$sol) lub sha1($haslo.$sol) i wystarczy, każdy user będzie miał inną sól i nie trzeba jej nigdzie zapisywać, bo można spokojnie odtworzyć na podstawie tych danych.
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.