Bonjour j'ai suivi le tuto "Gérer des permissions" j'ai bien suivi le tuto sa fonctionne (à par quelque petit bug avec le css) mais c'est pas très grave et donc je veux créer un système d'inscription en PDO qui va avec.
donc j'ai pensé as stocké les login et password dans la base de donnée prévue avec leur role email et tout le reste
comme sa si il sont dans la base de donné on peux ce connecté avec.
et c'est la ou apparait le probléme j'ai fais un script php pour posté les info sur ma base de donné mais sa ce poste pas
je pence avoir fait une erreur quelque part mais je ne sais pas
déjà ma SQL que j'ai fais en suivant le "tuto Gérer des permission"
--
-- Base de données: `compte`
--
-- --------------------------------------------------------
--
-- Structure de la table `users`
--
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`login` varchar(255) NOT NULL,
`password` varchar(255) NOT NULL,
`address` varchar(255) NOT NULL,
`role_id` int(2) NOT NULL,
`email` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
KEY `role_id` (`role_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
--
-- Contenu de la table `users`
--
INSERT INTO `users` (`id`, `login`, `password`, `address`, `role_id`, `email`) VALUES
(1, 'admin', 'admin', 'Je suis un admin', 1, ''),
(2, 'membre', 'membre', 'pti membre', 2, '');
mon formulaire d'inscription dans le page Inscription.php
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="imagetoolbar" content="no" />
<title>Inscription</title>
<link rel="stylesheet" href="content/css-js/dign.css" />
<link rel="stylesheet" href="content/css-js/style.css" />
<link href='http://fonts.googleapis.com/css?family=Droid+Sans:700|PT+Sans|Kreon|Oswald' rel='stylesheet' type='text/css'>
</head>
<body>
<div id="inscri">
<form method="post" action="active.php">
<input type="text" name="login"/>
<input type="password" name="password"/>
<input type="email" name="email"/>
<input type="submit" name="inscription"/>
</form>
</div>
</body>
mon active.php pour posté sur DB
<?php
try{
$DB = new PDO('mysql:localhost;sdbname=compte','root','');
}
catch (PDOException $e){
echo'Une erreur est survenue la base de donnée est pas accessible pour le moment';
}
$d = array(
'login' => '$login',
'password' => '$password',
'address' =>'Membre',
'role_id' => '1',
'email' => '$email'
);
$req = $DB->prepare('INSERT INTO users (login,password,address,role_id,email) VALUE(:login , :password , :address , :role_id , :email)');
$req->execute($d);
?>
bon quand je les fais je suis partie dans une logique et je suis pas sur que c'étais la bonne logique si quelqu’un
trouve le problème ou me propose un autre script je veux bien prendre merci.
Bon, si ça ne marche pas, j'arrête le php XD.
<?php
try{
$bdd = new PDO('mysql:host=localhost;dbname=compte','root','');
}
catch (Exception $e){
echo'<p>Une erreur est survenue la base de donnée est pas accessible pour le moment<p>';
}
$d = array(
'login' => $_POST'login'],
'password' => $_POST'password'],
'address' => 'Membre',
'role_id' => '1',
'email' => $_POST'email']
);
$req = $bdd->prepare('INSERT INTO users (login, password, address, role_id, email) VALUES (:login ,:password,:address,:role_id,:email)');
$req->execute($d);
?>
<?php
try{
$DB = new PDO('mysql:localhost;sdbname=compte','root','');
}
catch (PDOException $e){
echo'Une erreur est survenue la base de donnée est pas accessible pour le moment';
}
$d = array(
'login' => $_POST'login'],
'password' => $_POST'$password'],
'address' => $_POST'Membre'],
'role_id' => '1',
'email' => $_POST'email']
);
$req = $DB->prepare('INSERT INTO users (login,password,address,role_id,email) VALUE(:login , :password , :address , :role_id , :email)');
$req->execute($d);
?>
Mais attention, le champ 'adresse' n'est pas dans le formulaire.
Et il faudra par la suite effectué des vérifications avec des conditions...
le chant address il es pas dans le formulaire c'est normale il es un peux comme role_id quand tu as le role_id 1 donc quand tu t'inscrit sa veux dir que tu es un membre comme sa sur le site dans l'espace perso il pourra voir son niveau membre moderateur ou admin
humm ok je teste sa tout de suite
et je t'informe si sa marche en tous cas merci
j'ai testé bon déjà sa ma affiché 2erreur que adresse étais pas defini mais c'est normale j'ai changé et que password aussi ben je pence que c'est pars-que il avait marqué $password bon j'ai changé sa mais sa poste toujours rien et il a pas d'erreur
<?php
try{
$DB = new PDO('mysql:localhost;sdbname=compte','root','');
}
catch (PDOException $e){
echo'Une erreur est survenue la base de donnée est pas accessible pour le moment';
}
$d = array(
'login' => $_POST'login'],
'password' => $_POST'password'],
'address' => 'Membre',
'role_id' => '1',
'email' => $_POST'email']
);
$req = $DB->prepare('INSERT INTO users (login,password,address,role_id,email) VALUE(:login , :password , :address , :role_id , :email)');
$req->execute($d);
?>
ton erreur vient du fait que ton tableau n'est pas correct avec PDO il faut un array de ce genre :
$d = array(
':login' => $_POST'login'],
':password' => $_POST'password'],
':address' => 'Membre',
':role_id' => '1',
':email' => $_POST'email']
);
Voila qui devrait mieux fonctionner.
Par contre essayes de faire un effort sur l'écriture, penses aux yeux de ceux qui t'aident ;)
merci et désolé si j'écrit mal quand je suis presser, je prend pas le temps de bien écrire et l'orthographe et moi sa fais 2 xD
j'ai testé sa fais exactement pareil il a pas d'erreur mais rien est posté :s je remet le code pour vérifier
<?php
try{
$DB = new PDO('mysql:localhost;sdbname=compte','root','');
}
catch (PDOException $e){
echo'Une erreur est survenue la base de donnée est pas accessible pour le moment';
}
$d = array(
':login' => $_POST'login'],
':password' => $_POST'password'],
':address' => 'Membre',
':role_id' => '1',
':email' => $_POST'email']
);
$req = $DB->prepare('INSERT INTO users (login,password,address,role_id,email) VALUE(:login ,:password,:address,:role_id,:email)');
$req->execute($d);
?>
désolé j'ai 2 autre question comment faire une input text qui dit retapé votre mot de passe et qui regarde si c'est égale au mot de passe rentré et comment faire en sorte que deux personne peuvent pas avoir le même login s'il vous plait