Pereiti prie turinio

Pagelbėkit su PHP, MysQl


Rekomenduojami pranešimai

Sveiki.

Pabandysiu kuo aiškiau nupasakot.

Taigi, darau paprastą PHP registracijos ir login sistemą.

Viskas gerai, puslapiuose, kuriuos turėtų matyt tik prisijungę nariai, visur viršuje įterptas kodas:

<?php require 'configas/connection.php'; ?>
<?php

if(isset($_POST['LogIn'])){

	$EM = $_POST['email'];
	$PW = $_POST['password'];

	$result = $con->query("select * from user where Email='$EM' AND Password='$PW'");

	$row = result->fetch_array(MYSQLI_BOTH);

	session_start();

	$_SESSION["UserID"] = $row['USERID'];

	header('Location: Nariams.php);

}

?>

-------------- HTML KODAS --------------

 

Bet dar noriu pasidaryt, kad tam tikriems prisijungusiems nariams galėčiau uždėt ledimą lankytis dar kituose puslapiuose.

Sprendimą sugalvojau paprastą, kuriant duom. bazę, "user" lentelėje, kartu su Email, Username, Password ir t.t. stulpeliais sukūriau INT tipo stulpelį, pavadinimu Permissionas. Tai pvz. tiem nariam, kuriem norėčiau uždėt leidimą lankytis tam tikruose psl., tiesiog "Permissionas" stulpelyje įrašyčiau ką nors, na, tarkim "1". O visiem paprastiem nariam liktų tuščias stulpelis tas, galėčiau aišku surašyt nulius, bet nėr tikslo, tuo labiau, jei daug narių, geriau tiesiog tuščiai palikt.

Tai vat, nariai, kuriem uždėtas "1" Permissionas, gali patekt į page'us, į kuriuos negali patekt paprasti nariai, tai reiktų tuose page'uose viršuj prieš visą HTML turinį įterpt jau turimą kodą:

<?php require 'configas/connection.php'; ?>
<?php

if(isset($_POST['LogIn'])){

	$EM = $_POST['email'];
	$PW = $_POST['password'];

	$result = $con->query("select * from user where Email='$EM' AND Password='$PW'");

	$row = result->fetch_array(MYSQLI_BOTH);

	session_start();

	$_SESSION["UserID"] = $row['USERID'];

	header('Location: Nariams.php);

}

?>

-------------- HTML KODAS --------------

ir kažkaip modifikuot, kad patikrintų, ar useris "Permission" stulpelyje tikrai turi įvestą "1", ir jeigu taip, tai redirectint į tarkim Kitiems_Nariams.php, o jeigu nėra 1, tuomet redirectint atgal kad ir į "Login.php". Vat šitame man ir prireikė pagalbos. :D

Jei turit kas minutę laisvesnę, tai labai dėkingas likčiau už pagalbą :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tikriausiai šito, ačiū :)

Tai būtų

<?php require 'configas/connection.php'; ?>
<?php

       if(isset($_POST['LogIn'])){

               $EM = $_POST['email'];
               $PW = $_POST['password'];

               $result = $con->query("select * from user where Email='$EM' AND Password='$PW'");

               $row = result->fetch_array(MYSQLI_BOTH);

               session_start();

               $_SESSION["UserID"] = $row['USERID'];

               if ($row['Permissionas'] > 0) {

               header(KitiemsNariams.php); }

               else {
               header(Nariams.php);
               }

       }

?>

-------------- HTML KODAS --------------

 

taip, ar ne?

Nereikia dar papildomai kaip nors nurodyt, kad tas "Permissionas" yra user lentelėj?

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Priskirk ir

$_SESSION["Permission"] = $row['permission']

į sesiją.

Ir tikrink visus

if ($_COOKIE["Permission"] == 1) {   	} 	
else {

header('Location:Kazkur.php');
}

 

<?php require 'configas/connection.php'; ?>
<?php

       if(isset($_POST['LogIn'])){

               $EM = $_POST['email'];
               $PW = $_POST['password'];

               $result = $con->query("select * from user where Email='$EM' AND Password='$PW'");

               $row = result->fetch_array(MYSQLI_BOTH);

               session_start();

               $_SESSION["UserID"] = $row['USERID'];

               $_SESSION["Permissionas"] = $row['Permissionas']

               if ($_COOKIE["Permissionas"] == 1) {

               header(KitiemsNariams.php); }

               else {
               header(Nariams.php);
               }

       }

?>

-------------- HTML KODAS --------------

 

kažkas tokio? :)

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Nereik nurodyt.

 

SQL uzklausoje * reiskia imti viska. Jei nurodytum konkreciai user, password, dar_kasnors. Tada permissions nepasiektum. Nieko nepasiektum, tik tai kas nurodyta.

 

O kas liecia cookies ir sesija. O nera nesaugu saugot toki dalyka pas vartotoja? Niekada nesidomejau ar lengva redaguot cookies/sesijas. Tiesiog mintis.

Redagavo TheChosenOne
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Nereik nurodyt.

 

SQL uzklausoje * reiskia imti viska. Jei nurodytum konkreciai user, password, dar_kasnors. Tada permissions nepasiektum. Nieko nepasiektum, tik tai kas nurodyta.

 

O kas liecia cookies ir sesija. O nera nesaugu saugot toki dalyka pas vartotoja? Niekada nesidomejau ar lengva redaguot cookies/sesijas. Tiesiog mintis.

 

Dar klausimas,

if ($_SESSION["Permissionas"] == 1) {

nereiktų kartais vienetuko kabutėse įterpti? :D

 

TheChosenOne,

ačiū, supratau dabar :)

o dėl saugumo, tai nežinau, ar nesaugu, phpMyAdmin passwordas galingas sugeneruotas, passwordai visi hashinami.

Ačiū visiems!

 

P.S. pašaliniai redaguot galėtų nebent radę vulnerability kokiam nors linke ir per XSS paimdami cookies nebent manau

Redagavo dinastylt
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Dar klausimas,

if ($_SESSION["Permissionas"] == 1) {

nereiktų kartais vienetuko kabutėse įterpti? :D

 

TheChosenOne,

ačiū, supratau dabar :)

o dėl saugumo, tai nežinau, ar nesaugu, phpMyAdmin passwordas galingas sugeneruotas, passwordai visi hashinami.

Ačiū visiems!

 

P.S. pašaliniai redaguot galėtų nebent radę vulnerability kokiam nors linke ir per XSS paimdami cookies nebent manau

 

Kad nereikia viskas ir taip OK :D

Nebent reiktų jei čia būtų žodis...

Redagavo mariux74
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Nereik nurodyt.

 

SQL uzklausoje * reiskia imti viska. Jei nurodytum konkreciai user, password, dar_kasnors. Tada permissions nepasiektum. Nieko nepasiektum, tik tai kas nurodyta.

 

O kas liecia cookies ir sesija. O nera nesaugu saugot toki dalyka pas vartotoja? Niekada nesidomejau ar lengva redaguot cookies/sesijas. Tiesiog mintis.

 

Dėl cookies esi visiškai teisus ir tokių dalykų su jais daryti nereikėtų, bet sesijų pats vartotojas tikrai neredaguos, nes viskas vyksta server side.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

P.S. pašaliniai redaguot galėtų nebent radę vulnerability kokiam nors linke ir per XSS paimdami cookies nebent manau

 

Ne dėl pašalinių reikia tau bijoti, o dėl pačio userio kuris naudojasi tavo sistema. Jeigu tu ketini saugoti permissions į cookie, tai jis tiesiog galės jį pasiredaguoti ir pasidaryti permissions pagal save.

 

Dėl atvirų password hash'ų irgi nesijausk ramus, nebent tas hash'as sugeneruotas pagal naujausias tendencijas. O jeigu koks nors md5, tai šių dienų galingesnis PC tavo slaptažodį pajėgus dešifruoti labai lengvai. Jeigu tas passwordas dar ir 4-5 simbolių tai aš įsijungęs savo senuką nešiojamą jį dešifruoju gana greitai.

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Ne dėl pašalinių reikia tau bijoti, o dėl pačio userio kuris naudojasi tavo sistema. Jeigu tu ketini saugoti permissions į cookie, tai jis tiesiog galės jį pasiredaguoti ir pasidaryti permissions pagal save.

 

Dėl atvirų password hash'ų irgi nesijausk ramus, nebent tas hash'as sugeneruotas pagal naujausias tendencijas. O jeigu koks nors md5, tai šių dienų galingesnis PC tavo slaptažodį pajėgus dešifruoti labai lengvai. Jeigu tas passwordas dar ir 4-5 simbolių tai aš įsijungęs savo senuką nešiojamą jį dešifruoju gana greitai.

 

Tai šiuo kodo atveju tuos permissionus saugo į cookie? Jei taip, tai koks lengesnis būdas apeit tai, kur tuomet saugot?

 

O passwordai saugomi ne MD5 :D

Nuoroda į pranešimą
Dalintis kituose puslapiuose

Tai šiuo kodo atveju tuos permissionus saugo į cookie? Jei taip, tai koks lengesnis būdas apeit tai, kur tuomet saugot?

 

O passwordai saugomi ne MD5 :D

 

$_SESSION // sesija
$_COOKIE // sausainis :)

 

Tavo atveju saugoma sesijoje, tik mano replika ten konkrečiai buvo dėl cookies, kadangi buvo užsiminta ir apie juos.

Redagavo FaceToFace
Nuoroda į pranešimą
Dalintis kituose puslapiuose

Prisijunkite prie diskusijos

Jūs galite rašyti dabar, o registruotis vėliau. Jeigu turite paskyrą, prisijunkite dabar, kad rašytumėte iš savo paskyros.

Svečias
Parašykite atsakymą...

×   Įdėta kaip raiškusis tekstas.   Atkurti formatavimą

  Only 75 emoji are allowed.

×   Nuorodos turinys įdėtas automatiškai.   Rodyti kaip įprastą nuorodą

×   Jūsų anksčiau įrašytas turinys buvo atkurtas.   Išvalyti redaktorių

×   You cannot paste images directly. Upload or insert images from URL.

Įkraunama...
  • Dabar naršo   0 narių

    Nei vienas registruotas narys šiuo metu nežiūri šio puslapio.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...