Je cherche a faire en sorte de rediriger l'utilisateur qui se connecte a la page connexion.php vers la page espace-membre.php.
<h1 class="prinpal-title">Connexion à<br />
l'espace membre</h1>
<?php
//si une session est déjà "isset" avec ce visiteur, on l'informe:
if(isset($_SESSION['pseudo'])){
echo "Vous êtes déjà connecté, vous pouvez accéder à l'espace membre en <a href='espace-membre.php'>cliquant ici</a>.";
} else {
//si le formulaire est envoyé ("envoyé" signifie que le bouton submit est cliqué)
if(isset($_POST['valider'])){
//vérifie si tous les champs sont bien pris en compte:
if(!isset($_POST['pseudo'],$_POST['mdp'])){
echo "Un des champs n'est pas reconnu.";
} else {
//tous les champs sont précisés, on regarde si le membre est inscrit dans la bdd:
//d'abord il faut créer une connexion à la base de données dans laquelle on souhaite regarder:
$mysqli=mysqli_connect('localhost','id19462029_melissa','(F8-7f?)kFr(Ea0(','id19462029_melissacv');//'serveur','nom d'utilisateur','pass','nom de la table'
if(!$mysqli) {
echo "Erreur connexion BDD";
//Dans ce script, je pars du principe que les erreurs ne sont pas affichées sur le site, vous pouvez donc voir qu'elle erreur est survenue avec mysqli_error(), pour cela décommentez la ligne suivante:
//echo "<br>Erreur retournée: ".mysqli_error($mysqli);
} else {
//on défini nos variables:
$Pseudo=htmlentities($_POST['pseudo'],ENT_QUOTES,"UTF-8");//htmlentities avec ENT_QUOTES permet de sécuriser la requête pour éviter les injections SQL, UTF-8 pour dire de convertir en ce format
$Mdp=md5($_POST['mdp']);
$req=mysqli_query($mysqli,"SELECT * FROM membres WHERE pseudo='$Pseudo' AND mdp='$Mdp'");
//on regarde si le membre est inscrit dans la bdd:
if(mysqli_num_rows($req)!=1){ ?>
<p class="incorrecte">Pseudo ou mot de passe incorrect</p>
<?php
} else {
//pseudo et mot de passe sont trouvé sur une même colonne, on ouvre une session:
$_SESSION['pseudo']=$Pseudo;
header("Location: https://melissa-colin.000webhostapp.com/espace-membre.php"); /* Redirection du navigateur */
exit;
echo "Vous êtes connecté avec succès $Pseudo! Vous pouvez accéder à l'espace membre en <a href='espace-membre.php'>cliquant ici</a>.";
$TraitementFini=true;//pour cacher le formulaire
}
}
}
}
if(!isset($TraitementFini)){//quand le membre sera connecté, on définira cette variable afin de cacher le formulaire
?>
<a href="inscription.php">Vous n'avez pas de compte ? Créez en un ici !</a>
<form method="post" action="connexion.php">
<label for="pseudo">Pseudo :</label>
<input type="text" name="pseudo" id="pseudo" required><!-- required permet d'empêcher l'envoi du formulaire si le champ est vide -->
<label for="password">Mot de passe :</label>
<input type="password" name="mdp" id="password" required>
<input class="connexion" type="submit" name="valider" value="Connexion">
</form>
<?php
}
}
?>
Ce que j'obtiens
Problème : Cela le marche pas ça me laisse sur la même page mais elle deviens bugé il manque la moitié des elemnts dessus et le scroll ne marche plus. Voici la ligne ou j'ai insseré mon header si vous ne la trouvez pas :
if(mysqli_num_rows($req)!=1){ ?>
<p class="incorrecte">Pseudo ou mot de passe incorrect</p>
<?php
} else {
//pseudo et mot de passe sont trouvé sur une même colonne, on ouvre une session:
$_SESSION['pseudo']=$Pseudo;
header("Location: https://melissa-colin.000webhostapp.com/espace-membre.php"); /* Redirection du navigateur */
exit;
echo "Vous êtes connecté avec succès $Pseudo! Vous pouvez accéder à l'espace membre en <a href='espace-membre.php'>cliquant ici</a>.";
$TraitementFini=true;//pour cacher le formulaire
}
Problème résolu à l'aide d'une balise meta ( <meta http-equiv="refresh" content="durée;URL=adresse-de-destination"> )
Merci
tu es au courant qu'après un exit, le code n'est plus exécuté ?
pas de html avant un header
Merci, j'ai fait comme ceci :
if(isset($_SESSION['pseudo']))
{
header("Location: /espace-membre.php");}
mais le problème c'est que ça redirige seulment si j'actualise la page puis que 'est en haut du code
ça sera sympa le jour où ton script mettra plus de temps a s'exécuté que le temps du refresh.