Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 23-08-2007 11:16:14

g_barthe
Nouveau membre
Date d'inscription: 22-08-2007
Messages: 6

Indentification sur base MySQL

Bonjour,
Je débute en Zend Framework.

Je cherche à modifier mon application actuelle pour la refaire avec Zend.

J'ai une page d'authentification et je veux la transformer suivant le Zend_auth et voir couplée par la suite à Zend_acl.

J'ai suivi ce tuto : ftp://ftp-developpez.com/r-benyacoub/tu … d_Auth.pdf Mais ce n'est pas concluant du tout. Ca ne marche pas et je trouve cela bien compliqué pour une authentification.

N'y a t'il rien de plus simple ?

J'ai aussi essayer avec la doc officielle http://framework.zend.com/manual/en/zen … table.html mais je n'arrive pas à coupler cela avec un formulaire.

Argh la souffrance est dur en ce moment. Mais je pense qu'avec un peu d'aide je devrais arriveer à modifier mon projet.

Merci à tous.


Mon forum perso sur le génie climatique http://le-genie-climatique.positifforum.com/
Le forum des travaux manuels : http://pausebroderie.fr/

Hors ligne

 

#2 23-08-2007 13:30:46

g_barthe
Nouveau membre
Date d'inscription: 22-08-2007
Messages: 6

Re: Indentification sur base MySQL

C'est encore moi.

Alors je viens de réaliser quelque chose qui "fonctionne". Mais je ne sais pas ce que ca vaut niveau architecture et si c'est vraiment orthodoxe vis à vis du développement. C'est le script de kitpages adapté.

Code:

<?php

// INITIALISATION DU Zend Framework
set_include_path(
  ".;".
  "C:/Program Files/xampp/htdocs/prog_perso/gestcollector/commun/library;".
  get_include_path()
);

require_once 'Zend/Loader.php';
 
Zend_Loader::loadClass("Zend_Auth");
Zend_Loader::loadClass("Zend_Auth_Result");
Zend_Loader::loadClass("Zend_Auth_Adapter_Interface");
 
// définition de mon adapteur
class Kitpages_Auth_SimpleAdapter
    implements Zend_Auth_Adapter_Interface {
 
    const LOGIN="admin";
    const PASSWORD="admin";
 
    private $login=null;
    private $pass=null;
 
    public function __construct($login, $pass) {
        $this->login = $login;
        $this->pass = md5($pass);
    }
 
    public function authenticate() {
                // Zend paramètres de la connexion mysql
                require_once 'Zend/Config/Ini.php';
                $config = new Zend_Config_Ini('commun/config.ini', 'staging');
                require_once 'Zend/Db/Adapter/Pdo/Mysql.php';

                // Zend Objet Base de données
                $db = new Zend_Db_Adapter_Pdo_Mysql(array(
                'host'     => $config->database->host,
            'username' => $config->database->username,
            'password' => $config->database->password,
            'dbname'   => $config->database->name
                ));
                // Zend objet Select
                $select = $db->select()
               ->from('gc_utilisateurs',
          array('login', 'pass'))
                ->where('login = ?', $this->login)
                ->where('pass = ?', $this->pass);
                $db->setFetchMode(Zend_Db::FETCH_OBJ);
                $result = $db->fetchAll($select, 7);
                $nb = count($result);
                if ($nb == '1') {
                        $res = new Zend_Auth_Result(
                Zend_Auth_Result::SUCCESS,
                $this->login,
                array()
            );
            return $res;
        }
        else {
            $res = new Zend_Auth_Result(
                Zend_Auth_Result::FAILURE,
                null,
                array("mauvais login ou password")
            );
            return $res;
        }
    }
}
 
$auth = Zend_Auth::getInstance();
////
// CONTROLLER
////
// si un login pass a été posté
if (isset($_POST["login"])) {
    // récupérons les données de l'internaute
    // pour le bien il faudrait utiliser Zend_Validate ici...
    $login = $_POST["login"];
    $pass = $_POST["pass"];
 
    $kitAdapter = new Kitpages_Auth_SimpleAdapter($login,$pass);
    $result = $auth->authenticate($kitAdapter);
    if (!$result->isValid()) {
        header("Location: ".
               $_SERVER["SCRIPT_NAME"].
               "?message=wrong_login_or_pass");
        exit();
    }
    header("Location: ".$_SERVER["SCRIPT_NAME"]);
    exit();
}
 
// si une action
if ( isset($_GET["action"]) && ($_GET["action"]=="logoff") ) {
    $auth->clearIdentity();
}
 
// VUE
if ($auth->hasIdentity()) {
    $member = $auth->getIdentity();
    echo "Bonjour ".$member."<br/>";
}
else {
    $member = null;
    echo "Vous n'êtes pas identifié<br/>";
}
// afficher les messages d'erreur
if (isset($_GET["message"])) {
    // hum... là aussi il faudrait valider ce $_GET...
    echo "<b>".$_GET["message"]."</b><br/>";
}
 
?>
<form action="<?php echo $_SERVER["SCRIPT_NAME"];?>" method="post">
    login:<input name="login" type="text" value=""><br/>
    password:<input name="pass" type="password" value=""><br/>
    <input type="submit" value="s'identifier">
</form>
<a href="?action=logoff">se déconnecter</a>

Voilà, je vous ai mis le code complet. Dites moi ce que vous en pensez, de manière constructive bien entendu.

Merci.


Mon forum perso sur le génie climatique http://le-genie-climatique.positifforum.com/
Le forum des travaux manuels : http://pausebroderie.fr/

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages