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
Bonjour,

Voilà j'ai un formulaire de connexion (avec login et mot de passe) et j'aimerais que lorsque mon pseudo ou mon mot de passe sont vide que je sois redirigé vers la même page (page de connexion) avec en plus un message d'erreur ?!

Faire aussi la même chose lorsque mon mot de passe ou mon login sont incorrects

Quelqu'un pourrait-il m'aider pour résoudre cette problématique?

Merci d'avance.
A voir également:

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
dans ton formulaire, tu mets:
<form id="formulaire_id"  action="#" method="post">
0
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
Oui et aprés ?! Car moi je veux aussi indiquer à la personne un message d'erreur ?

Merci d'avance.
0
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
Hola, du calme...
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";
}
0
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
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.
0

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
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?
0
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
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.
0
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
Ok.
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
0
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
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 :


<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.
0
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
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 :
<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?
0
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
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 :


<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 ?
0
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
Ok, laisse ton formulaire en post.
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?
0
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#
0
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
Ok. remplace ta fonction par ça:
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.
0
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..
0
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
regarde tes MP
0
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
tiens, remplace ton bloc par ça:

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
0
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
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';
 }
    }


}
    
}
0
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
Aaaah ça marche !!!

Merci beaucoup en tout cas pour ton aide ;)
0
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
Ok, mets le post en résolu stp
0