Malgré 2h passé sur les forums et sites en tout genre, je n'arrive toujours pas à comprendre pourquoi ma fonction Header("Location: xxx.php") ne fonctionne pas. Mon site est hébergé chez 1and1, voici le code PHP (j'en ai essayé des dizaines, croyant que ca venait de ma syntaxe, mais au final non. Mes identifiants sont bien reconnus, seules la redirection ne fonctionne pas) :
if(isset($_POST['btLogin'])) { // si le bouton "Connexion" est appuyé
include("includes/config.inc.php");
// on vérifie que le champ "Pseudo" n'est pas vide
// empty vérifie à la fois si le champ est vide et si le champ existe belle et bien (is set)
if(empty($_POST['adrMailContact'])) {
echo "Le champ Pseudo est vide.";
} else {
// on vérifie maintenant si le champ "Mot de passe" n'est pas vide"
if(empty($_POST['mdpLogContact'])) {
echo "Le champ Mot de passe est vide.";
} else {
// les champs sont bien posté et pas vide, on sécurise les données entrées par le membre:
$Pseudo = htmlentities($_POST['adrMailContact'], ENT_QUOTES, "ISO-8859-1"); // le htmlentities() passera les guillemets en entités HTML, ce qui empêchera les injections SQL
$MotDePasse = htmlentities($_POST['mdpLogContact'], ENT_QUOTES, "ISO-8859-1");
//on se connecte à la base de données:
// on fait maintenant la requête dans la base de données pour rechercher si ces données existe et correspondent:
$Requete = mysql_query("SELECT * FROM contacts WHERE adrMailContact = '".$Pseudo."' AND mdpLogContact = '".$MotDePasse."'");//si vous avez enregistré le mot de passe en md5() il vous suffira de faire la vérification en mettant mdp = '".md5($MotDePasse)."' au lieu de mdp = '".$MotDePasse."'
// si il y a un résultat, mysqli_num_rows() nous donnera alors 1
// si mysqli_num_rows() retourne 0 c'est qu'il a trouvé aucun résultat
if(mysql_num_rows($Requete) == 0) {
echo "Le pseudo ou le mot de passe est incorrect, le compte n'a pas été trouvé.";
} else {
session_start();
// on ouvre la session avec $_SESSION:
$_SESSION['adrMailContact'] = $Pseudo; // la session peut être appelée différemment et son contenu aussi peut être autre chose que le pseudo
header("Location: home.php");
exit();
}
}
}
}
Il y a un élément à prendre en compte lors des directions/redirections.
Le serveur va lire le code à l'endroit ou il sera exécuté. Autrement dit, si ton code est include ailleurs, il faut que l'URL renseigne la location depuis ce "ailleurs".
Exemple :
J'ai une fonction dans mon script qui contient un header() vers une page contact. Chemin de mon script : mon_projet/scripts/ma_fonction.php Chemin de ma page contact : mon_projet/scripts/contact.php
Je suis alors tenté d'écrire le header sous cette forme : header(Location: "contact.php");
Mais ceci ne marche pas si la fonction est, par exemple, appelée dans mon index qui se situe au chemin suivant : mon_projet/index.php
La bonne syntaxe serait alors : header(Location: "scripts/contact.php); puisque la fonction s’exécute dans l'index et non depuis le dossier /scripts.
Bonne chance.
Un programme est un sort jeté sur un ordinateur, qui transforme tout texte saisi au clavier en message d’erreur.
Il y a un bouton lié à un formulaire qui s'appelle "btLogin", je fais donc un contrôle dessus lorsqu'on exécute la page index, voir si on cherche à s'identifier ou non.
Lorsqu'on saisit nos identifiants, le action pointe vers index.php
N'oubliez pas d'activer les erreurs PDO.
N'oubliez pas d'activer les erreurs PDO.