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!!
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 ?
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.
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 ;)
Je vais essayé et je vous remercie pour l'aide et les conseils, je vais regarder ç. Bonne soirée.
J'arrive pas à trouver le problème et les tutos sur le web sont pas terribles. Qui à un exemple ou fichier en PDO?
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));
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..
cela ne va pas, tu initialise la session après l'avoir testée, il faut le faire avant
Le problème c'est que le tutoriel de JeremyJones sur Grafikart est bien mais j'ai du mal à comprendre.
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
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");
}
J'ai refais le code de 0 en prenant pour modèle un tutoriel vidéo et sa marche, merci pour votre aide à tous! ;)