Redirection et session

sparh Messages postés 23 Date d'inscription mercredi 12 avril 2006 Statut Membre Dernière intervention 14 décembre 2012 - 15 juin 2006 à 14:52
sparh Messages postés 23 Date d'inscription mercredi 12 avril 2006 Statut Membre Dernière intervention 14 décembre 2012 - 20 juin 2006 à 11:15
Bonjour,
je bloque sur un problème de session.
J'essai de créer une zone membre à l'aide des sessions. Pour l'instant tout va bien et j'ai donc un lien qui permet de s'enregistrer et d'accéder à la zone membre.
Par contre j'aimerai sécuriser des pages (autre que la zone membre) sans que l'utilisateurs ai besoin de passer par la zone membre.
En gros il clique sur le lien, un message lui dit qu'il faut être enregisré pour accéder à la page, il s'enregistre et accède à la page.
Voilà le code de ma page connexion qui permet de s'enregistrer:

      ----

      <form name= "form1" method="post" action="verifinscription.php">
      <table width="89%" height="151"  border="2">
        ----

         ,

            Email
</td>
       
        ----

                      <label>
            " size="20">
            </label>
         ,
       
        ----

          Password,
       
        ----

                      " size="20">
         ,
       
        ----

          <label>           
            
           

            
           

            </label>
             

             
Inscription&amp;nbsp;
                <label>
              <?php
              @include"config.php";
echo "pass perdu";
           
           
            ?>
             

                </label>
         

             ,
       
     

      </form></td>
    </tr>
</table>


Et voilà verifinscription
<?php
$db  = mysql_connect($serveur, $login, $password); 
mysql_select_db($base,$db);
$pseudo= htmlspecialchars($HTTP_POST_VARS["pseudo"]); 
 $email=$HTTP_POST_VARS["email"]; 
$passe=htmlspecialchars($HTTP_POST_VARS["passe"]);
$aujourdhui = date("d/m/Y");
$sql = "INSERT INTO $table (pseudo,passe,email,nom,prenom,age,sexe,pays,departement ,ville ,cdp,adresse,telephone,portable,fax,site,mot,image,date ,ok,val) VALUES ('$pseudo', '$passe', '$email','$nom','$prenom','$age','$sexe','$pays','$departement','$ville','$cdp','$adresse','$telephone','$portable','$fax','$site','$mot','avatar/100.gif','$aujourdhui','$ok','$val')";
header("Location: fichemembre.php?");exit;
}
if ($action == "connect")
{
session_start();    session_register("email");     session_register("passe");
//récuperation des champs du formulaire
$email=$HTTP_POST_VARS["email"];    $passe=$HTTP_POST_VARS["passe"];
$db = mysql_connect($serveur, $login, $password); 
mysql_select_db($base,$db);
 
$sql="select * from $table where passe like '$passe' and email like '$email'";
$result= mysql_query($sql);
$nb=mysql_num_rows($result);
$rs=mysql_fetch_array($result);if($email ""||$passe ""){echo" <center>Le champs  email et password  sont obligatoires merci !</center>"; exit; }
if ($nb == 0)
{echo"<center> l'email ou le mot de passe n'est pas connu 

retour</center>";exit;

 }
if ($nb ==1)
{$message="salut
 $email
 vous êtes bien identifié";
setcookie("cokmail",$email,time()+365*24*60*60) ;
//mise en session de l'email et du passe
$email_session=$email;   $code_session=$rs["code"];}
 include("config.php");

?


Voilà, si quelqu'un pouvait m'aider ce serait cool, merci d'avance

13 réponses

pcgpegase Messages postés 96 Date d'inscription lundi 24 novembre 2003 Statut Membre Dernière intervention 24 avril 2007 1
15 juin 2006 à 15:21
Bonjour,

Si tu veux protéger des pages pour que les personnes qui ne sont pas enregistrées soient redirigées vers ton formulaire de connexion, tu as juste à insérer ce petit bout de code à la première ligne de chacune des pages que tu veux protéger :

"if (!isset($_SESSION['nom_de_ta_variable'])) { header('Location: http://tonsite.com/tonformulaire.php'); }"

c'est tout :)

bye
0
sparh Messages postés 23 Date d'inscription mercredi 12 avril 2006 Statut Membre Dernière intervention 14 décembre 2012
15 juin 2006 à 15:57
super, merci,
et maintenan comment faire lorsqu'il a été redirigé sur la page "tonformulaire.php" (mon formulaire est là haut ;), s'enregistre et clic sur ok ,
ne soit pas redirigé vers la zone membre mais vers le lien sur lequel il a cliqué.
Je récapitule:
1er lien= zone membre -> clic="monformulaire.php" puis fichemembre (ca c ok)
2ème lien = page 2 -> clic --> page protégée -> redirection monformulaire.php ->enregistrement (jusqu'ici ca va)-> redirection page 2 (là j'arrive pas!)
3ème lien = page 3 -> clic --> page protégée -> redirection monformulaire.php ->enregistrement -> redirection page 3
Voilà j'ai essayé d'être clair mais c pas facile,
merci d'avance
0
pcgpegase Messages postés 96 Date d'inscription lundi 24 novembre 2003 Statut Membre Dernière intervention 24 avril 2007 1
15 juin 2006 à 16:07
Tu dois pouvoir le faire avec le REFERER.
Dans ton fichier formulaire.php tu déclares une variable : $var = $_SERVER['HTTP_REFERER'];
Cette fonction permet de te donner l'adresse de la dernière page.
Et au moment où il valide le formulaire, si c'est ok, tu le rediriges sur le REFERER :)

Si tu comprends pas trop, je te ferais un truc quand je rentrerais du taff.

bye
0
sparh Messages postés 23 Date d'inscription mercredi 12 avril 2006 Statut Membre Dernière intervention 14 décembre 2012
15 juin 2006 à 17:15
ok, je déclare la variable
$var = $_SERVER['HTTP_REFERER'];
en haut du script formulaire php
puis à la place de
header("Location: fichemembre.php?");exit;
}

je met
header("Location: $_SERVER['HTTP_REFERER'];");exit;
}


Mais ca marche pas , l'erreur renvoyé est Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /mnt/109/free.fr/a/b/leschagnasses/connect.php on line 167
la ligne 167 étant justement celle avec header("Location....
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pcgpegase Messages postés 96 Date d'inscription lundi 24 novembre 2003 Statut Membre Dernière intervention 24 avril 2007 1
15 juin 2006 à 17:25
<code>header("Location: $_SERVER['HTTP_REFERER']");exit;

Y a pas de ";" apres REFERER :)
0
sparh Messages postés 23 Date d'inscription mercredi 12 avril 2006 Statut Membre Dernière intervention 14 décembre 2012
15 juin 2006 à 18:03
voilà, j ai donc changé:
header("Location: $_SERVER['HTTP_REFERER']");exit;
}
et il me renvoi tjrs la même erreur même ligne?
Merci en tous cas c cool de m'aider
0
sparh Messages postés 23 Date d'inscription mercredi 12 avril 2006 Statut Membre Dernière intervention 14 décembre 2012
17 juin 2006 à 09:09
Salut, après bonne galère j'ai réussis (enfin presque)
Il y avait une erreur de syntaxe, voici par quoi j'ai remplacé:
header("Location: {$_SERVER['HTTP_REFERER']}");
Mais voilà cette fonction permet de retourner la page d'ou vien le visiteur mais pas celle ou il voulait aller:
je m'explique
le visiteur est sur la page A; il clique sur un lien pour aller sur la page B, cette dernière est protégée, il est donc redirigé
vers le formulaire d'inscription. Il remplis les champs et quand il clique sur ok il accède à la page B.
J'ai plein de page à protéger, donc il me faut une fonction qui récupère l'url de la page demandée et la renvoie une fois
le formulaire correctement remplis. J'éspère avoir été clair,
Merci d'avance
++
0
pcgpegase Messages postés 96 Date d'inscription lundi 24 novembre 2003 Statut Membre Dernière intervention 24 avril 2007 1
17 juin 2006 à 12:24
Bonjour,

A ma connaissance le seul moyen que tu as pour cela, c'est d'utiliser le REFERER...
Quand ton visiteur est sur la page A il veut aller sur la page B, ça le renvoie sur le formulaire et donc le REFERER est égal à la page B, la dessus un on est d'accord.
Ce que tu peux faire c'est quand il va sur la page B, vu qu'il n'est pas connecté, il va être renvoyé au formulaire, juste avant de le rediriger, tu peux déclarer une variable session : $_SESSION['referer'] (par exemple) = $_SERVER['HTTP_REFERER'];
Ce qui aura comme valeur la page A.
Puis dans ton formulaire, lorsqu'il est validé, tu le rediriges avec cette variable.

Tiens moi au courant :)

bye
0
sparh Messages postés 23 Date d'inscription mercredi 12 avril 2006 Statut Membre Dernière intervention 14 décembre 2012
17 juin 2006 à 13:37
Donc voilà:
sur ma page B (protégée) je met tout en haut:
<?php
$_SESSION['referer'] = $_SERVER['HTTP_REFERER'];
if (!isset($_SESSION['email'])) { header('Location: monformulaire.php'); }
?>

Sur ma page "monformulaire":
header("Location: {$_SERVER['HTTP_REFERER']}");
exit;}
mais ca me renvoi nul part!!
j'ai essayé de remplacer par
header("Location: fichemembre.php?");exit;
}
et la ca marche j'atteint bien fichemembre.php
0
pcgpegase Messages postés 96 Date d'inscription lundi 24 novembre 2003 Statut Membre Dernière intervention 24 avril 2007 1
17 juin 2006 à 14:08
Nan tout est bon sauf que sur ton formulaire c'est : header("Location: {$_SESSION['referer']}"); exit;

J'ai testé chez moi en local, et ça fonctionne bien. :)
0
sparh Messages postés 23 Date d'inscription mercredi 12 avril 2006 Statut Membre Dernière intervention 14 décembre 2012
17 juin 2006 à 15:37
j ai tout bien placé, remplacé mon erreur par le {$_SESSION['referer']}"); exit;
rine à faire une fois enregistré le formulaire me renvoi vers la page A.
Alors que j'ai bien sur l'en tête de ma page B (celle à atteindre)
<?php
$_SESSION['referer'] = $_SERVER['HTTP_REFERER'];
if (!isset($_SESSION['email'])) { header('Location: http://leschagnasses.free.fr/connect.php'); }
?>

j comprends pas!
Bon j'vous met le code de ma page formulaire au cas ou, y'a peut être une erreur dans mon formulaire??

<?php
$db = mysql_connect($serveur, $login, $password);
mysql_select_db($base,$db);
//récuperation des champs de l'inscription
$pseudo=htmlspecialchars($HTTP_POST_VARS["pseudo"]);
 $email=$HTTP_POST_VARS["email"];
$passe=htmlspecialchars($HTTP_POST_VARS["passe"]);
$nom=htmlspecialchars($HTTP_POST_VARS["nom"]);
 $prenom=htmlspecialchars($HTTP_POST_VARS["prenom"]);
 $age=htmlspecialchars($HTTP_POST_VARS["age"]);
$sexe=$HTTP_POST_VARS["sexe"];
$pays=htmlspecialchars($HTTP_POST_VARS["pays"]);
$Département=$HTTP_POST_VARS["Département"];
$ville=htmlspecialchars($HTTP_POST_VARS["ville"]);
$cdp=htmlspecialchars($HTTP_POST_VARS["cdp"]);
$adresse=htmlspecialchars($HTTP_POST_VARS["adresse"]);
$telephone=htmlspecialchars($HTTP_POST_VARS["telephone"]);
$portable=htmlspecialchars($HTTP_POST_VARS["portable"]);
$fax=htmlspecialchars($HTTP_POST_VARS["fax"]);
$site=$HTTP_POST_VARS["site"]; 
$mot=htmlspecialchars($HTTP_POST_VARS["mot"]);

//je supprime les espaces vides
$pseudo=trim($pseudo);
$email=trim($email);
$passe=trim($passe);
$nom=trim($nom);
$prenom=trim($prenom);
$age=trim($age);
$sexe=trim($sexe);
$pays=trim($pays);
$Département=trim($Département);
$ville=trim($ville);
$cdp=trim($cdp);
$adresse=trim($adresse);
$telephone=trim($telephone);
$portable=trim($portable);
$fax=trim($fax);
$site=trim($site);
$mot=trim($mot);

if ($action == "connect")
{
session_start();    session_register("email");     session_register("passe");
//récuperation des champs du formulaire
$email=$HTTP_POST_VARS["email"];    $passe=$HTTP_POST_VARS["passe"];
$db = mysql_connect($serveur, $login, $password);
mysql_select_db($base,$db);
 
$sql="select * from $table where passe like '$passe' and email like '$email'";
$result= mysql_query($sql);
$nb=mysql_num_rows($result);
$rs=mysql_fetch_array($result);if($email ""||$passe ""){echo" <center>Le champs email et password sont obligatoires merci !</center>"; exit; }
if ($nb == 0)
{echo"<center> l'email ou le mot de passe n'est pas connu

retour</center>";exit;

 }
if ($nb ==1)
{$message="salut
$email
vous êtes bien identifié vous allez être redirigé vers votre espace membre";
setcookie("cokmail",$email,time()+365*24*60*60) ;
//mise en session de l'email et du passe
$email_session=$email;   $code_session=$rs["code"];}
header("Location: {$_SESSION['referer']}"); exit;
}

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Document sans titre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

      ----

      <form name="form1" method="post" action="connect.php">
      <table width="89%" height="151"  border="2">
        ----

         ,

            Email
</td>
       
        ----

                      <label>
            " size="20">
            </label>
         ,
       
        ----

          Password,
       
        ----

                      " size="20">
         ,
       
        ----

          <label>           
           
           

           
           

            </label>
             

             
Inscription&nbsp;
                <label>
              <?php
              @include"config.php";
echo "pass perdu";
           
           
            ?>
             

                </label>
         

             ,
       
     

      </form></td>
    </tr>
</table>

</html><? ?>
0
pcgpegase Messages postés 96 Date d'inscription lundi 24 novembre 2003 Statut Membre Dernière intervention 24 avril 2007 1
17 juin 2006 à 16:45
Bonjour,

En relisant, je me suis aperçu que je n'avais pas bien compris quelque chose...

Si vous mettiez dans la page de votre formulaire :

if ($nb==1)
{$message="salut

$email
vous êtes bien identifié vous allez être redirigé vers
votre espace membre";
setcookie("cokmail",$email,time()+365*24*60*60) ;
//mise en session de l'email et du passe
$email_session=$email;   $code_session=$rs["code"];}
header("Location: {$_SERVER['HTTP_REFERER']}"); exit;
}

Cela ne marcherait il pas ?

Lorsque l'utilisateur est sur la page A et qu'il clic sur un lien pour la page B, il se fait redirigé à partir de la page B vers la page C (formulaire). Il se connecte puis à l'aide du REFERER, il se fait rediriger vers la dernière page connu (à savoir la page B).

Est ce cela ?
0
sparh Messages postés 23 Date d'inscription mercredi 12 avril 2006 Statut Membre Dernière intervention 14 décembre 2012
20 juin 2006 à 11:15
Désolé pour l'absence!
J'ai testé avec header("Location: {$_SERVER['HTTP_REFERER']}"); exit; au lieu de header("Location: {$_SESSION['referer']}"); exit;

Je récapitule car ca devient fouilli!
Sur ma page protégée je déclare en en tête
<?php
$_SESSION['referer'] = $_SERVER['HTTP_REFERER'];
if (!isset($_SESSION['email'])) { header('Location: http://leschagnasses.free.fr/connect.php'); }
?>
Le code de connect (la page formulaire) est si dessus est même quand je remplace
header("Location: {$_SESSION['referer']}"); exit; par
header("Location: {$_SERVER['HTTP_REFERER']}"); exit;
ca marche pas!

Voilà, peut être y 'a t'il une erreur dans "<form name="form1" method="post" action="connect.php">" je regarde avec PHP_SELF mais ca n'a pas l'air de fonctionner non plus!
Voilà, si vous avez besoin de plus d'info pour m'aider n'hésitez pas!
Merci d'avance
++
0