PHP formulaire + redirection + identification

Fermé
aglachant - 10 juin 2008 à 18:13
 aglachant - 12 juin 2008 à 09:15
Bonjour,
j'ai un gros problème que voici :
1) un utilisateur se log sur mon site (il a un compte)
2) il remplit un formulaire
3) il va boire son café
4) il revient de boire son café, et post son formulaire (qui appelle le script validform.php)
5) le script appelé vérifie que la session est toujours ok ...pas de bol elle est expirée...
...
Comment faire pour conserver les données du formulaire et le script appelé dans un coin, rediriger l'utilisateur vers la page d'authentification et si l'authentification est OK rappeler le script validform.php avec les données postées sans que l'utilisateur ait tout à ressaisir ????

autant faire un header du HTTP_REFERER conservé lors de la redirection vers le script d'authentification ça le fait, autant pour le POST je sèche complètement...pouvez-vous m'aider svp ?

Merci d'avance
HB
A voir également:

1 réponse

cobax Messages postés 33 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 12 juin 2008 6
11 juin 2008 à 22:42
Voila grossomodo comment je vois ça :


if (fonction_session_time_out){ requete insert ip,texte_formulaire,date}

aprés sur la page du formulaire :

function affiche_formulaire {
if ( requete select * from tatable where ip=$REMOTE_ADDR and date<24h )
{
affiche_formulaire_avec_données

}
else
{
affiche_formulaire_sans_données
}

}
0
Hello,
merci de ta réponse...
en fait j'ai bien cogité et entre temps j'ai trouvé ma solution et qui marche !!!
voilà le principe ...
j'ai un script de contrôle d'authentification en en-tête de chaque page de gestion de formulaire...
j'ai ajouté dans ce script en cas d'expiration de session (ou de page demandant à être authentifié alors que l'utilisateur ne l'est pas) une sauvegarde du POST, et d'autres données que voilà :
$vars = array();
$vars["post_var"] = $_POST; //Variables postées
$vars["requ_uri"] = $_SERVER["REQUEST_URI"]; //"/ztesthb/testhb.php?var=toto&var2=titi"
$vars["quer_str"] = $_SERVER["QUERY_STRING"]; //"var=toto&var2=titi" ~GET
$vars["http_ref"] = $_SERVER["HTTP_REFERER"]; //http://localhost/ztesthb/testhb.php"

if (isset($_FILES) && count($_FILES)>0)
{
foreach($_FILES as $key=>$value)
{
if($_FILES[$key]["tmp_name"]<>"")
{
rename($_FILES[$key]["tmp_name"], $_FILES[$key]["tmp_name"].'.bis');
$_FILES[$key]["tmp_name"]= $_FILES[$key]["tmp_name"].'.bis';
$vars["file_var"] = $_FILES;
}
}
}

$tpl_vars = serialize($vars);
ensuite je serialize le tout et je le transmets dans un champ caché du formulaire d'authentification, mais on peut aussi l'insérer dans la base, ça optimise la bande passante, dans ce cas, il suffit de passer la clé de l'enregistrement à récupérer...

donc là l'utilisateur s'authentifie, dans le script appelé, on récupère ce champ caché (ou va lire dans la base le champ si on a utilisé cette option), on réaffecte les données postées ....et on rappelle le script que l'utilisateur souhaitait executer (ou la page qu'il voulait consulter)...
//On récupère le champ caché du formulaire d'authentification
if(isset($_POST["tpl_vars"]))
$tpl_vars = $_POST["tpl_vars"];
//Récupération des variables avant demande d'authentification
$vars = unserialize($tpl_vars);
//Récuparation des variables du $_POST
if (count($vars["post_var"])>0)
{
//On supprime toutes les variables actuelles pour être sûr de na pas avoir de surprises
unset($_POST);
//Récupération des variables postées avant authentification
$_POST = $vars["post_var"];
}

//Récupération des variables du GET depuis la variable $_SERVER["QUERY_STRING"]
$get = explode("&", $vars["quer_str"]);

foreach($get as $k=>$v)
{
$var = explode("=", $v);
if (isset($var[1]))
$_GET[$var[0]]=$var[1];
}

//Récupération du script appelé depuis la variable $_SERVER["REQUEST_URI"]
$var = explode("?", $vars["requ_uri"]);
$called_script = $var[0];

//Récupération de la page appelante depuis $_SERVER["HTTP_REFERER"]
$ori_http_referer = $vars["http_ref"];

//Récupération des variables de $_FILES
if (isset($vars["file_var"]))
$_FILES = $vars["file_var"];

//Execution du script que l'utilisateur avait demandé avant demande d'authentification
include ($_SERVER["DOCUMENT_ROOT"].$called_script);

...ET CA GERE MEME LE GET
...ELLE EST PAS BELLE LA VIE !
Merci
0