JeuWeb - Crée ton jeu par navigateur
[résolu] 2 formulaires sur une même page - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [résolu] 2 formulaires sur une même page (/showthread.php?tid=7162)



[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 Sad

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 : &nbsp<input class="input" type="text" name="login" />&nbsp &nbsp &nbsp
            Mot de passe : &nbsp<input class="input" type="password" name="pass" /> &nbsp &nbsp
            <input type="submit" name="connect" value="Se Connecter" />
            </form>
            <div id="mdp"><a href="new_passe.php">Mot de passe oubli&eacute;</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! Smile) 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 Sad
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&eacute;j&agrave;,<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&eacute;j&agrave;,<br />veuillez en choisir un autre et recommencer l\'inscription.</span>';
                }
            }
            else {
                $resultat = '<span class="error-info">Le champ &quot;Saisir un Mot de Passe&quot; et le champ &quot;Resaisir un Mot de Passe&quot; doivent &ecirc;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 Wink


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