Bonsoir à tous, j'ai un problème avec mon espace membre, c'est la première fois que j'en crée un, quand j'entre le pseudo et le mot de passe, il se redirige comme prévu. Si les identifiants sont faux sa affiche une erreur, sa marche.
Mais je veux rediriger la personne quand il n'est pas logué, donc j'utilise :

<?php if(isset($_SESSION['hb_username'] {
echo 'connecter!'; 
}else {
header('Location:page.php');
}
?>

Code pour verifier la session.

<?php
// LOGIN

if(isset($_POST['envoyer'])) {
        $hb_username = $_POST['hb_username'];
        $pass = sha1($_POST['password']);
        if(isset($hb_username)){
            if(isset($pass)){
                if(empty($hb_username) || empty($pass)){
                    $erreur = 'champs vides!';
                } else{
                    $sql = $bdd->prepare("SELECT * FROM users WHERE hb_username = '$hb_username' AND password = '$pass'");
                    $sql->execute(array($hb_username,$pass));
                    $row = $sql->rowCount();
                    if($row < 1){
                        $erreur = 'Erreur lors de la connexion';
                    } else{
                        session_start();
                        $hb_username = $_SESSION['hb_username'];
                        header('Location:index.php?p=index');
                    }
                }
            }
        }
    }
    ?>

Donc je le répète sa redirige quand je me logue et y a bien l'erreur si les champs sonts vides, ou faux. Il n'y a aucune erreur qui s'affiche.
Bonne soirée!!

16 réponses


JeremDevWeb
Auteur
Réponse acceptée

Personne répond?

1ud0v1c
Réponse acceptée

Je ne suis pas sûr de vraiment comprendre ton problème, tu ne vois pas les erreurs, c'est ça ton soucis ?
En même temps tu n'affiches rien mon ami ^^, il te manques un echo :

 if(empty($hb_username) || empty($pass)){
    $erreur = 'champs vides!'; 
    echo $erreur;
}

Ou ai-je mal compris ton soucis ?

JeremDevWeb
Auteur
Réponse acceptée

non je n'ai pas mis mais j'utilise :

<?php if(isset($erreur)) {
echo $erreur; 
} ?> 

Donc pas sa, mais j'ai fais le code pour que les gens se connectent, quand sa marche pas
y a les erreurs et quand c'est les
bons identifiants sa redirige bien mais sur la page index.php j'arrive pas à faire que quand t'es pas logué sa redirige sur register.php et quand la session est détéctée sa affiche son nom.

Grimille
Réponse acceptée

Salut,

Y'a pas un problème à cette ligne ?

$hb_username = $_SESSION['hb_username'];

Tu veux plutôt définir la variable de session quand on se connecte ?

$_SESSION['hb_username'] = $hb_username; //La variable hb_username de ta session vaut la variable hb_username

C'est d'ailleurs pour ça que tu n'arrives pas à afficher le nom de l'utilisateur. Pour la redirection, c'est à cause du header qui est defini à ta page d'index. Définit le à la page register et cela fonctionnera.
Par ailleurs, ton code contient énormément de failles de sécurités. Pour récupérer les valeurs de données en POST, ou pour l'interfaçage avec PDO par exemple. Tu devrais utiliser un bindValue() ou un bindParam() ! Ne jamais faire confiance à l'utilisateur ;)

JeremDevWeb
Auteur
Réponse acceptée

Je vais essayé et je vous remercie pour l'aide et les conseils, je vais regarder ç. Bonne soirée.

JeremDevWeb
Auteur
Réponse acceptée

J'arrive pas à trouver le problème et les tutos sur le web sont pas terribles. Qui à un exemple ou fichier en PDO?

lmaginot
Réponse acceptée

Salut, tu fait bien ton session_start() sur la page ou t'es redirigé?

lmaginot
Réponse acceptée

pour ta requête préparée, tu pourrais faire sa :

$sql = $bdd->prepare("SELECT * FROM users WHERE hb_username = ? AND password = ?");
$sql->execute(array($hb_username,$pass));
JeremDevWeb
Auteur
Réponse acceptée

J'essayerais, j'avais fai ça je crois mais sa fais pareil. Sur une autre page pour verifier la session on met bien

<?php
if(isset($_SESSION['hb_username'])) {
session_start();
echo 'connecter'; 
}else{
header("Location:ok.php");
}
Je sais pas de quoi dépend SESSION si il faut bien mettre hb_username car c'est la colonne de users ou y a les pseudos..
lmaginot
Réponse acceptée

cela ne va pas, tu initialise la session après l'avoir testée, il faut le faire avant

Grimille
Réponse acceptée

Après, on ne fait pas de pain sans farine j'ai envie de dire...

JeremDevWeb
Auteur
Réponse acceptée

Le problème c'est que le tutoriel de JeremyJones sur Grafikart est bien mais j'ai du mal à comprendre.

Grimille
Réponse acceptée

Le problème dans ce que tu nous ponds ci-dessus, c'est que session_start() doit être appelé avant d'utiliser les sessions PHP

lmaginot
Réponse acceptée

le session_start() indique que tu va devoir utiliser les variables de sessions, sans cet appel, tu ne pourra pas y avoir accès donc pas les tester !

session_start();
if(isset($_SESSION['hb_username'])) {
echo 'connecter'; 
}else{
header("Location:ok.php");
}
JeremDevWeb
Auteur
Réponse acceptée

J'ai refais le code de 0 en prenant pour modèle un tutoriel vidéo et sa marche, merci pour votre aide à tous! ;)

Axel - Valkyri0s
Réponse acceptée

Bonsoir,
N'oubliez pas de mettre votre sujet comme résolu.