Redirection PHP sur même page
Résolu/Fermé
Coutcout86
Messages postés
195
Date d'inscription
lundi 23 novembre 2009
Statut
Membre
Dernière intervention
26 mai 2016
-
2 janv. 2014 à 14:23
Super_carotte Messages postés 1419 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 27 janvier 2015 - 2 janv. 2014 à 16:41
Super_carotte Messages postés 1419 Date d'inscription mardi 8 janvier 2008 Statut Membre Dernière intervention 27 janvier 2015 - 2 janv. 2014 à 16:41
A voir également:
- Redirection PHP sur même page
- Easy php - Télécharger - Divers Web & Internet
- Redirection de mail - Guide
- Php?id=1 - Forum PHP
- Avertissement de redirection - Forum Réseaux sociaux
- \R php ✓ - Forum PHP
18 réponses
Super_carotte
Messages postés
1419
Date d'inscription
mardi 8 janvier 2008
Statut
Membre
Dernière intervention
27 janvier 2015
127
Modifié par pijaku le 2/01/2014 à 18:03
Modifié par pijaku le 2/01/2014 à 18:03
dans ton formulaire, tu mets:
<form id="formulaire_id" action="#" method="post">
Coutcout86
Messages postés
195
Date d'inscription
lundi 23 novembre 2009
Statut
Membre
Dernière intervention
26 mai 2016
2 janv. 2014 à 14:39
2 janv. 2014 à 14:39
Oui et aprés ?! Car moi je veux aussi indiquer à la personne un message d'erreur ?
Merci d'avance.
Merci d'avance.
Super_carotte
Messages postés
1419
Date d'inscription
mardi 8 janvier 2008
Statut
Membre
Dernière intervention
27 janvier 2015
127
Modifié par pijaku le 2/01/2014 à 18:03
Modifié par pijaku le 2/01/2014 à 18:03
Hola, du calme...
Et bien tu fais un test pour voir si le login ou mdp est incorect.
Et bien tu fais un test pour voir si le login ou mdp est incorect.
if($_POST['id_formulaire_mdp'] != "mdp_que_j_atends"){ echo "mauvais mdp"; }
Coutcout86
Messages postés
195
Date d'inscription
lundi 23 novembre 2009
Statut
Membre
Dernière intervention
26 mai 2016
2 janv. 2014 à 14:47
2 janv. 2014 à 14:47
C'est ce que j'ai fais sauf que moi je veux être rediriger vers la même page. Si la personne essaye de se connecter et que son mot de passe ou son login sont vides et bien je reste sur la page Connexion.php sauf que j'ai un message d'erreur en plus qui s'affiche.
Est-ce que tu vois ce que je veux ? N'hésite pas si tu as besoin de plus de renseignements car je ne suis pas trés clair des fois ;)
Merci d'avance.
Est-ce que tu vois ce que je veux ? N'hésite pas si tu as besoin de plus de renseignements car je ne suis pas trés clair des fois ;)
Merci d'avance.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Super_carotte
Messages postés
1419
Date d'inscription
mardi 8 janvier 2008
Statut
Membre
Dernière intervention
27 janvier 2015
127
2 janv. 2014 à 14:54
2 janv. 2014 à 14:54
C'est eactement le code que je t'ai passé plus haut. Tu as juste a faire un test sur tes variables POST.
Ou est ton soucis exactement? qu'est-ce qu'il ne marche pas exactement?
Pour l'instant, tu arrives bien a rester sur la meme page quand tu valides ton formulaire?
Ou est ton soucis exactement? qu'est-ce qu'il ne marche pas exactement?
Pour l'instant, tu arrives bien a rester sur la meme page quand tu valides ton formulaire?
Coutcout86
Messages postés
195
Date d'inscription
lundi 23 novembre 2009
Statut
Membre
Dernière intervention
26 mai 2016
2 janv. 2014 à 14:59
2 janv. 2014 à 14:59
Pour l'instant je reste bien sur la même page lorsque mon mot de passe et mon login sont vides. Mon problème se situe juste au niveau du message d'erreur je n'arrive pas à l'afficher.
De plus et je pense que c'est une donnée importante, je suis sous architecture MVC
Merci d'avance.
De plus et je pense que c'est une donnée importante, je suis sous architecture MVC
Merci d'avance.
Super_carotte
Messages postés
1419
Date d'inscription
mardi 8 janvier 2008
Statut
Membre
Dernière intervention
27 janvier 2015
127
Modifié par pijaku le 2/01/2014 à 18:04
Modifié par pijaku le 2/01/2014 à 18:04
Ok.
1- Trouve les ID des champs de ton formulaire.
2- met le code suivant:
Et dis moi ce qui ne marche pas avec ça
1- Trouve les ID des champs de ton formulaire.
2- met le code suivant:
if($_POST['id_formulaire_mdp'] != "mdp_que_j_atends"){ echo "mauvais mdp"; }
Et dis moi ce qui ne marche pas avec ça
Coutcout86
Messages postés
195
Date d'inscription
lundi 23 novembre 2009
Statut
Membre
Dernière intervention
26 mai 2016
2 janv. 2014 à 15:24
2 janv. 2014 à 15:24
Donc je vais aller plus loin dans mes explications : J'ai une vue que j'appelle Connexion.php et une autre Vue que j'ai appelé Accueil.php. Ensuite j'ai un fichier index.php qui répertorie toutes les actions que je peux faire. Dans chaque action, il y a une fonction qui est gérer dans un fichier Controller.php.
Voici mon formulaire :
Voilà comment se présente mon fichier index.php avec mes actions :
Et par défaut mon formulaire de Connexion.php devrait appeler l'action ''par défaut'' qui est connexion(). Or je ne sais pas comment faire.
Aprés, à partir de cette fonction connexion(), je teste si mon login et/ou mot de passe sont vide et je teste aussi si le mot de passe est bon.
Et dans ma fonction connexion() (qui est elle dans mon fichier Controlleur.php) j'ai ça :
Or dans ce cas là ça ne fonctionne pas. Je pense que cela te permet d'y voir plus clair et de pouvoir m'aider plus rapidement à ma problématique ?
Merci d'avance.
Voici mon formulaire :
<form method="post" action="">
<fieldset class="fieldset_connexion">
<legend class="legend_connexion">Connexion</legend>
<p>
<label for="pseudo">Login :</label><br /><input name="pseudo" type="text" id="pseudo" /> <img align="middle" src="../img/login.png"/><br /><br />
<label for="password">Mot de Passe :</label><br /><input type="password" name="password" id="password" /> <img align="middle" src="../img/password.png"/>
</p>
<p align="center"><input type="submit" value="Connexion" id="connexion"/></p>
</fieldset>
</form>
Voilà comment se présente mon fichier index.php avec mes actions :
switch ($_GET['action']) {
case 'heureEffectif':
tabHeureEffectifStage();
break;
case 'locaux':
tabLocaux();
break;
case 'heureFormateur':
tabHeureFormateur();
break;
case 'affichageHeureEffectif' :
afficheHeureEffectif();
break;
default:
case 'importYPareo' :
afficheHeureEffectif();
break;
default:
connexion();
break;
}
Et par défaut mon formulaire de Connexion.php devrait appeler l'action ''par défaut'' qui est connexion(). Or je ne sais pas comment faire.
Aprés, à partir de cette fonction connexion(), je teste si mon login et/ou mot de passe sont vide et je teste aussi si le mot de passe est bon.
Et dans ma fonction connexion() (qui est elle dans mon fichier Controlleur.php) j'ai ça :
function connexion()
{
if(!isset($_POST['pseudo'])) //On est dans la page de formulaire
{
header("Location:Vue/Connexion.php");
}else
{
if (empty($_POST['pseudo']) || empty($_POST['password']) )
{
}
else
{
$users = getConnexion($_POST['pseudo']);
if ($users['mdp_users'] == md5($_POST['password']))
{
$_SESSION['pseudo'] = $users['login_users'];
$_SESSION['id'] = $users['id_users'];
header("Location:Vue/Accueil.php");
}
else // Acces pas OK !
{
echo "mauvais mdp";
}
}
}
Or dans ce cas là ça ne fonctionne pas. Je pense que cela te permet d'y voir plus clair et de pouvoir m'aider plus rapidement à ma problématique ?
Merci d'avance.
Super_carotte
Messages postés
1419
Date d'inscription
mardi 8 janvier 2008
Statut
Membre
Dernière intervention
27 janvier 2015
127
Modifié par pijaku le 2/01/2014 à 18:04
Modifié par pijaku le 2/01/2014 à 18:04
Ok, on va découper le probleme en deux parties:
1- se faire rediriger vers la bonne page
2- gerer les messages d'erreure.
Tu es en MVC avec un index qui joue le role de front controller.
Dans ton formulaire, remplace :
par:
Ensuite, ton front controleur attend des get alors que tu lui envois des post, a voir si ton soucis ne vient pas de la.
Perso, mes front controleur ressemblent a ça:
Question: prenons l'exemple de ton "heureEffectif". Qu'est-ce qui dans le formulaire de la page "heureEffectif" envoi la valeur "heureEffectif" a ton front controler?
1- se faire rediriger vers la bonne page
2- gerer les messages d'erreure.
Tu es en MVC avec un index qui joue le role de front controller.
Dans ton formulaire, remplace :
<form method="post" action="">
par:
<form method="post" action="#">
Ensuite, ton front controleur attend des get alors que tu lui envois des post, a voir si ton soucis ne vient pas de la.
Perso, mes front controleur ressemblent a ça:
//On inclut le contrôleur s'il existe et s'il est spécifié if (!empty($_POST['page']) && is_file(CHEMIN_CONTROLEUR.$_POST['page'].'.php')) { include CHEMIN_CONTROLEUR.$_POST['page'].'.php'; }else { include (CHEMIN_GLOBAL.'accueil.php'); }
Question: prenons l'exemple de ton "heureEffectif". Qu'est-ce qui dans le formulaire de la page "heureEffectif" envoi la valeur "heureEffectif" a ton front controler?
Coutcout86
Messages postés
195
Date d'inscription
lundi 23 novembre 2009
Statut
Membre
Dernière intervention
26 mai 2016
2 janv. 2014 à 15:48
2 janv. 2014 à 15:48
Pour le formulaire c'est fait ! ;)
Ensuite pour mon front controller pourquoi ne pas faire comme j'ai fait . En effet mon formulaire de Connexionest en POST il faudrait peut être dans ce cas le passer en GET ?:
Pour répondre à ta question, ma vue Accueil.php contient des UL LI qui sont de
cette manière :
Et donc à chaque fois que je clique sur un lien (pour ton exemple je clique sur Heures et Effectifs Stagiaire) et bien je vais sur la page index.php sur la page index.php il y une action heureEffectif et dans cette action j'appelle une fonction qui fait ce que je souhaite.
Je sais pas si j'ai bien répondu à ta question ?
Ensuite pour mon front controller pourquoi ne pas faire comme j'ai fait . En effet mon formulaire de Connexionest en POST il faudrait peut être dans ce cas le passer en GET ?:
Pour répondre à ta question, ma vue Accueil.php contient des UL LI qui sont de
cette manière :
<ul>
<li><a href="index.php?action=heureEffectif">Heures et Effectifs Stagiaire</a></li><br/><!--Tableau 1-->
<!--<li>Voir le tableau 1</li>Tableau 2 A FAIRE PLUS TARD-->
<li><a href="index.php?action=locaux">Heures de formation par Salle</a></li><br/><!--Tableau 3-->
<li><a href="index.php?action=heureFormateur">Heure des formateurs</a></li><br/><!--Tableau 4-->
<li><a href="importYPareo.php">Importer données d'YPareo</a></li><br/><!--Import données YPareo-->
</ul>
Et donc à chaque fois que je clique sur un lien (pour ton exemple je clique sur Heures et Effectifs Stagiaire) et bien je vais sur la page index.php sur la page index.php il y une action heureEffectif et dans cette action j'appelle une fonction qui fait ce que je souhaite.
Je sais pas si j'ai bien répondu à ta question ?
Super_carotte
Messages postés
1419
Date d'inscription
mardi 8 janvier 2008
Statut
Membre
Dernière intervention
27 janvier 2015
127
Modifié par pijaku le 2/01/2014 à 18:05
Modifié par pijaku le 2/01/2014 à 18:05
Ok, laisse ton formulaire en post.
rajoute un hidden dans ton formulaire connexion:
Ce que tu vas faire:
(vérifie les parenthese fermantes)ça donne quoi la?
rajoute un hidden dans ton formulaire connexion:
<input type="hidden" name="formulaire_conexion" value="1">
Ce que tu vas faire:
if (!empty($_POST) && (!empty($_POST['formulaire_conexion']))){ connexion(); }else{ switch ($_GET['action']) { case 'heureEffectif': tabHeureEffectifStage(); break; case 'locaux': tabLocaux(); break; case 'heureFormateur': tabHeureFormateur(); break; case 'affichageHeureEffectif' : afficheHeureEffectif(); break; default: case 'importYPareo' : afficheHeureEffectif(); break; default: connexion(); break; } }
(vérifie les parenthese fermantes)ça donne quoi la?
Là en fait quoiqu'il arrive (mot de passe et login bon, mot de passe et/ou login vide, mot de passe et/ou login incorrects) je suis rediriger vers la même page qui est : Vue/Connexion.php#
Super_carotte
Messages postés
1419
Date d'inscription
mardi 8 janvier 2008
Statut
Membre
Dernière intervention
27 janvier 2015
127
Modifié par pijaku le 2/01/2014 à 18:05
Modifié par pijaku le 2/01/2014 à 18:05
Ok. remplace ta fonction par ça:
Et dis moi quel message s'affiche quand tu envois ton formulaire.
function connexion() { if(!isset($_POST['pseudo'])) //On est dans la page de formulaire { //header("Location:Vue/Connexion.php"); echo "pseudo vide</br>"; }else { if (empty($_POST['pseudo']) || empty($_POST['password']) ) { echo "pseudo ET/OU MDP vide</br>"; } else { $users = getConnexion($_POST['pseudo']); if ($users['mdp_users'] == md5($_POST['password'])) { $_SESSION['pseudo'] = $users['login_users']; $_SESSION['id'] = $users['id_users']; header("Location:Vue/Accueil.php"); } else // Acces pas OK ! { echo "mauvais mdp"; } } }
Et dis moi quel message s'affiche quand tu envois ton formulaire.
L'adresse de mon application c'est : NOMDUSERVEUR/nomDeLAppli/
C'est adresse devrait automatiquement rediriger vers ma page de Connexion .Or là il m'affiche ''pseudo vide''.
De plus lorsque j'appelle de fichier de Connexion (vu que je connais le chemin du serveur ), lorsque j'envoie mon formulaire j'ai toujours rien..
C'est adresse devrait automatiquement rediriger vers ma page de Connexion .Or là il m'affiche ''pseudo vide''.
De plus lorsque j'appelle de fichier de Connexion (vu que je connais le chemin du serveur ), lorsque j'envoie mon formulaire j'ai toujours rien..
Super_carotte
Messages postés
1419
Date d'inscription
mardi 8 janvier 2008
Statut
Membre
Dernière intervention
27 janvier 2015
127
2 janv. 2014 à 16:19
2 janv. 2014 à 16:19
regarde tes MP
Super_carotte
Messages postés
1419
Date d'inscription
mardi 8 janvier 2008
Statut
Membre
Dernière intervention
27 janvier 2015
127
Modifié par pijaku le 2/01/2014 à 18:05
Modifié par pijaku le 2/01/2014 à 18:05
tiens, remplace ton bloc par ça:
et dis moi ce qu'il se passe
if (!empty($_POST) && (!empty($_POST['formulaire_conexion']))){ echo "pseudo= ".$_POST['pseudo']."</br>"; echo "password= ".$_POST['password']."</br>"; //connexion(); }else{ switch ($_GET['action']) { case 'heureEffectif': tabHeureEffectifStage(); break; case 'locaux': tabLocaux(); break; case 'heureFormateur': tabHeureFormateur(); break; case 'affichageHeureEffectif' : afficheHeureEffectif(); break; default: case 'importYPareo' : afficheHeureEffectif(); break; default: connexion(); break; } }
et dis moi ce qu'il se passe
Super_carotte
Messages postés
1419
Date d'inscription
mardi 8 janvier 2008
Statut
Membre
Dernière intervention
27 janvier 2015
127
Modifié par pijaku le 2/01/2014 à 18:05
Modifié par pijaku le 2/01/2014 à 18:05
Essaie comme ça:
function connexion() { if(!isset($_POST['pseudo'])) //On est dans la page de formulaire { include('Vue/Connexion.php'); // On inclut le formulaire d'identification }else { if (empty($_POST['pseudo']) || empty($_POST['password']) ) //Oublie d'un champ { echo '<div style="text-align: center; color: red">Login ou mot de passe incorect.</div>'; include('Vue/Connexion.php'); // On inclut le formulaire d'identification } else { $users = getConnexion($_POST['pseudo']); if ($users['mdp_users'] == md5($_POST['password'])) { $_SESSION['pseudo'] = $users['login_users']; $_SESSION['id'] = $users['id_users']; require 'Vue/Accueil.php'; } else // Acces pas OK ! { require 'Vue/Connexion.php'; } } } }
Coutcout86
Messages postés
195
Date d'inscription
lundi 23 novembre 2009
Statut
Membre
Dernière intervention
26 mai 2016
2 janv. 2014 à 16:37
2 janv. 2014 à 16:37
Aaaah ça marche !!!
Merci beaucoup en tout cas pour ton aide ;)
Merci beaucoup en tout cas pour ton aide ;)
Super_carotte
Messages postés
1419
Date d'inscription
mardi 8 janvier 2008
Statut
Membre
Dernière intervention
27 janvier 2015
127
2 janv. 2014 à 16:41
2 janv. 2014 à 16:41
Ok, mets le post en résolu stp