[résolu] 2 formulaires sur une même page - Snoody - 10-08-2014
Hi !
Pour développer mon jeu, j'ai récupéré un espace membres tout fait (je suis graphiste, et mes compétences en php sont hélas trop limités...)
Sur ce site, j'ai regroupé sur une même page les formulaires connexion et inscription, et c'est la que les ennuis commencent... le formulaire inscription ne fonctionne pas ..
J'ai lu et testé des histoire de nommage de bouton etc .. mais pour le moment, je n'ai pas trouvé la solution
merci d'avance pour votre indulgence ^^'
voici le code :
Code : <?php session_start();
$connect = 'config.php';
include('header.php');
if(!empty($_POST['connect'])) {
if(!Connexion::connexionCreate()) {
echo '<div class="redirect">
<img src="'.URLSITE.'/design/img/redirect.gif" width="140" height="18">
<h3>Redirection en cours, patientez ...</h3></div>';
redirection(URLSITE.'/index.php', $time=10);
}
}
else {
$captcha = new Captcha;
echo '<div class="connect">
<div id="portail">
</div>
<div id="banderole">
<div id="connec">
<form id="connection" action="" method="post">
Pseudo :  <input class="input" type="text" name="login" />     
Mot de passe :  <input class="input" type="password" name="pass" />    
<input type="submit" name="connect" value="Se Connecter" />
</form>
<div id="mdp"><a href="new_passe.php">Mot de passe oublié</a></div>
</div>
</div>';
}
echo '<div class="modif-pass-wrap">
<div id="diapo">
<img src="http://www.le-kaleidographe.fr/site-jeu/design/accueil/diapo.png">
</div>
<div id="page">
<div id="presentation">
Venez vous immerger dans l’univers du kaléïdographe à vapeur. Incarnez un bourgeois, un aviateur et bien d’autres personnages, augmentez vos compétences, et résolvez l’énigme qui se cache dans la sombre forêt.
<br><br>
Par le biais de questionnaires, de quêtes, de mini jeux, d’aventures, ou encore en participant au site, vous gagnez vos premiers galons, ainsi que de précieux Engs d’or pour réaliser tous vos achats.
<br><br>
Venez également découvrir les dernières actualités de nos gazettes, et échanger avec nos membres sur des sujets divers et variés.
</div>
<div id="titre">Inscription</div>
<div id="inscrip">
<form id= "inscription" action="" method="post">';
if(!empty($_POST['inscription'])) {
extract($_POST);
echo Inscription::inscrire($identifiant, $email, $passeUn, $passeDe);
}
echo '
<div id="txt-inscrip">
Pseudo<br>
Adresse email<br>
Mot de passe<br>
Confirmer mot de passe
</div>
<div id="champs">
<input class="input" type="text" name="identifiant"><br>
<input class="input" type="text" name="email"><br>
<input class="input" type="text" name="passeUn"><br>
<input class="input" type="text" name="passeDe">
</div>
<div><input class="valider" type="submit" value="" name="inscription"></div>
</form>
</div>
</div>
</div>
</div>';
include('footer.php');
?>
RE: 2 formulaires sur une même page - Arnadus - 10-08-2014
Bonsoir,
La première étape est de savoir si tu rentres bien dans ta condition
if(!empty($_POST['inscription']))
lorsque tu envoies ton formulaire d’inscription.
Si la réponse est positive, pour que l'on puisse te répondre, il faudrait que tu nous donnes le code contenu dans les deux fonctions ("extract" et "Inscription::inscrire" ) contenues dans ce bout de code:
if(!empty($_POST['inscription'])) {
extract($_POST);
echo Inscription::inscrire($identifiant, $email, $passeUn, $passeDe);
}
RE: 2 formulaires sur une même page - Xenos - 10-08-2014
• Attention: un echo() avant une redirection() posera soucis si cette redirection se fait via header("Location:...") ce qui est surement le cas: header() est une fonction devant être appelée avant tout envoie de donnée au client, aka avant echo(), var_dump(),...
• Dans $_POST, on n'a pas les données du formulaire à partir de son id, mais on a les données des champs <input/> à partir de leurs noms. Donc, ici, ce sera $POST['identifiant'] $_POST['email'] $_POST['passeUn'] $_POST['passeDe'] et non $_POST['inscription'], car "inscription" est la valeur de l'id d'un formulaire et non la valeur du nom name d'un input.
Même principe dans le formulaire de connexion.
• Si tu n'as pas de connaissance PHP, associe-toi à un développeur: tu risques de créer des failles (voire des gouffres! ) de sécurité sur le jeu, qui rendront le jeu totalement vulnérable au premier pirate qui passera.
RE: 2 formulaires sur une même page - Snoody - 10-08-2014
merci pour vos réponses ^^
@Xenos
alors les 2 formulaires et leur redirection fonctionnent correctement quand ils sont sur des pages séparées.. donc j'avais éliminé la piste formulaire .. ?
la redirection à l'air au point pour la partie connexion .. c'est juste ce "inscription" qui ne marche pas .. peut être des redirections ou infos situées dans un autre fichier et qui ne sont plus trouvées car je l'ai changé de page ?
oui idéalement il faudrait que je forme une équipe >< mais j'ai personne dans mon entourage que ca intéresse
Je pensais faire une recherche d'équipiers sur ce forum, mais j'essaye d'avoir déjà une petite base, pour présenter concrètement le projet et voir si des gens sont intéressés ^^ Ca me parait dur de demander à des gens de nous rejoindre quand on a déjà rien fait soit même :p
@Arnadus
Je pense que la condition est bien remplis .. si j'ai bien compris ^^
j'ai effectivement oublié de poster cette partie inscription ><
pas trouvé en revanche d'infos concernant la fonction extract ..
heuu .. comment tu fais pour préciser que ton code est du php et avoir les couleurs dans ton post ?
Code : // La classe d'inscription
class Inscription {
// Fonction d'inscription
// Si l'identifiant, l'email le mot de passe un et le mot de passe deux sont poster
// Si les deux mot de passe sont identiques
// Si le pseudo n'existe pas dans la bdd
// Si l'email est valide
// Si l'email n'existe pas dans la bdd
// creation du profil
// creation de la protection des info du profil
// envoie du message de bienvenue
// Retourne Activation du profil
// Sinon
// Retourne email existe deja
// Sinon
// Retourne email non valide
// Sinon
// Retourne le pseudo existe
// Sinon
// Retourne les 2 mots de passe sont !=
// Sinon
// Retourne remplir tout les champs
public static function inscrire($identifiant, $email, $passeUn, $passeDe) {
if(!empty($identifiant) AND !empty($email) AND !empty($passeUn) AND !empty($passeDe)) {
if($passeUn === $passeDe) {
$verifIdentifiant = Bdd::connectBdd()->prepare(SELECT.ALL.MEMBRE.PSEUDO);
$verifIdentifiant -> bindParam(':identifiant', $identifiant, PDO::PARAM_STR, 50);
$verifIdentifiant -> execute();
if($verifIdentifiant -> rowCount() != 1) {
if(filter_var($email, FILTER_VALIDATE_EMAIL)) {
$verifMail = Bdd::connectBdd()->prepare(SELECT.ALL.MEMBRE.EMAIL);
$verifMail -> bindParam(':email', $email);
$verifMail -> execute();
if($verifMail -> rowCount() != 1) {
Inscription::profil($identifiant, $email, $passeUn);
Inscription::protect($identifiant);
Inscription::message($identifiant);
$resultat = Inscription::activer($identifiant);
}
else {
$resultat = '<span class="error-info">L\'adresse email'.$email.' existe déjà,<br />veuillez en saisir une autre et recommencer l\'inscription.</span>';
}
}
else {
$resultat = '<span class="error-info">L\'adresse email saisie n\'est pas valide, <br />veuillez recommencer l\'inscription.</span>';
}
}
else {
$resultat = '<span class="error-info">L\'identifiant saisi existe déjà,<br />veuillez en choisir un autre et recommencer l\'inscription.</span>';
}
}
else {
$resultat = '<span class="error-info">Le champ "Saisir un Mot de Passe" et le champ "Resaisir un Mot de Passe" doivent être identiques, <br />veuillez recommencer l\'inscription.</span>';
}
}
else {
$resultat = '<span class="error-info">Vous devez remplir tout les champs, <br />veuillez recommencer l\'inscription.</span>';
}
return $resultat;
}
RE: 2 formulaires sur une même page - Aedius - 10-08-2014
Je pense avoir trouvé :
Code : <div><input class="valider" type="submit" value="" name="inscription"></div>
à remplacer par
Code : <div><input class="valider" type="submit" value="inscription" name="inscription"></div>
parceque là tu as $_POST["inscription"] = ""
cf la doc de empty http://php.net//manual/fr/function.empty.php
Citation : Ce qui suit est considéré comme étant vide :
"" (une chaîne vide)
donc tu n'entres j'amais dans le if
Code : if(!empty($_POST['inscription'])) {
extract($_POST);
echo Inscription::inscrire($identifiant, $email, $passeUn, $passeDe);
}
RE: 2 formulaires sur une même page - Snoody - 10-08-2014
:respect:
yeah ca marche ^^
merci beaucoup
RE: [résolu] 2 formulaires sur une même page - seishin - 10-08-2014
Pour illustrer la solution avec 2 formulaires ou la solution avec 1 formulaire
(Il vous faut un serveur PHP pour faire le test)
Bonne soirée
Seishin
|