Zpět na seznam článků     Zpět na článek

Komentáře ke článku

 
 
 BBCode
Anonymous_ | E-mail23.4.2008 22:51
to je sice vsechno moc pekny, ale myslim si, ze zbytecny.. Nac dalsi free RS? Ackoliv muze byt namitka, ze free RS nemaji popsano jak funguji etc.. V kazde druhe knizce o PHP, mate navod, jak udelat RS.. Navic, kazdy pouziva sve metody, je jich X.. A navic, imho, pokud si clovek zvladne udelat SVUJ RS, pak muze rict ze z PHP neco umi.. Ne ze ho nekde obslehne, nebo se php nauci tak, ze si precte navod na RS - ne tudy imho cesta nevede.. Ale kazdy na to jde jinak ze..

----------
Cow power by Gentoo...
_( | )_ | 85.132.197.*23.4.2008 20:13
tvorim je tim stylem, ze jako prvni delam to, co delaji ostatni jako posledni. Tezko vysvetlovat, ale mam svuj zpusob, ktery funguje a je efektivni.
.anonym. | 148.233.159.58/89.24.48.*23.4.2008 20:01
_( | )_ : Mohl by jsi prosim upresnit jakym postupem tedy ty projekty v C++ tvoris? Neber to jako rypnuti, jen me to zajima.
yedpodtrzitko | 84.42.167.*23.4.2008 19:50
misto

$this->sessionCreate(1,'guest','guest', 1);

ma byt

$this->sessionCreate(1,'guest','guest', 0);
yedpodtrzitko | 84.42.167.*23.4.2008 19:48
Zastance co nejmene souboru? To je napad! Vpisu vsechny moduly a pomocne classy ve svem RS k jadru do jednoho souboru, cimz odpadne problem s includovanim potrebnych souboru, genialni :D

Kdybych mel tedy poradit, tak radim: podivat se na nejaky existujici RS.


Neco z meho stareho... cehosi.


Tabulka do DB. user_id je identifikator, bla bla bla... hash vytvorim pri prihlaseni, ulozim do session i DB, a pak proti sobe overuji. Kazdy uzivatel ma prava. Dokonce i neprihlaseny uzivatel (jmeno guest, prava 0), protoze kazda akce ma definovana prava, s jakymi je dostupna.

CREATE TABLE user (
'user_id' int (7) unsigned auto_increment,
'nick' varchar (50),
'pwd' char (32),
'email' varchar (50),
'aktivni' tinyint (1) unsigned,
'hash' varchar (32),
'prava' tinyint (1) unsigned,
PRIMARY KEY (`user_id`),
);

INSERT INTO 'user' ('nick', 'pwd', 'aktivni', 'hash', 'prava') VALUES
('guest', md5(sha1(guest)), 1, 'guest', 0),
('admin', md5(sha1(heslo)), 1, NULL, 9);

------------------------------------
------------------------------------

config.inc.php

define('db_host', 'server');
...//atd

------------------------------------
------------------------------------

index.php

require_once 'core.php';
core::get()->run();

------------------------------------
------------------------------------


Jadro. Zde vsechno inicializuji. Zbytecny rozepisovat, imho.

core.php

class core {

function __construct() {
$this->_init(); //soubory, DB, prava...
}

function run() {
//getmodule a getaction berou promenne z $_GET
$req = new Request(core::getModule(), core::getAction());

$obj = $req->getRequest();

$obj->toString();
}
}

------------------------------------
------------------------------------


trida obstaravajici obsluhu pozadavku podle prav ze session+request z $_GET oproti DB

request.php

class request {

function __construct($module, $action) {
//dodatecne osetreni vstupu, nepodstatne
$result = $this->_checkRights(); //overeni proti DB, jestli je pozadavek proveditelny, pripadne vrati default
$this->_prepareRequest($result); //vytvori novy objekt tridy podle $result
}

function getRequest() {
//vrati objekt vytvorene tridy, vzdy potomek spolecneho modulu
}

}

------------------------------------
------------------------------------

trida pro obsluhu prihlasovani atp.


auth.php

class auth {

public function __construct() {
$this->check();
}

function check(){
if (!$this->isLogged()) {
$this->login();
return;
}

//ORM. z DB zkusi nacist zaznam podle hodnoty ze session
$OUser = new OSQLUser(Array('user_id' => $this->getId(), 'hash' => $this->getHash(), 'nick' => $this->getName(), 'prava' => $this->getPrava()));
if(!$OUser->getData()) {
$this->login();
core::setError('nejaka chyba');
}

}


function login($user='guest',$pwd= 'guest', $plain = false){


if($user == 'guest'){
$this->sessionCreate(1,'guest','guest', 1);
return true;
}

if ($plain == true) {
$pwd = SHA1($pwd);
}
$pwd = MD5($pwd);
$user = strtoupper($user);
$OUser = new OSQLUser(Array('nick' => $user, 'pwd' => $pwd));

$result = $OUser->getData();
if ( is_array($result)){


$hash = Substr(md5(time().$pwd), 0, Rand(20,30));
$OUser->setData(Array('hash' => $hash));
$OUser->save();

if($this->sessionCreate($result['user_id'], $user, $hash, $result['prava'])){
return true;

}

} else {
core::setError('nejaka chyba');
return false;
}



}


function logout () {

$this->login();
}


function sessionCreate ($id,$user,$hash,$prava) {



$_SESSION = Array(

'hash' => AddSlashes($hash),

'user' => AddSlashes($user),

'id' => IntVal($id),
'prava' => intval($prava));


return true;

} else{

die('error creating session');
return false;

}

}


function isLogged() {
return (auth::getPrava() > 0);
}
}



------------------------------------
------------------------------------


prihlasovani:

na onsubmit() se heslo hashuje SHA1() cez JS, hodnota v 'pwd_t' se vynuluje a nasetuje se do 'pwd'. Tim se pozna, ze heslo je hashovane. Pokud javascript neni zapnuty, heslo se odesle nehashovane a skrz SHA1() se prozene na strane serveru


<form action='http://domain/login' method='post' onsubmit='hashPwd();'>
<input id='pwd' type='hidden' name='pwd' />
<input id='user' type='FormInput' name='user' />
<input id='pwd_t' type='password' name='pwd_t' />
<inpu type='submit' value='Přihlásit' name='submit' />
</form>





nejaky otazky?
_( | )_ | 85.132.197.*23.4.2008 19:44
Kazdy ma jiny postup pri vyvoji. V C++ zacinam tvorit projekty taky velmi prapodivnym postupem (pro ostatni), ale na vysledek si jeste nikdo nestezoval :P

Proto bych pockal s kravinama a jsem zvedav jak se to vyvine.
DjH | E-mail | Website | ICQ 319-960-89523.4.2008 19:35
Ok, takze kdyz uz opravim funkce, vyctes mi postup, skvely... Ja nejradeji zacinam prihlasovanim/odhlasovanim. Na zahradku je prilis brzo, ale za par tejdnu budem orat brambory, nechces se prijit podivat? Docela mi to jde. Mozna o tom napisu clanek na S00M, ale vlastne to se sem nehodi, ze wixo...

----------
..:@]> [link] <[@:..
_( | )_ | 85.132.197.*23.4.2008 19:26
#@#@#@#@: Ukazes nam nejakou svou praci, abychom se priucili? Docela me to zajima.
#@#@#@#@ | 149.20.54.*23.4.2008 18:54
DjH: takto se RS nevytvari, nechces si jit radeji okopavat zahradku? :-D :-D :-D
DjH | E-mail | Website | ICQ 319-960-89523.4.2008 16:15
takze ok, doufam ze uz je to vse, kdyby se precejen neco naslo, tak piste...

----------
..:@]> [link] <[@:..

Stránky: 1 2 3 4 5