Salut tt l monde mon problemes est de direction dns mon projet , j cree un espace pour monter l'utilisateur
Une Mauvaise config DNS + server web c'est toujour l'enfer.
Il va falloir que tu donnes vraiement des détails sur ce que tu veux faire, ce que tu as faits etc....
public function getuser(){
$user = array(
'id' => $this->Auth->user('id'),
'username' => $this->Auth->user('username'),
'avatar' => $this->Auth->user('avatar')
);
if($this->Auth->User()) {
$this->redirect(array('action'=>'index'));
$this->set(compact($user));
}
}voici mon controller :
et l 'element :
<!-- Sidebar user panel -->
<?php
$user=$this->requestAction(array('controller'=>'users', 'action'=>'getuser'));
?>
<div class="user-panel">
<div class="pull-left image">
<img src="<?php //echo 'app'.'/'.'webroot'.'/'.'img'.'/'.'avatars'.'/'.$user['id'].'.'.$user['avatar'];?>" style="width:50px;height:50px;" class="img-circle" alt="User Image">
</div>
<div class="pull-left info">
<p><?php //echo $user['username']; ?></p>
<?php
// if ($user['username']) {?>
<a href="#"><i class="fa fa-circle text-success"></i> Online</a>
<?php
// }else{?>
<a href="#"><i class="fa fa-circle faild"></i> Offline</a>
<?php
///} ?>
</div>
<div>
<?php
echo $this->Html->link( "Logout", array('Controller'=>'users','action'=>'logout') );
?>
</div>
</div>
j v exactement fficher dns mon element le nom d'utilisateur connecter est qlq info (photo) ms n fonction pas , lerreur est
""" Cette page web a une boucle de redirection
La page web à http://localhost/cakephp-2.5.7/dashboard a entrainée trop de redirections. Supprimer les cookies pour ce site ou autoriser les cookies de tierces parties peut régler le problème. Sinon, il est possible que cela provienne d'un problème de configuration du serveur, et non pas d'un problème avec votre ordinateur."""
impossible de charger la page !!! c ca prb Merci
toi dois avoir l'execution $this->requestAction(array('controller'=>'users', 'action'=>'getuser')); sur ta page d'arrivée.
vérifie sur quelle page tu arrives.
(network / reseau sous chrome / firebug de ffx en mode conservation )
$this->redirect(array('action'=>'index')); => redirection vers la methode index du ton controlleur.
il faudrais peu être faire
$this->redirect(url du site); pour l'envoyé à la racine du site.
if($this->Auth->User()) vérifie cette condition pour moi tu la valide su c'est un utilisateur
il manque pas le !
:( c marche pas aussi voici controller :
public function login() {
//if already logged-in, redirect
if($this->Session->check('Auth.User')){
$this->redirect(array('controller' => 'annonces', 'action' => 'index'));
}
// if we get the post information, try to authenticate
if ($this->request->is('post')) {
if ($this->Auth->login()) {
$this->Session->setFlash(__('Bonjour, '. $this->Auth->user('username')));
$this->redirect($this->Auth->redirectUrl());
} else {
$this->Session->setFlash(__(' username ou mots de passe invalid !'));
}
}
}
public function logout() {
$this->redirect($this->Auth->logout());
//$this->redirect(array('action' => 'login'));
}
public function getUser(){
if ($this->Auth->login()) {
$user = array(
'id' => $this->Auth->user('id'),
'username' => $this->Auth->user('username'),
'avatar' => $this->Auth->user('avatar')
);
$this->redirect($this->Auth->redirectUrl());
return $user;
} else {
$this->Session->setFlash(__(' username ou mots de passe invalid !'));
}
}
Voici mon element admin.ctp:
<?php
$user=$this->requestAction(array('controller' => 'users','action'=> 'getuser'));
debug($user);
if ($user) {
?>
<div class="user-panel">
<div class="pull-left image">
<img src="<?php echo 'app'.'/'.'webroot'.'/'.'img'.'/'.'avatars'.'/'.$user['id'].'.'.$user['avatar'];?>" style="width:50px;height:50px;" class="img-circle" alt="User Image">
</div>
<div class="pull-left info">
<p><?php echo $user['username']; ?></p>
<?php
if ($user['username']) {?>
<a href="#"><i class="fa fa-circle text-success"></i> Online</a>
<?php
}else{?>
<a href="#"><i class="fa fa-circle faild"></i> Offline</a>
<?php
} ?>
</div>
<div>
<?php
echo $this->Html->link( "Logout", array('Controller'=>'users','action'=>'logout') );
?>
</div>
</div>
<?php
}else{
die('vous est deconnecter');
}
?>
Je te propose ça comme modification de code
/**
fonction pour récupere les informations sur l'USER
@return array si User valide sinon false
**/
public function getUser(){
if ($this->Auth->login()) {
$user = array(
'id' => $this->Auth->user('id'),
'username' => $this->Auth->user('username'),
'avatar' => $this->Auth->user('avatar')
);
// $this->redirect($this->Auth->redirectUrl());
return $user;
}
return false;
}
/**
Vérifie si USER est valide return true en cas sinon redirige en fonction du param
**/
public function checkUserAccess(){
if(!$this->Auth->login()){
$this->redirect($this->Auth->redirectUrl());
}else{
return true;
}
return false;
}
ne pas faire le redirection dans le getuser mais plus dans un fonction de controle
comme ça tu fais appel a checkUserAccess que sur les pages que tu veux bloqué
note: Sur la page de login désactivité le bloquage pour pouvoir s'identifier
rappel :
le operateur === ou !== test l'expression mais prend en compte le type de variable
$a=1; // int
$b='1'; // string
$a==$b => vrai
$a!=$b => faux
$a===$b => faux
$a!==$b => vrai
//en utilisant un cast
$a===(int)$b => vrai
$a!==(int)$b => faux
donc un array vide !== false
c'est pour ça qu'on return false dans getUser
quand User n'est pas valide comme ça on différencie d'un tableau vide
ms c q concerne la redirection dns l'action login :
public function login() {
//if already logged-in, redirect
if($this->Session->check('Auth.User')){
$this->redirect(array('controller' => 'annonces', 'action' => 'index'));
}
// if we get the post information, try to authenticate
if ($this->request->is('post')) {
if ($this->Auth->login()) {
$this->Session->setFlash(__('Bonjour, '. $this->Auth->user('username')));
$this->redirect($this->Auth->redirectUrl());
} else {
$this->Session->setFlash(__(' username ou mots de passe invalid !'));
}
}
q jd faire
// la partie qui risque posé problème
if ($this->request->is('post')) {
if ($this->Auth->login()) {
// il faut bien voir ce que fait $this->Auth->login()
Test ton code en enlevant tous les redirections.
Puis réintroduit 1 à 1 jusqu'à boucle infini de redirection (comme ça on c'est quel ligne est source de la boucle infinie)
PS: le langage sms c'est juste pour les sms
Pour moi mon objectif et de recupreer l user courent , met dns un elemnt , j trouver que il faut utiliser
charger dans AppController:
AuthComponent::user('id');
et dns l'element :
<?php if (AuthComponent::user('id')): ?>
<p class="navbar-text pull-right">
Logged in as <a href="#" class="navbar-link"><?= AuthComponent::user('username') ?></a>
</p>
<?php endif; ?>
ms c marceh pas j ss bloquer hhhhh :(