par
spedgreg » 19 nov. 2011, 16:14
Cool ma page
activer-compte-utilisateur.php fonctionne
Mais....
maintenant c'est ma page connexion.inc.php qui me posse des soucie....
cette page est une include et elle s’intègre dans ma page index.php
Exemple de ma page
index.php
http://files.getwebb.org/files/67/f8/4 ... urce.jpeg
quand je me connecte sans cocher sur "Rester connecté(e)" ça fonctionne je suis bien redirigé sur ma
page_membre.php
Et si je me connecte en cochant "Rester connecté(e)" je suis redirigé sur ma page_membre.php avec cette erreur :
Erreur : SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'id, Nom_Utilisateur, Mot_de_Passe, hash_cookie ' at line 1
de plus si exemple je me trompe de mot de passe ça m’écris que "Le nom d'utilisateur n'existe pas" au lieu de m’écrire cette ligne:
$message = "Votre mot de passe est incorrect"
Voila ma page
connexion.inc.php
<?php
// Redirige l'utilisateur s'il est déjà identifié
if(isset($_SESSION['id']))
{
header("Location: /page_membre.php");
}
else
{
// Formulaire visible par défaut
$masquer_formulaire = false;
// Une fois le formulaire envoyé
if(isset($_POST["BT_Envoyer"]))
{
// Vérification de la validité des champs
if(!preg_match("/^[A-Za-z0-99ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ_]{4,20}$/", $_POST["TB_Nom_Utilisateur"]))
{
$message = "Votre nom d'utilisateur doit comporter entre 4 et 20 caractères \n";
$message .= "L'utilisation de l'underscore est autorisée";
}
elseif(!preg_match("/^[A-Za-z0-9]{6,}$/", $_POST["TB_Mot_de_Passe"]))
{
$message = "Votre mot de passe doit comporter au moins 6 caractères";
}
else
{
//On echape les variables pour pouvoir les mettre dans une requette SQL
$username =htmlspecialchars($_POST['TB_Nom_Utilisateur']);
$password =htmlspecialchars($_POST['TB_Mot_de_Passe']);
// Connexion à la base de données
// Sélection de l'utilisateur concerné
$query=$db->prepare('SELECT id, Nom_Utilisateur, Mot_de_Passe, Compte_Active, hash_cookie
FROM Comptes_Utilisateurs
WHERE Nom_Utilisateur= ? AND Mot_de_Passe = ?
');
$query->execute(array($username, sha1($password)));
// Si une erreur survient
if(!$query)
{
$message = "Une erreur est survenue lors de la tentative de connexion";
}
else
{
// Si aucun utilisateur n'a été trouvé
if($query->rowcount() == 0)
{
$message = "Le nom d'utilisateur " . $username . " n'existe pas";
}
else
{
if (($row = $query->fetch(PDO::FETCH_ASSOC)) !== false )
{
// Si le compte n'a pas été activé
if($row['Compte_Active'] == 0)
{
$message = "Votre compte utilisateur n'a pas été activé";
}
else
{
// Vérification du mot de passe
if(sha1($password) != $row["Mot_de_Passe"])
{
$message = "Votre mot de passe est incorrect";
}
// Vérification du hash
elseif (sha1('aaa'.$row["Nom_Utilisateur"].'bbb'.$row["Mot_de_Passe"].'ccc') != $row["hash_cookie"])
{
$message = "Votre compte utilisateur a été bloqué par securité, contactez nous";
}
else
{
// Création des sessions
$_SESSION['id']=$row["id"];
$_SESSION['id_nom']=$row["Nom_Utilisateur"];
if (!empty($_POST['CB_Connexion_Automatique'])) // si l'utiliseur coche connexion auto
{
// Création des cookies connexion auto
$connexion = sha1('aaa'.$row["Nom_Utilisateur"].'bbb'.$row["Mot_de_Passe"].'ccc');
setcookie('connexion_automatique', $connexion, time() + 3600*24*365, '/');
}
// Redirection de l'utilisateur
header("Location: /page_membre.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">
<body>
<!-- formulaire connexion -->
<h3 class="connexion">Se connecter</h3><hr />
<p class="inscrire" ><a href="creer-compte-utilisateur.php" alt="s'inscrire" title="s'inscrire">S'inscrire</a></p><hr />
<form id="monform" action="http://<?php echo htmlspecialchars($_SERVER["SERVER_NAME"] . $_SERVER["SCRIPT_NAME"]); ?>" method="post">
<div class="center">
<label for="username">Pseudo :</label><input type="text" name="TB_Nom_Utilisateur" size="35" maxlength="20" id="username" value="<?php if(isset($username)){echo htmlspecialchars($username, ENT_QUOTES, 'UTF-8');} ?>" /><br />
<label for="password">Mot de passe : </label><input type="password" name="TB_Mot_de_Passe" size="35" maxlength="40" id="password" /><br /><br />
<input type="checkbox" name="CB_Connexion_Automatique" />Rester connecté(e) <input type="submit" name="BT_Envoyer" value="OK" />
<?php if(isset($message)) { ?>
<p class="rouge"><?php echo htmlspecialchars($message); ?></p>
<?php } if($masquer_formulaire != true) { ?>
</div>
</form>
<!-- footer -->
<?php }
?>
</body>
</html>
Et ma
page_membre.php
<?php
session_start();
if(!isset($_SESSION['id']))
{
header("Location:index.php");
}
$titre = " Espace membre";
include("include/debut-xhtml.inc.php");
?>
<!-- espace membre -->
<div class="espacemembre">
<?php
try
{
include("include/connexionpdo.inc.php");
if(!empty($_COOKIE['connexion_automatique']))
{
// Sélection de l'utilisateur concerné
$query=$db->prepare('id, Nom_Utilisateur, Mot_de_Passe, hash_cookie
FROM Comptes_Utilisateurs
WHERE Nom_Utilisateur = :connexion_automatique');
$query->bindValue(':connexion_automatique',$_COOKIE['connexion_automatique'], PDO::PARAM_STR);
$query->execute();
$query->rowcount();
// comparaison positive hash base de donée avec la connexion auto
if($row["hash_cookie"] == $_COOKIE['connexion_automatique'])
{
$_SESSION['id']=$row["id"];
$_SESSION['id_nom']=$row["Nom_Utilisateur"];
}
// comparaison negative hash base de donée avec la connexion auto
if($row["hash_cookie"] != $_COOKIE['connexion_automatique'])
{
setcookie("connexion_automatique", "", time() - 3600, "/");
}
}
if(!empty($_SESSION['id'])) {
?>
<p class="deconnexion">
<strong>[ <?php echo htmlspecialchars($_SESSION['id_nom'], ENT_QUOTES, 'UTF-8'); ?> ]</strong>
<a href="deconnexion.php">Déconnexion</a></p><hr />
<p><img src="image/control.gif" alt="espace membre" title="espace membre" /><a class="accueil" href="page_membre.php">-Espace utilisateur</a></p>
<p><img src="image/poster-annonce.png" alt="poster annonce" title="poster annonce" /><a class="accueil" href="poster-annonce.php">-Poster une annonce</a></p>
<?php } else
{
require "include/connexion.inc.php";
}
?>
</div>
<!-- corps -->
<?php
require "include/compteurconnectes.inc.php";
$query->CloseCursor();
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>
<h2>Espace utilisateur</h2>
<p>
Bienvenue, <?php echo htmlspecialchars($_SESSION['id_nom'], ENT_QUOTES, 'UTF-8'); ?>.
</p>
</div>
<!-- footer -->
<div id="pied_de_page">
<p>© Tous droits réservés</p>
</div>
</body>
</html>
ps: tout fonctionner avant de passer à PDO
Cool ma page [b] activer-compte-utilisateur.php[/b] fonctionne :D
Mais....
maintenant c'est ma page connexion.inc.php qui me posse des soucie.... :(
cette page est une include et elle s’intègre dans ma page index.php
Exemple de ma page [b] index.php[/b]
[url]
http://files.getwebb.org/files/67/f8/4e/803d4acf39d8a586f656ed99720ddce3f2/source.jpeg
[/url]
quand je me connecte sans cocher sur "Rester connecté(e)" ça fonctionne je suis bien redirigé sur ma [b]page_membre.php [/b]
Et si je me connecte en cochant "Rester connecté(e)" je suis redirigé sur ma page_membre.php avec cette erreur :
[b]
Erreur : SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'id, Nom_Utilisateur, Mot_de_Passe, hash_cookie ' at line 1
[/b]
de plus si exemple je me trompe de mot de passe ça m’écris que "Le nom d'utilisateur n'existe pas" au lieu de m’écrire cette ligne:
[php]
$message = "Votre mot de passe est incorrect"
[/php]
Voila ma page [b]connexion.inc.php[/b]
[php]
<?php
// Redirige l'utilisateur s'il est déjà identifié
if(isset($_SESSION['id']))
{
header("Location: /page_membre.php");
}
else
{
// Formulaire visible par défaut
$masquer_formulaire = false;
// Une fois le formulaire envoyé
if(isset($_POST["BT_Envoyer"]))
{
// Vérification de la validité des champs
if(!preg_match("/^[A-Za-z0-99ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ_]{4,20}$/", $_POST["TB_Nom_Utilisateur"]))
{
$message = "Votre nom d'utilisateur doit comporter entre 4 et 20 caractères \n";
$message .= "L'utilisation de l'underscore est autorisée";
}
elseif(!preg_match("/^[A-Za-z0-9]{6,}$/", $_POST["TB_Mot_de_Passe"]))
{
$message = "Votre mot de passe doit comporter au moins 6 caractères";
}
else
{
//On echape les variables pour pouvoir les mettre dans une requette SQL
$username =htmlspecialchars($_POST['TB_Nom_Utilisateur']);
$password =htmlspecialchars($_POST['TB_Mot_de_Passe']);
// Connexion à la base de données
// Sélection de l'utilisateur concerné
$query=$db->prepare('SELECT id, Nom_Utilisateur, Mot_de_Passe, Compte_Active, hash_cookie
FROM Comptes_Utilisateurs
WHERE Nom_Utilisateur= ? AND Mot_de_Passe = ?
');
$query->execute(array($username, sha1($password)));
// Si une erreur survient
if(!$query)
{
$message = "Une erreur est survenue lors de la tentative de connexion";
}
else
{
// Si aucun utilisateur n'a été trouvé
if($query->rowcount() == 0)
{
$message = "Le nom d'utilisateur " . $username . " n'existe pas";
}
else
{
if (($row = $query->fetch(PDO::FETCH_ASSOC)) !== false )
{
// Si le compte n'a pas été activé
if($row['Compte_Active'] == 0)
{
$message = "Votre compte utilisateur n'a pas été activé";
}
else
{
// Vérification du mot de passe
if(sha1($password) != $row["Mot_de_Passe"])
{
$message = "Votre mot de passe est incorrect";
}
// Vérification du hash
elseif (sha1('aaa'.$row["Nom_Utilisateur"].'bbb'.$row["Mot_de_Passe"].'ccc') != $row["hash_cookie"])
{
$message = "Votre compte utilisateur a été bloqué par securité, contactez nous";
}
else
{
// Création des sessions
$_SESSION['id']=$row["id"];
$_SESSION['id_nom']=$row["Nom_Utilisateur"];
if (!empty($_POST['CB_Connexion_Automatique'])) // si l'utiliseur coche connexion auto
{
// Création des cookies connexion auto
$connexion = sha1('aaa'.$row["Nom_Utilisateur"].'bbb'.$row["Mot_de_Passe"].'ccc');
setcookie('connexion_automatique', $connexion, time() + 3600*24*365, '/');
}
// Redirection de l'utilisateur
header("Location: /page_membre.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">
<body>
<!-- formulaire connexion -->
<h3 class="connexion">Se connecter</h3><hr />
<p class="inscrire" ><a href="creer-compte-utilisateur.php" alt="s'inscrire" title="s'inscrire">S'inscrire</a></p><hr />
<form id="monform" action="http://<?php echo htmlspecialchars($_SERVER["SERVER_NAME"] . $_SERVER["SCRIPT_NAME"]); ?>" method="post">
<div class="center">
<label for="username">Pseudo :</label><input type="text" name="TB_Nom_Utilisateur" size="35" maxlength="20" id="username" value="<?php if(isset($username)){echo htmlspecialchars($username, ENT_QUOTES, 'UTF-8');} ?>" /><br />
<label for="password">Mot de passe : </label><input type="password" name="TB_Mot_de_Passe" size="35" maxlength="40" id="password" /><br /><br />
<input type="checkbox" name="CB_Connexion_Automatique" />Rester connecté(e) <input type="submit" name="BT_Envoyer" value="OK" />
<?php if(isset($message)) { ?>
<p class="rouge"><?php echo htmlspecialchars($message); ?></p>
<?php } if($masquer_formulaire != true) { ?>
</div>
</form>
<!-- footer -->
<?php }
?>
</body>
</html>
[/php]
Et ma [b]page_membre.php[/b]
[php]
<?php
session_start();
if(!isset($_SESSION['id']))
{
header("Location:index.php");
}
$titre = " Espace membre";
include("include/debut-xhtml.inc.php");
?>
<!-- espace membre -->
<div class="espacemembre">
<?php
try
{
include("include/connexionpdo.inc.php");
if(!empty($_COOKIE['connexion_automatique']))
{
// Sélection de l'utilisateur concerné
$query=$db->prepare('id, Nom_Utilisateur, Mot_de_Passe, hash_cookie
FROM Comptes_Utilisateurs
WHERE Nom_Utilisateur = :connexion_automatique');
$query->bindValue(':connexion_automatique',$_COOKIE['connexion_automatique'], PDO::PARAM_STR);
$query->execute();
$query->rowcount();
// comparaison positive hash base de donée avec la connexion auto
if($row["hash_cookie"] == $_COOKIE['connexion_automatique'])
{
$_SESSION['id']=$row["id"];
$_SESSION['id_nom']=$row["Nom_Utilisateur"];
}
// comparaison negative hash base de donée avec la connexion auto
if($row["hash_cookie"] != $_COOKIE['connexion_automatique'])
{
setcookie("connexion_automatique", "", time() - 3600, "/");
}
}
if(!empty($_SESSION['id'])) {
?>
<p class="deconnexion">
<strong>[ <?php echo htmlspecialchars($_SESSION['id_nom'], ENT_QUOTES, 'UTF-8'); ?> ]</strong>
<a href="deconnexion.php">Déconnexion</a></p><hr />
<p><img src="image/control.gif" alt="espace membre" title="espace membre" /><a class="accueil" href="page_membre.php">-Espace utilisateur</a></p>
<p><img src="image/poster-annonce.png" alt="poster annonce" title="poster annonce" /><a class="accueil" href="poster-annonce.php">-Poster une annonce</a></p>
<?php } else
{
require "include/connexion.inc.php";
}
?>
</div>
<!-- corps -->
<?php
require "include/compteurconnectes.inc.php";
$query->CloseCursor();
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>
<h2>Espace utilisateur</h2>
<p>
Bienvenue, <?php echo htmlspecialchars($_SESSION['id_nom'], ENT_QUOTES, 'UTF-8'); ?>.
</p>
</div>
<!-- footer -->
<div id="pied_de_page">
<p>© Tous droits réservés</p>
</div>
</body>
</html>
[/php]
ps: tout fonctionner avant de passer à PDO