Je suis nouveau sur zend et je comprends presque comment cela fonctionne avec le mvc, mais j'essaie d'utiliser seulement zend_auth dans un projet non mvc. La partie login (auth) fonctionne (même si je ne sais pas si c'est la meilleure façon de le faire), mais je n'arrive pas à comprendre comment obtenir les données des utilisateurs (qui sont stockées lorsque l'utilisateur se connecte) dans un autre page. voici mon login.php:Zend_auth sans mvc. Comment obtenir les données des utilisateurs
<?php
ini_set('display_errors', 1);
// define an absolute path to library directory
// you don't have to set a constant but it is just good practice
// you can also use a variable or add the path directly below
define('APPLICATION_LIBRARY','c:/xampp/htdocs/website/');
// Note again: the path is the parent of your Zend folder, not the Zend folder itself.
// now set the include path
set_include_path(implode(PATH_SEPARATOR, array(
APPLICATION_LIBRARY, get_include_path(),
)));
include("config.php");
// i'm testing with a username and password that i know is inside database in the actual code is: $username= $_POST['username'] and the same for password.
$username ='userx';
$password = 'passx';
$auth = Zend_Auth::getInstance();
$adapter = new Zend_Auth_Adapter_DbTable($db);
$adapter ->setTableName('profiles')
->setIdentityColumn('username')
->setCredentialColumn('password')
->setIdentity($username)
->setCredential($password);
$result = $auth->authenticate($adapter);
switch($result->getCode()) {
case Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND:
$errorMessage = "Error: Name not correct.";
// i'm sending username and password to another login that is exactly like this one, but searches in another table
header("Location: login2.php?pass=".$password."&user=".$username);
break;
case Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID:
$errorMessage = "Error: pass and user are not valid";
echo $errorMessage;
header("Location: login2.php?pass=".$password."&user=".$username);
break;
case Zend_Auth_Result::SUCCESS:
$adapter->getResultRowObject();
$authStorage = $auth->getStorage(); // set storage. Session default
$authStorage->write($result); // save user data
if(isset($_POST['remember'])) {
Zend_Session::rememberMe(60*60*24*7*4);
$remember=$_POST['remember'];
}
// send user to page they originally request, with username and pass because i don't know how to get them there from what i've stored before...i know it's not good.
header("Location: profile_page.php?pass=".$password."&user=".$username."&remember=".$remember);
break;
default:
$errorMessage = "Error.";
break;
}
?>
c'est mon fichier config.php:
<?php
error_reporting(E_ALL);
require_once('Zend/Session/Namespace.php');
require_once('Zend/Session.php');
require_once('Zend/Db/Table/Abstract.php');
require_once('Zend/Auth/Adapter/DbTable.php');
require_once('Zend/Auth.php');
require_once('Zend/Db/Expr.php');
require_once('Zend/Auth/Exception.php');
require_once('Zend/Controller/Action.php');
$params = array(
'host' => '127.0.0.1',
'username' => 'root',
'password' => '',
'dbname' => 'website',
);
try {
$db = Zend_Db::factory('Pdo_Mysql', $params);
$db->getConnection();
} catch(Zend_Db_Adapter_Exception $e) {
die("<pre>There was an error connecting to the server</pre>"); //Probably bad login or mysql daemon is not running.
} catch(Zend_Exception $e) {
die("<pre>Something failed to load</pre>"); //factory() probably failed to load the adapter class
}
$users = new Zend_Session_Namespace('Zend_Auth');
?>
Je veux obtenir les données qui sont stockées lorsque l'utilisateur est authentifié dans sa page de profil.
donc, maintenant dans ma page de profil je peux obtenir le nom d'utilisateur comme ceci: $ auth = Zend_Auth :: getInstance(); $ username = $ auth-> getIdentity() -> nom d'utilisateur ;? –
WOW !! Ça marche! merci beaucoup, très, très, très bien !!! –