Bonjour à tous j'ai un problème aux niveau de mon codage pour la connexion
si mon nom de compte ou mot de passe est incorrect il me le dit
si j'ai pas remplis les champs il me le dit
mais quand je veut me connecté avec les bon identifiants sa ne change rien du tout sa actualise ma page et sais tout alors voila mon code :
<?php
if (isset($_POST'connexion'])) {
$pseudo = htmlspecialchars(trim($_POST'pseudo']));
$password = sha1($_POST'password']);
if ($pseudo != '' AND $password != '' ) {
$boucle = $bdd->query("SELECT * FROM register WHERE username = '$pseudo' ");
$sql = $boucle->fetch();
if ($sql'password'] == $password) {
session_start();
$_SESSION'pseudo'] = $sql'username'];
echo $alert->success("<strong>Succès :</strong> Connexion réussi.");
} else {
echo $alert->danger("<strong>Erreur :</strong> Nom de compte ou mot de passe incorrect");
}
} else {
echo $alert->danger("<strong>Erreur :</strong> Veuillez remplir tous les champs");
}
}
?>
Oui je t'envoie ça
<?php require('menu_top.php'); ?>
<div class="container col-md-6 col-md-offset-3">
<div class="row">
<?php
if (isset($_POST'connexion'])) {
$pseudo = htmlspecialchars(trim($_POST'pseudo']));
$password = sha1($_POST'password']);
if ($pseudo != '' AND $password != '' ) {
$boucle = $bdd->query("SELECT * FROM register WHERE username = '$pseudo' ");
$sql = $boucle->fetch();
if ($sql'password'] == $password) {
session_start();
$_SESSION'pseudo'] = $sql'username'];
echo $alert->success("<strong>Succès :</strong> Connexion réussi.");
} else {
echo $alert->danger("<strong>Erreur :</strong> Nom de compte ou mot de passe incorrect");
}
} else {
echo $alert->danger("<strong>Erreur :</strong> Veuillez remplir tous les champs");
}
}
?>
</div>
</div>
<div class="container col-md-6 col-md-offset-3">
<div class="row">
<div class="panel panel-default">
<div class="panel-heading">Inscription sur <font color="#d3220e"><?php echo $title; ?></font></div>
<div class="panel-body">
<form method="POST" class='form-horizontal'>
<!-- Nom de compte -->
<div class="form-group">
<label for="inputCompte" class="col-lg-2 control-label">Nom de compte</label>
<div class="col-lg-10">
<input type="text" class="form-control" id="inputCompte" placeholder="Nom de compte" autocomplete="off" name="pseudo" >
</div>
</div>
<!-- Mot de passe -->
<div class="form-group">
<label for="inputPassword" class="col-lg-2 control-label">Mot de passe</label>
<div class="col-lg-10">
<input type="password" class="form-control" id="inputPassword" placeholder="mot de passe" autocomplete="off" name="password" >
</div>
</div>
<div class="form-group">
<div class="col-lg-10 col-lg-offset-2">
<button class="btn btn-default">Annuler</button>
<button type="submit" class="btn btn-primary" name="connexion">Connexion</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<?php require('menu_top.php'); ?>
<div class="container col-md-6 col-md-offset-3">
<div class="row">
<?php
if (isset($_POST'connexion'])) {
$pseudo = htmlspecialchars(trim($_POST'pseudo']));
$password = sha1($_POST'password']);
if ($pseudo != '' AND $password != '' ) {
$boucle = $bdd->query("SELECT * FROM register WHERE username = '$pseudo' ");
$sql = $boucle->fetch();
if ($sql'password'] == $password) {
session_start();
On rappelle que le session_start(), notamment si la session est basée sur des cookies, va émettre des headers spécifiques dans la réponse.
Or, si quelque chose est déjà affiché (déjà envoyé au navigateur , cela s'envoie au fur et à mesure), cela va être dur de modifier les entêtes d'une réponse déjà partie...
Conclusion,
Le session_start placé à cet endroit ne peut pas fonctionner...
La doc de la méthode le précise bien:
Note:
Pour utiliser des sessions basées sur les cookies, session_start() doit être appelée avant d'afficher quoi que ce soit dans le navigateur.