[ Nedja995 @ 20.06.2013. 18:31 ] @
Pozdrav pravim login skriptu i cilj mi je da bude shto sigurnija.pravio sam vec neshto par puta i slabo mi ide ali sad sam upotrebio oop i skembo sam neshto ali nisam siguran da nisam promashio sve koristeci objekte.A i zanima me taj deo cuvanja mysql lozinke npr dovoljno je sigurno kada se taj .php fajl koji je npr kod mene DB.php postave na web space normalno u onaj folder gde se sajt postavlja (na kompu htdocs na netu ne znam kako se zove jednom davno sam koristio web hosting neki) da li ima neko mesto na web hostingu gde se takve stvari stavljaju??sredio sam je shto sam bolje mogao ako neshto nerazumete pitajte koristio sam malo eng malo srpski zato shto mi je tako lakshe. DB.php Code: <?php class DB { private static $host = "localhost"; private static $dbUsername = "root"; private static $dbPass = "root"; private static $dbBase = "proba"; function connect($odabir) //true za konektovanje false za diskonektovanje { if($odabir==true) { mysql_connect(DB::$host,DB::$dbUsername,DB::$dbPass) or die("Greshka pri spajanju na mysql " . mysql_error()); mysql_select_db(DB::$dbBase) or die("Greshka pri spajanju na bazu!".DB::$dbBase . mysql_error()); } else { mysql_close() or die("Greshka pri zatvaranju mysql konekcije!" . mysql_error()); } } function doQuery($query) //pali konekcija obradjuje mysql query i zatvara je { $this->connect(true); mysql_query($query) or die("\nGreska pri izvrshenju mysql upita!"); $this->connect(true); } function addLoginAdmin($adminId,$sessionId) //dodaje admina kad se loguje u mysql tablicu logedadmins { $this->connect(true); $sqlAddLogin="INSERT INTO logedadmins (adminId, sessionId) VALUES ( '$adminId', '$sessionId' )"; $this->doQuery($sqlAddLogin); $this->connect(false); } // Return mysql_query result (use mysql_fetch_array($loginAdmins)) function getLogedAdmins() { $this->connect(true); $sqlGetLogedAdmins="SELECT * FROM logedadmins"; $loginAdmins=mysql_query($sqlGetLogedAdmins); $this->connect(false); return $loginAdmins; } function deleteLogedAdmin($sessionId) //koristim je samo u logout funkciji { $this->connect(true); $sqlReq="DELETE FROM logedadmins WHERE sessionId='$sessionId'"; $this->doQuery($sqlReq); $this->connect(false); } // Return mysql_query result (use mysql_fetch_array($regAdmins)) function getRegAdmins() //Koristim je u slucaju logovanja radi provere postojanja username i passworda unetih { $this->connect(true); $sqlGetRegAdmins="SELECT username,password FROM admins"; $regAdmins=mysql_query($sqlGetRegAdmins); $this->connect(false); return $regAdmins; } } ?> Pristup.php Code: <?php session_start(); require_once($_SERVER['DOCUMENT_ROOT']."/taxi/DB.php"); class Pristup { //KONSTANTE static $inputMax = 50; function checkInput($input) { //proveravace ulaz } function isValidUnamePass($username,$password) //Proverava da li uneti username i pass postoje u bazi { $db=new DB; $admins=$db->getRegAdmins(); while($adminRed=mysql_fetch_array($admins)) { if($adminRed['username']==$username && $adminRed['password']==$password) { return true; break; } } } function login($uName,$pass) { if($this->checkInput($uName) && $this->checkInput($pass)) { if ($this->isValidUnamePass($uName,$pass)) { $_SESSION['adminId']=$uName; $_SESSION['sessionId']=session_id(); $db=new DB(); $db->addLoginAdmin($uName, $_SESSION['sessionId']); } } } function logout() { if(isset($_SESSION)) { $db = new DB; $db->deleteLogedAdmin(session_id()); session_destroy(); //Dodacu i kod za cuvanje vremena logovanja i logouta } } function dozvola() //Stavljam je samo na admin strane { if(!(isset($_SESSION))) { //redirekcija na stranicu login } else if(isset($_SESSION['sessionId'])) { $db=new DB(); $sesArr=$db->getLogedAdmins(); while($adminSes=mysql_fetch_array($sesArr)) { if($adminSes['sessionId']==$_SESSION['sessionId']) { echo "LOGOVANI STE KAO: " . $_SESSION['adminId']; } else { //Ovo bi mogao da svatim kao pokushaj upada??(kloniranje sesije??) //ako mogu mislio sam da napravim klasu sa funkcijama koje ce da mi //cuvaju sve probleme i ip adresu i sve shto mogu da pokupim od informacija //i koristio bio je na josh neka mesta } } } } } ?> shta mislite o nacinu na koji radi skripta (na zashticenim stranicama bi pravio objekat Pristup i koristio funkciju dozvola(), tamo gde treba login pravio bi objekat Pristup i koristio login() f-ju gde mi bude trebao ispis iz baze a to cu josh da ubacim f-je u DB klasu pa bi pravio objekat klase i vadio ispis)??Da li je u tome fora OOPa da li se tako koristi??da li je potrebno da pravim klasu koja ce da mi cuva probleme na sajtu(poznajem samo mysql_errno() i mysql_error() fje a mislim da ih ima josh??)funkciju checkInput moram josh da napravim i koliko znam bice mi potrebna ona preg_match() fja ali mi je josh nejasno njeno koristenje i ono mysql_escape.... cu da ubacim unutra i ako imate josh neki savet? Hvala na posvecenom vremenu :D |