Rechercher : dans
Par :

PHP formulaire + redirection + identification

Dernière réponse le 12 jun 2008 à 09:15:15 aglachant, le 10 jun 2008 à 18:13:50 
 Signaler ce message aux modérateurs

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

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « PHP formulaire + redirection + identification » dans :
[PHP] Upload de fichiers VoirLe langage PHP permet de gérer des fichiers envoyés (uploadés) grâce à un formulaire HTML. Formulaire d'envoi de fichiers Configuration de PHP pour permettre l'upload Récupération du fichier avec PHP Formulaire d'envoi de fichiers La...
[Webmaster] Un formulaire de contact pour votre site VoirCe formulaire permet d'avoir une page pour être contacté sur son site, sans utiliser de logiciel de messagerie. La personne qui vous contacte indique son adresse, l'objet du message et son message (évidemment). Le code est une version...
PHP - Récupération de données VoirPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des...
Introduction à PHP VoirQu'est-ce que PHP? PHP est un langage interprété (un langage de script) exécuté du côté serveur (comme les scripts CGI, ASP, ...) et non du côté client (un script écrit en Javascript ou une applet Java s'exécute sur votre ordinateur...). La...
PHP - Mail et fonctions réseau VoirPHP étant un langage consacré au Web, il possède bien évidemment des fonctions lui permettant de communiquer avec le "monde extérieur" à l'aide de fonctions standards. Le service le plus utilisé sur Internet étant la messagerie électronique, il est...

1

cobax, le 11 jun 2008 à 22:42:15

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
}

}

Répondre à cobax

2

 aglachant, le 12 jun 2008 à 09:15:15

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

Répondre à aglachant