Une histoire de formulaire qui ne passe pas !!!!

Une histoire de formulaire qui ne passe pas !!!! - PHP - Programmation

Marsh Posté le 08-06-2004 à 10:07:57    

Bonjour,
 
J'essaie de passer des varaible dans un formulaire mais certaines choses de passent pas. Je m'explique:
 
Pour accéder accéder, il faut vérifier que l'utilisateur est identifié, si ce n'est pas le cas, l'utilisateur est renvoyé sur une page d'identification : www.nomdomaine.com/login.php?back= [...] ntifiant=2
 
Back est la page à laquelle l'utilisateur souhaitait accéder avant la vérification de son login. Les variables sont donc récupérées avec $_GET. L'utilisateur remplit donc le formulaire avec un login et mot de Passe via un formulaire, Les valeurs sont à ce moment précis renvoyée avec la méthode POST (et non plus avec la méthode GET). La page de login est rechargé et renvoie sur back si c'est ok ou recharge le formulaire sinon. On note cependant que les varibla back et identifiant doivent aussi être passée grâce à ce formulaire. Voici un résumé du code:
---------------------------------------------------------------
//Dans un premier temps, seul l'id et le back sont transmis à cette page avec la méthode GET
//Dans un deuxième temps (après l'identification) les infos sont passées avec la méthode POST
 
 
if (isset($_GET['back'])) { $back=$_GET['back'];}
if (isset($_GET['identifiant'])) {$id=$_GET['identifiant'];}
if (isset($_POST['back'])) {$back=$_POST['back'];}
if (isset($_POST['identifiant'])) {$id=$_POST['identifiant'];}
if (isset($_POST['login'])) {$login=$_POST['login'];}
if (isset($_POST['password'])) {$password=$_POST['password'];}
if (isset($_POST['send'])) {$send=$_POST['send'];  
 
 
// On détruit les GET vu qu'on va utiliser la methode post pour le formulaire (surtout valable lors du premier chargment de la page)
unset($_GET['id']);
unset($_GET['back']);
 
include("confidentiel/fonctions.php" );
 
connexion();
$error_login=false;
 
 
//Il faut gérer deux choses:  
//- si la combinaision login/password exsite dans la base
//- Si c'est le cas, il faut voir si l'utilisateur en question a le droit d'accéder à cette page (ie a le bon id)
 
if ($send!='')
{
//Ici a lieu l'ananlyse de l'identifcation
}
mysql_close();
 
echo ParseTpl(makeUp('../style/bandeau','login','../style/','../'));
 
 
if($error_login)
{
 echo "<p class=\"centre\">Erreur de Login ou de password !</p>";
}
else //L'utisateur existe ($error_login=false -> la combinaison login/mot de passe est correct) mais il n'a pas le droit d'accéder à la page
{
  echo "<p class=\"centre\">Désolé mais tu n'es pas autorisé à accéder à cette page !</p>";
}
   
?>
 
<form action="login.php" method="post">
   
   <fieldset>
   
   <legend class=legend>Identification</legend>
   
   <table style="background:none;border-width:0;width:10%;margin-left:40% ; margin-right:40%">
   <tr>
    <td>Nain: </td>
    <td><input class=textForm type="text" name="login" /> </td>
   </tr>
   <tr>
    <td>Pass:</td>
    <td><input class=textForm type="password" name="password" /></td>
   </tr>  
     
   <tr>
   <td class="centre" colspan="2">
   <?php
    if($error_login)
    {  
    echo "<input type=\"hidden\" name=\"back\" value=\"$back\" />";
    }  
    else
    {
    echo "<input type=\"hidden\" name=\"back\" value=\"$back\" />\n"
        ."<input type=\"hidden\" name=\"id\" value=\"$identification\" />";
    }
   ?>  
    <input type="hidden" name="send" value="1" />
    <input class=inputButton type="submit" value="OK" />
    </td>
   </tr>
   </table>
   
   </fieldset>
   
   </form>
   
   </body>
   
</html>
---------------------------------------------------------------------
 
Le pb, c'est que je récupère parfois des valeur vides dans le fomulaire (soit au premier chargment de la page (id et back récupérés avec GET, soit après un ou plusieurs chargement du formulaire (id et back renvoyés avec la méthode POST).
Je crois bien que j'ai un pb avec les méthodes GET et POST (ou alors c'est un pb qui m'échappe et c'est pour ça que je pose la question ici pour voir si qqun peut éclairer ma lanterne  :hello:


Message édité par cakeman le 08-06-2004 à 10:08:33

---------------
Qui ne s'est jamais perdu dans les voies impénétrables de l'informatique !
Reply

Marsh Posté le 08-06-2004 à 10:07:57   

Reply

Marsh Posté le 08-06-2004 à 11:55:47    

Citation :


unset($_GET['id']);
echo "<input type=\"hidden\" name=\"back\" value=\"$back\" />\n"  
       ."<input type=\"hidden\" name=\"id\" value=\"$identification\" />";  


 
Tu mélanges les variables $id, $identification et $identifiant
 

Citation :


// On détruit les GET vu qu'on va utiliser la methode post pour le formulaire (surtout valable lors du premier chargment de la page)  
unset($_GET['id']);  
unset($_GET['back']);


 
Je trouve ça bien inutile
 


 
Pourquoi ne pas utiliser des variables de session pour transmettre back et identifiant? Déja c'est plus propre et ensuite avec ta méthode n'importe qui peut se faire passer pour autruit en changant son identifiant dans l'URL


Message édité par Jer le 08-06-2004 à 12:02:10
Reply

Marsh Posté le 08-06-2004 à 12:56:33    

sauf qu'il faut qu'il connaisse le mot de passe pour effectivement avoir les accès de cette personne.
Je en mâitrise pas trop les variables de session mais je vais me penscher sur la question.


Message édité par cakeman le 08-06-2004 à 13:02:11

---------------
Qui ne s'est jamais perdu dans les voies impénétrables de l'informatique !
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed