Espace membre - Besoin d'aide
zartas
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
zartas Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
zartas Messages postés 6 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je n'ai pas mis un titre précis car j'ai plusieurs "problèmes" et je compte les poser une par une pour que ce soit plus lisible ^^ (je n'ai pas l'habitude des forum, donc si c'est mieux de créer un sujet par question, dites le moi s'il vous plait).
Alors voilà mon premier problème :
Pour ma page d'inscription, j'ai fait un formulaire en html qui contient ces 2 lignes
<form method="post" action="connexion.php">
et
<input type="submit" value="S'inscrire" name="inscrire" />
pour dire que si on clique sur "inscrire", ça nous redirige sur la page "connexion.php".
Ensuite j'ai mis des conditions en php pour vérifier si le pseudo n'est pas déjà utiliser, le mot de passe et la confirmation du mot de passe sont identiques...etc.
C'est là qu'arrive mon soucis, quelques soit le résultat de mes conditions, ça me redirige sur ma page "connexion". Même si l'inscription a échoué.
J'aimerais savoir comment je peux faire pour que si l'inscription n'est pas bonne, je reste sur ma page inscription en affichant les erreurs. Et si elle est correct, ça m'envoi sur la page "connexion.php" s'il vous plait.
J'utilise PDO. Ma base est créée et j'arrive à m'inscrire et me connecter sur mon site uniquement si je redirige vers aucun autre page. (exemple : si connexion.php redirige sur connexion.php)
Merci :)
Je n'ai pas mis un titre précis car j'ai plusieurs "problèmes" et je compte les poser une par une pour que ce soit plus lisible ^^ (je n'ai pas l'habitude des forum, donc si c'est mieux de créer un sujet par question, dites le moi s'il vous plait).
Alors voilà mon premier problème :
Pour ma page d'inscription, j'ai fait un formulaire en html qui contient ces 2 lignes
<form method="post" action="connexion.php">
et
<input type="submit" value="S'inscrire" name="inscrire" />
pour dire que si on clique sur "inscrire", ça nous redirige sur la page "connexion.php".
Ensuite j'ai mis des conditions en php pour vérifier si le pseudo n'est pas déjà utiliser, le mot de passe et la confirmation du mot de passe sont identiques...etc.
C'est là qu'arrive mon soucis, quelques soit le résultat de mes conditions, ça me redirige sur ma page "connexion". Même si l'inscription a échoué.
J'aimerais savoir comment je peux faire pour que si l'inscription n'est pas bonne, je reste sur ma page inscription en affichant les erreurs. Et si elle est correct, ça m'envoi sur la page "connexion.php" s'il vous plait.
J'utilise PDO. Ma base est créée et j'arrive à m'inscrire et me connecter sur mon site uniquement si je redirige vers aucun autre page. (exemple : si connexion.php redirige sur connexion.php)
Merci :)
A voir également:
- Espace membre - Besoin d'aide
- Espace insécable - Guide
- Espace de stockage gmail plein - Guide
- Membre indisponible vinted - Guide
- Espace stockage google - Guide
- Liberer espace ipad - Guide
5 réponses
Salut,
tu dois tout faire sur la page inscription.php
tu dois tout faire sur la page inscription.php
<?php
// page inscription.php
if(isset($_POST['inscrire']))
{
// processus de vérification de mot de passe, etc...
// si c'est bon : on redirige vers la page de connexion
header("location:connexion.php");
exit;
}
// si c'est pas bon, on reste sur cette même page, et on va remplir le formulaire avec les données issus du POST
?>
<form action="inscription.php" method="post">
.../...
Nom : <input type="text" name="nom" value="<?php echo $_POST['nom']; ?>">
.../...
<input type="submit" value="S'inscrire" name="inscrire" />
</form>
Merci pour cette réponse :)
J'avais déjà essayer et je viens de réessayer avec
mais ça ne fonctionne pas. Je reste sur ma page "inscription.php".
Voici mon code PHP de ma page "inscription.php". Je penses avoir des erreurs de placement ou autres. Je suis preneur pour toutes aides et organisations de mon code ^^ mais ma priorité reste mon problème ci dessus, pour le moment :)
PS : La lisibilité du code n'est pas super. J'ai dû mettre tous mon code au même niveau pour pouvoir le faire rentrer. Normalement il n'y a aucune erreur de "{".
J'avais déjà essayer et je viens de réessayer avec
header("location:connexion.php");
exit;
mais ça ne fonctionne pas. Je reste sur ma page "inscription.php".
Voici mon code PHP de ma page "inscription.php". Je penses avoir des erreurs de placement ou autres. Je suis preneur pour toutes aides et organisations de mon code ^^ mais ma priorité reste mon problème ci dessus, pour le moment :)
<?php if(isset($_POST['inscrire'])) { if(!empty($_POST['pseudo']) && !empty($_POST['mot_de_passe']) && !empty($_POST['mot_de_passe_confirme']) && !empty($_POST['adresse_email']) != "") { include("includes/identifiants.php"); $req_email = $connexion->prepare('SELECT * FROM membres WHERE adresse_email = :adresse_email'); $req_email->execute(array('adresse_email' => $_POST['adresse_email'])); $resultat_email=$req_email->fetch(); if(!$resultat_email) { include("includes/identifiants.php"); $req_pseudo = $connexion->prepare('SELECT * FROM membres WHERE pseudo = :pseudo'); $req_pseudo->execute(array('pseudo' => $_POST['pseudo'])); $resultat_pseudo=$req_pseudo->fetch(); if(!$resultat_pseudo) { if(!preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+\.?)*[a-z0- 9!\#$%&\\\'*+/=?^_`{|}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z] {2,}$#i',$_POST['adresse_email'])) { echo "L'e-mail n'est pas valide."; } else { echo ""; } if(strlen($_POST['mot_de_passe']) >= 8) { $pass_hache = sha1( $_POST['mot_de_passe'] ); include("includes/identifiants.php"); $requete = $connexion->prepare('INSERT INTO membres( pseudo, mot_de_passe, adresse_email) VALUES ( :pseudo, :mot_de_passe, :adresse_email)'); $requete->execute(array( 'pseudo' => $_POST ['pseudo'], 'mot_de_passe' => $pass_hache, 'adresse_email' => $_POST ['adresse_email'])); header("location:Login.php"); exit; } elseif($_POST['mot_de_passe'] != $_POST['mot_de_passe_confirme']) { echo "Le mot de passe n'est pas identique à sa confirmation."; } else { echo "Le mot de passe doit contenir au moins 8 caractères."; } } else { echo "Ce pseudo est déjà utilisé."; } } else { echo "Cette adresse-email est déjà utilisé."; } } else { echo "Tous les champs doivent être remplis."; } } else { echo "Remplissez le formulaire pour vous inscrire."; } ?>
PS : La lisibilité du code n'est pas super. J'ai dû mettre tous mon code au même niveau pour pouvoir le faire rentrer. Normalement il n'y a aucune erreur de "{".
la fonctions header("location...") ne peux pas être utilisée si des caractères ont déjà été affichés (vu que c'est une fonction qui modifie l'entete de la réponse).
Or tu as un echo ""; et je pense que le problème vient de là, ou alors dans les fichiers que tu inclues, vérifie qu'il n'y ai pas d'affichages et qu'ils ne sont pas fermés en php (ne mets jamais je ?> à la fin d'un fichier php)
Or tu as un echo ""; et je pense que le problème vient de là, ou alors dans les fichiers que tu inclues, vérifie qu'il n'y ai pas d'affichages et qu'ils ne sont pas fermés en php (ne mets jamais je ?> à la fin d'un fichier php)
J'ai essayer comme ça :
ça fonctionne toujours pas.
Pour la suite de ce que tu me conseil, j'avais mis mon code PHP dans le <div> du formulaire pour que les "echo" s'affiche là où je le voulait. Du coup maintenant j'ai mis mon code PHP tout en bas et sans le fermer. Comment je peux faire pour afficher mes "echo" là où je le désir ?
J'ai également corriger l'emplacement mes codes PHP sans les fermer dans mes includes concerné et dans mon fichier connexion. Ça ne fonctionne toujours pas.
if(!preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+\.?)*[a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z]{2,}$#i',$_POST['adresse_email'])) { echo "L'e-mail n'est pas valide."; } else { if(strlen($_POST['mot_de_passe']) >= 8) { $pass_hache = sha1('' . $_POST['mot_de_passe'] . ''); include("includes/identifiants.php"); $requete = $connexion->prepare('INSERT INTO membres( pseudo, mot_de_passe, adresse_email) VALUES ( :pseudo, :mot_de_passe, :adresse_email)'); $requete->execute(array( 'pseudo' => $_POST ['pseudo'], 'mot_de_passe' => $pass_hache, 'adresse_email' => $_POST ['adresse_email'])); header("location:Login.php"); exit; } elseif($_POST['mot_de_passe'] != $_POST['mot_de_passe_confirme']) { echo "Le mot de passe n'est pas identique à sa confirmation."; } else { echo "Le mot de passe doit contenir au moins 8 caractères."; } }
ça fonctionne toujours pas.
Pour la suite de ce que tu me conseil, j'avais mis mon code PHP dans le <div> du formulaire pour que les "echo" s'affiche là où je le voulait. Du coup maintenant j'ai mis mon code PHP tout en bas et sans le fermer. Comment je peux faire pour afficher mes "echo" là où je le désir ?
J'ai également corriger l'emplacement mes codes PHP sans les fermer dans mes includes concerné et dans mon fichier connexion. Ça ne fonctionne toujours pas.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Je viens d'essayer en réduisant au maximum mon code PHP pour voir si le problème venait du code en lui même.
Maintenant mon code PHP fait juste ça :
ça ne fonctionne toujours pas. Lorsque je clique sur le bouton "inscrire", je reste sur la page "inscription.php".
Voici mon formulaire en entier, peut être que le problème viens de là :
Merci :)
édit 1 : Je viens de mettre mon code PHP tout en haut de ma page en supprimant le <?php session_start(); ?> que j'avais oublié et qui servait à rien. Et maintenant, ça fonctionne. Je vais tester en remettant tout le reste du code et je vous redis ça.
édit 2 : Avec tout le reste du code, ça fonctionne bien. Maintenant le problème est que mes echo ne s'affichent plus sur ma page.
Je viens d'essayer en réduisant au maximum mon code PHP pour voir si le problème venait du code en lui même.
Maintenant mon code PHP fait juste ça :
<?php if(isset($_POST['inscrire'])) { header("location:Login.php"); exit; } else { echo "Remplissez le formulaire pour vous inscrire."; }
ça ne fonctionne toujours pas. Lorsque je clique sur le bouton "inscrire", je reste sur la page "inscription.php".
Voici mon formulaire en entier, peut être que le problème viens de là :
<div id="inscription"><h1>S'inscrire</h1> <form method="post" action="inscription.php"> <p> <label for="pseudo">Choisissez un pseudo</label> : <input type="text" name="pseudo" id="pseudo" size="10" /> </p> <p> <label for="mot_de_passe">Choisissez un mot de passe</label> : <input type="password" name="mot_de_passe" id="mot_de_passe" /> </p> <p> <label for="mot_de_passe_confirme">Confirmer votre mot de passe</label> : <input type="password" name="mot_de_passe_confirme" id="mot_de_passe_confirme" /> </p> <p> <label for="adresse_email">Saisissez vôtre adresse e-mail</label> : <input type="email" name="adresse_email" id="adresse_email" /> </p> <p> <input type="submit" value="S'inscrire" name="inscrire" /> </p> </div>
Merci :)
édit 1 : Je viens de mettre mon code PHP tout en haut de ma page en supprimant le <?php session_start(); ?> que j'avais oublié et qui servait à rien. Et maintenant, ça fonctionne. Je vais tester en remettant tout le reste du code et je vous redis ça.
édit 2 : Avec tout le reste du code, ça fonctionne bien. Maintenant le problème est que mes echo ne s'affichent plus sur ma page.