sparh
Messages postés23Date d'inscriptionmercredi 12 avril 2006StatutMembreDernière intervention14 décembre 2012
-
15 juin 2006 à 14:52
sparh
Messages postés23Date d'inscriptionmercredi 12 avril 2006StatutMembreDernière intervention14 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:
<?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
pcgpegase
Messages postés96Date d'inscriptionlundi 24 novembre 2003StatutMembreDernière intervention24 avril 20071 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 :
sparh
Messages postés23Date d'inscriptionmercredi 12 avril 2006StatutMembreDernière intervention14 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
pcgpegase
Messages postés96Date d'inscriptionlundi 24 novembre 2003StatutMembreDernière intervention24 avril 20071 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.
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....
Vous n’avez pas trouvé la réponse que vous recherchez ?
sparh
Messages postés23Date d'inscriptionmercredi 12 avril 2006StatutMembreDernière intervention14 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
sparh
Messages postés23Date d'inscriptionmercredi 12 avril 2006StatutMembreDernière intervention14 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
++
pcgpegase
Messages postés96Date d'inscriptionlundi 24 novembre 2003StatutMembreDernière intervention24 avril 20071 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.
sparh
Messages postés23Date d'inscriptionmercredi 12 avril 2006StatutMembreDernière intervention14 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
sparh
Messages postés23Date d'inscriptionmercredi 12 avril 2006StatutMembreDernière intervention14 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??
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>
pcgpegase
Messages postés96Date d'inscriptionlundi 24 novembre 2003StatutMembreDernière intervention24 avril 20071 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).
sparh
Messages postés23Date d'inscriptionmercredi 12 avril 2006StatutMembreDernière intervention14 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
++