problème dans mon système de connexion

Par yohan90, il y a 11 ans


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");

}

}

?>

7 réponses

antho07, il y a 11 ans

Bonjour,

Ou est situé ce code? Y-a-t-il de l'html au dessus?

yohan90, il y a 11 ans

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>

antho07, il y a 11 ans

<?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.

yohan90, il y a 11 ans

Donc je doit mettre sessions start tout en haut ?

antho07, il y a 11 ans

Oui

yohan90, il y a 11 ans

D'accord merci

Yentia, il y a 11 ans

SVP utilisez les balises code pour afficher votre code sinon c'est impossible a lire. Merci