Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Login con XML

  1. #1

    Login con XML

    Come potrei implementare un sistema di login che anzichè utilizzare un database sfrutta un file xml?

  2. #2
    Ciao,
    perchè utilizzare un file xml? prima cosa è molto più difficile accedere ai dati di un file xml rispetto ai dati memorizzati in un database, poi i dati presenti in un file xml sono facilmente rintracciabili, basta sapere l'indirizzo del file e quindi prendere i dati, certo si possono criptare, però perchè complicarsi la vita? non mi riferisci al fatto di criptare i dati, perchè non è complicato, ma accedere ad un file xml è un pò ostico, ma è pur vero che esistono classi già fatte che permettono si estrapolare dati da file xml.
    CODENCODE \ Branding \ Design \ Marketing
    www.codencode.it

  3. #3
    Uno dei vantaggi del file xml è che non ci sono limitazioni al numero di query. Inoltre è possibile proteggere il file con httaccess per renderlo inaccessibile agli utenti.

  4. #4
    Ciao,
    non so quanto ti possa essere utile
    (è di un mio vecchio script) ma meglio che niente


    Codice PHP:
    class AuthXml{
        private 
    $docnull;
        private 
    $fileName'';
        public function 
    __construct($fileName) {
            if(!
    file_exists($fileName)){
                throw new 
    FileException('XML file ['.$fileName.'] not found in ['.__CLASS__.']');
            }
            
    $this->fileName$fileName;
              
    $this->doc= new DOMDocument();
        }
        public function 
    load() {
            if(!
    $this->doc->load($this->fileName)) {
                throw new 
    FileException('Error loading file ['.$this->fileName.'] in class ['.__CLASS__.']');
            }
        }
        public function 
    save() {
            if(!
    $this->doc->save($this->fileName)){
                 throw new 
    FileException('Error saving file ['.$this->fileName.'] in class ['.__CLASS__.']');
            }
        }
        public function 
    select($item,$value){
            
    $xp= new domxpath($this->doc);
            
    $query"/users/user[{$item}/text()='{$value}']";
            
    $user$xp->query($query);
            unset(
    $xp);
            return (bool)
    count($user->item(0));
        }
        public function 
    update($username,$password,$uid){
            
    $xp= new domxpath($this->doc);
            
    $query"/users/user[password/text()='{$password}']";
            
    $user$xp->query($query);
            unset(
    $xp);
            if(
    is_null($user->item(0))) {
                throw new 
    InvalidArgException('Error selecting item ['.$id.'] in ['.__CLASS__.']');
            }
            
    $item$this->doc->createElement("user");
            
    $data= array('username'=>$username,'password'=>$password,'uid'=>$uid);
            foreach(
    $data as $key => $value) {
                
    $nodespace $this->doc->createElement($key);
                
    $nodetext $this->doc->createTextNode($value);
                
    $nodespace->appendChild($nodetext);
                
    $item->appendChild($nodespace);
            }
            
    $oldnode$user->item(0);
            
    $newnode$this->doc->importNode($itemtrue);
            
    $oldnode->parentNode->replaceChild($newnode$oldnode);
            
    $this->save();
        }
        final public function 
    __destruct(){
            unset(
    $this->doc);
            unset(
    $this->fileName);
        }
    }
    class 
    Auth{
        const 
    INVALID_LOGIN 'Invalid Login';
        private 
    $xmlnull;
        public function 
    __construct(AuthXml $xml){
            
    $this->xml$xml;
            
    $this->xml->load();
        }
        public function 
    startAuth($username,$password){
            
    $this->logOut();
            
    $username=$this->isValidString($username)?$username:'';
            
    $password=$this->isValidString($password)?$password:'';
            if(
    $this->xml->select("username",$username)&&$this->xml->select("password",md5($password))){        
                
    $this->setAuthed($username,$password);
            }
            else{
                
    Session::setSession('failedLogin',self::INVALID_LOGIN);
            }
        }
        private function 
    setAuthed($username,$password){
            
    $this->generateUid(time());
            
    $this->xml->update($username,md5($password),$this->uid);
            
    Session::deleteSession('uip');
            
    Session::deleteSession('uid');
            
    Session::setSession('uip',md5($_SERVER['REMOTE_ADDR']));
            
    Session::setSession('uid',$this->uid);
        }
        public function 
    checkAuth(){
            
    $auth false;
            
    $uid=isset($_SESSION['uid'])?$_SESSION['uid']:'';
            if(
    $this->isValidUid($uid)){
                if(
    $this->xml->select("uid",$_SESSION['uid']) && ($_SESSION['uip']===md5($_SERVER['REMOTE_ADDR']))){
                    
    $authtrue;
                }
            }
            return 
    $auth;
        } 
        public function 
    logOut(){
            
    Session::deleteSession('failedLogin');
            
    Session::deleteSession('uip');
            
    Session::deleteSession('uid');
        }
        private function 
    generateUid($time){
            
    $this->uidmd5($time.rand(substr($time,-4),substr($time,-10)));
        }
        private function 
    isValidUid($uid){
            
    $isValidtrue;
            
    $isValidpreg_match('/^[a-z0-9]{32}$/',$uid);
            
    settype($isValid,"bool");
            return 
    $isValid;
        }
        private function 
    isValidString($string){
            
    $isValidTRUE;
            
    $isValidpreg_match('/^[A-Za-z0-9\-_]{2,16}$/',$string);
            
    settype($isValid,"bool");
            return 
    $isValid;
        }
        final public function 
    __destruct(){
            unset(
    $this->xml);
        }

    il file xml

    Codice PHP:
    <?xml version="1.0" encoding="UTF-8"?>
    <users>
    <user><username>whisher</username><password>646ae72b89eb812677ea06b31b12a86e</password><uid>e4ccb10319f39c21743c053a3ed34db7</uid></user>
    </users>
    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  5. #5
    Ciao,
    quindi il tuo problema è il numero di query, forse perchè utilizzi un stapio web gratuito, allora si puoi utilizzare il file xml.
    Si è vero mediante l'htaccess puoi proteggere l'accesso agli utenti che no hanno la passwrod.
    CODENCODE \ Branding \ Design \ Marketing
    www.codencode.it

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.