Bonjour à tous,
Alors voila je commence à coder doucement le php et je me suis attardé sur un petit tuto sur internet qui permet de voir la mise en place d'un forum et donc de voir des cas classiques comme :
- inscription/connexion
-publication...
bien que le système comporte des erreurs que j'ai pu surmonter, il présente des choses à améliorer. Notamment le hachage du mot de passe, dans le système actuel il n'y en a pas, je bute un peu la dessus notamment sur où intégrer le md5 et comment le décrypter lors de la connexion.
J'ai tenté de nombreuses fois mais je but vraiment et j'y arrive pas du tout.
Une âme charitable pourrait-elle m'aider ?
Un échange par skype est possible, si ça arrange des personnes.
En vous remerciant beaucoup,
Pierre
Voici mes fichiers :
index.php :
<?php
session_start();
include_once 'function/function.php';
$bdd = bdd();
if (!isset($_SESSION['id']))
{
header('Location:connexion.php');
exit();
}
else
{
?>
<!DOCTYPE html>
<head>
<meta charset='utf-8' />
<title>Mon super forum</title>
<meta name="author" content="">
<link rel="stylesheet" type="text/css" href="css/general.css">
<link rel="shortcut incon" type="text/css" href="images/favicon.ico">
</head>
<body>
<?php
echo $_SESSION['email'];
?>
<a href="deconnexion.php">Deconnexion</a>
<h1><a href="index.php">TITRE !</a></h1>
<div id="Cforum">
<?php
if(isset($_GET['categorie']))
{
$_GET['categorie'] = htmlspecialchars($_GET['categorie']);
?>
<div class="categories">
<h1><?php echo $_GET['categorie']; ?></h1>
</div>
<a href="addPost.php">Ajouter un sujet</a>
<?php
}
else
{
$requete = $bdd->query('SELECT * FROM categories');
while($reponse = $requete->fetch())
{
?>
<div class="categories">
<a href="index.php?categorie=<?php echo $reponse['name']; ?>"><?php echo $reponse['name']; ?></a>
</div>
<?php
}
}
?>
</div>
</body>
</html>
<?php
}
?>
inscription.php :
<?php
session_start();
include_once 'function/function.php';
include_once 'function/inscription.class.php';
$bdd = bdd();
if (isset($_POST['pseudo']) AND isset($_POST['email']) AND isset($_POST['mdp']) AND isset($_POST['mdp2'])) {
$inscription = new inscription($_POST['pseudo'],$_POST['email'],$_POST['mdp'],$_POST['mdp2']);
$verif = $inscription->verif();
if($verif == "ok")
{
if ($inscription->enregistrement())
{
if ($inscription->session())
{
header('Location: index.php');
}
}
else
{
echo 'Une erreur est survenue';
}
}
else
{
$erreur = $verif;
}
}
?>
<!DOCTYPE html>
<head>
<meta charset='utf-8' />
<title>Mon super forum</title>
<meta name="author" content="">
<link rel="stylesheet" type="text/css" href="css/general.css">
<link rel="shortcut incon" type="text/css" href="images/favicon.ico">
</head>
<body>
<h1>Inscription</h1>
<div id="Cforum">
<form method="post" action="inscription.php">
<p>
<input name="pseudo" type="text" placeholder="Pseudo" required /><br>
<input name="email" type="email" placeholder="Adresse mail" required /><br>
<input name="mdp" type="password" placeholder="Mot de passe" required /><br>
<input name="mdp2" type="password" placeholder="Confirmation de votre mot de passe" required /><br>
<input type="submit" value="S'inscrire" />
<?php
if (isset($erreur))
{
echo $erreur;
}
?>
</p>
<p>Si vous avez deja un compte cliquez <a href="connexion.php">ici</a></p>
</form>
</div>
</body>
</html>
connexion.php :
<?php
session_start();
include_once 'function/function.php';
include_once 'function/connexion.class.php';
$bdd = bdd();
if(isset($_POST['email']) AND isset($_POST['mdp']))
{
$connexion = new connexion($_POST['email'],$_POST['mdp']);
$verif = $connexion->verif();
if($verif =="ok")
{
if($connexion->session())
{
header('Location: index.php');
}
}
else
{
$erreur = $verif;
}
}
?>
<!DOCTYPE html>
<head>
<meta charset='utf-8' />
<title>Mon super forum</title>
<meta name="author" content="">
<link rel="stylesheet" type="text/css" href="css/general.css">
<link rel="shortcut incon" type="text/css" href="images/favicon.ico">
</head>
<body>
<h1>Connexion</h1>
<div id="Cforum">
<form method="post" action="connexion.php">
<p>
<input name="email" type="email" placeholder="Adresse mail" required /><br>
<input name="mdp" type="password" placeholder="Mot de passe..." required /><br>
<input type="submit" value="Connexion" />
<?php
if(isset($erreur))
{
echo $erreur;
}
?>
</p>
<p>Si vous n'avez aucun compte, inscrivez-vous <a href="inscription.php">ici</a> c'est gratuit'</p>
</form>
</div>
</body>
</html>
Mes fonctions :
function.php :
<?php
function bdd()
{
try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=forum', 'root', '', $pdo_options);
}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}
return $bdd;
}
?>
inscription.class.php :
<?php
include_once 'function.php';
class inscription {
private $pseudo;
private $email;
private $mdp;
private $mdp2;
private $bdd;
public function __construct($pseudo,$email,$mdp,$mdp2)
{
$pseudo = htmlspecialchars($pseudo);
$email = htmlspecialchars($email);
$this->pseudo = $pseudo;
$this->email = $email;
$this->mdp = $mdp;
$this->mdp2 = $mdp2;
$this->bdd = bdd();
}
public function verif()
{
if(strlen($this->pseudo) > 3 AND strlen($this->pseudo) < 20 )
{
if(filter_var($this->email, FILTER_VALIDATE_EMAIL))
{
if (strlen($this->mdp) > 5 AND strlen($this->mdp) < 20 )
{
if ($this->mdp == $this->mdp2)
{
return 'ok';
}
else
{
$erreur = 'Les mots de passe ne sont pas identiques';
return $erreur;
}
}
else
{
$erreur = 'Le mot de passe doit contenir entre 5 et 20 caractères';
return $erreur;
}
}
else
{
$erreur = 'syntaxe de l\'adresse email incorrect';
return $erreur;
}
}
else
{
$erreur = 'Le pseudo doit contenir entre 3 et 15 caractères';
return $erreur;
}
}
public function enregistrement()
{
$requete = $this->bdd->prepare("INSERT INTO membres(pseudo, email, mdp) VALUES (:pseudo,:email,:mdp)");
$requete->execute(array(
'pseudo'=> $this->pseudo,
'email'=> $this->email,
'mdp'=> $this->mdp
));
return 1;
}
public function session()
{
$requete = $this->bdd->prepare("SELECT id FROM membres WHERE pseudo = :pseudo");
$requete->execute(array(
'pseudo'=> $this->pseudo
));
$requete = $requete->fetch();
$_SESSION['id'] = $requete['id'];
$_SESSION['pseudo'] = $this->pseudo;
return 1;
}
}
connexion.class.php :
<?php
include_once 'function.php';
class connexion
{
private $email;
private $mdp;
private $bdd;
public function __construct($email,$mdp)
{
$this->email = $email;
$this->mdp = $mdp;
$this->bdd = bdd();
}
public function verif()
{
$requete = $this->bdd->prepare('SELECT * FROM membres WHERE email = :email');
$requete->execute(array('email'=> $this->email));
$reponse = $requete->fetch();
if($reponse)
{
if($this->mdp == $reponse['mdp'])
{
return 'ok';
}
else
{
$erreur = 'Le mot de passe est incorrect';
return $erreur;
}
}
else
{
$erreur = 'Cet email n\'est lie a aucun compte';
return $erreur;
}
}
public function session()
{
$requete = $this->bdd->prepare("SELECT id FROM membres WHERE email = :email");
$requete->execute(array(
'email'=> $this->email
));
$requete = $requete->fetch();
$_SESSION['id'] = $requete['id'];
$_SESSION['email'] = $this->email;
return 1;
}
}
Afficher la suite
4 févr. 2015 à 18:15
Oui pour le décrypter je voulais dire le comparer à la BDD !
Je test de suite !
Merci