Bonjour à tous,
voilà j'aimerai déjà savoir dans un premier temps si la communauté d'alsacréations utilise le framework cakephp?
Car je m'y suis un peu mis et je suis un peu pommé, car j'ai suivit un tuto de grafikart pour la création de formulaire d'inscription/connexion et chez moi le hashage du mot de passe pose problème... en fait tout l'envoi à ma base me pose problème.
Je suis en train de tourner en rond et je m'y perd maintenant un peu. Donc si quelqu'un peu m'aider ce serai vraiment gentil.
alors voici ma vue Users/signup.ctp:
Le début de mon controller UsersController.php:
et enfin mon model User.php:
Ma connexion est impossible car le hash du mot de passe n'est pas identique... dans la base de donnée il est toujours au format sha1 malgrès cette ligne:
voilà j'aimerai déjà savoir dans un premier temps si la communauté d'alsacréations utilise le framework cakephp?
Car je m'y suis un peu mis et je suis un peu pommé, car j'ai suivit un tuto de grafikart pour la création de formulaire d'inscription/connexion et chez moi le hashage du mot de passe pose problème... en fait tout l'envoi à ma base me pose problème.
Je suis en train de tourner en rond et je m'y perd maintenant un peu. Donc si quelqu'un peu m'aider ce serai vraiment gentil.
alors voici ma vue Users/signup.ctp:
<h2>S'enregistrer</h2>
<?php echo $this->Form->create('User'); ?>
<?php echo $this->Form->input('pseudo',array('label'=>"Pseudo : ")); ?>
<?php echo $this->Form->input('mail',array('label'=>"Email : ")); ?>
<?php echo $this->Form->input('password',array('label'=>"Mot de passe : ")); ?>
<?php echo $this->Form->input('dob',array('label'=>"Date de naissance : ",
'dateFormat' => 'DMY',
'minYear'=> date('Y')-80,
'maxYear'=>date('Y')-10)); ?>
<?php $options = array('H' => 'Homme' , 'F' => 'Femme'); ?>
<?php echo $this->Form->input('sexe',array('options' => $options,'type' => 'select',
'empty' => false,'label' => 'Sexe'));?>
<?php echo $this->Form->end("S'enregistrer"); ?>
Le début de mon controller UsersController.php:
<?php
/**
* controller pour les Users
*/
class UsersController extends AppController
{
function signup()
{
if($this->request->is('post')){
$d=$this->request->data;
// Pour bien faire un ajout dans la base et non une modification en cas d'ajout de champs...
$d['User']['id'] = null;
$d['User']['lastlogin'] = '2009-07-07 12:00:00';
$d['User']['password'] = Security::hash($d['User']['password'],null,true);
if($this->User->save($d,true,array('pseudo','mail','password','dob','sexe'))){
$link = array('controller'=>'users','action'=>'activate',$this->User->id.'-'.md5($d['User']['password']));
App::uses('CakeEmail','Network/Email');
$mail = new CakeEmail();
$mail->from('noreply@localhost.com')
->to($d['User']['mail'])
->subject('Test :: Inscription')
->emailFormat('html')
->template('signup')
->viewVars(array('pseudo'=>$d['User']['pseudo'],'link'=>$link))
->send();
$this->Session->setFlash("Votre compte a bien été créé","notif");
}
else{
$this->Session->setFlash("Merci de corriger vos erreurs","notif", array('type'=>'error'));
}
}
}
function login(){
if($this->request->is('post')){
if($this->Auth->login()){
$this->Session->setFlash("Vous êtes maintenant connecté","notif");
$this->redirect("/");
}
else{
$this->Session->setFlash("Identifiants incorrects","notif",array('type'=>'error'));
debug($this->request->data['User']['password']);
}
}
}
et enfin mon model User.php:
<?php
/**
* Model de User
*/
class User extends AppModel
{
public $validate = array(
'pseudo' => array(
array(
'rule' => 'alphanumeric',
'required' => true,
'allowEmpty' => false,
'message' => "Votre pseudo n'est pas valide"
),
array(
'rule' => 'isUnique',
'message' => 'Ce pseudo est déjà pris'
)
),
'mail' => array(
array(
'rule' => 'email',
'required' => true,
'allowEmpty' => false,
'message' => "Votre adresse email n'est pas valide"
),
array(
'rule' => 'isUnique',
'message' => 'Cet Email est déjà pris'
)
),
'password' => array(
'rule' => 'notEmpty',
'allowEmpty' => false,
'message' => "Entrez un mot de passe"
),
'dob' => array(
'rule' => 'notEmpty',
'required' => true
)
);
}
?>
Ma connexion est impossible car le hash du mot de passe n'est pas identique... dans la base de donnée il est toujours au format sha1 malgrès cette ligne:
$d['User']['password'] = Security::hash($d['User']['password'],null,true);