gjeanely
Messages postés26Date d'inscriptionvendredi 7 février 2003StatutMembreDernière intervention 4 novembre 2005
-
19 oct. 2005 à 05:45
gjeanely
Messages postés26Date d'inscriptionvendredi 7 février 2003StatutMembreDernière intervention 4 novembre 2005
-
20 oct. 2005 à 02:41
Bonjour , j'ai un petit probleme que je n'arrive pas à resoudre. voici :
J'ai une page en php ou il faut etre connecte pour y acceder , de cet page on est rediriger automatiquement vers une page cgi qui elle aussi redirige automatiquement vers une page mais en php qui est proteger comme la premiere.
J'aimerais que l'identifiant du membre ($id , qui est stocke dans une base de donne) soit transmit a la 2eme page php .
Je n'arrive pas a faire affiche cet $id dans la page cgi , quand la page cgi s'ouvre cet url apparait ex: monsite.com/rep/mapage.cgi?truc=1&
et moi je voudrais que $id soit afficher :
monsite.com/rep/mapage.cgi?truc=1&id=ici l'identifiant qui se trouve dans la base de donne
voici la fonction qui redirige automatiquement la 1er page php a la page cgi : exp
redirect("/rep/mapage.cgi?truc=1&$id","5");
je precise que je ne peut pas utilise DBI pour me connect a la base de donne a partir des script cgi car mon hebergeur a limiter les fonctions
monoceros01
Messages postés420Date d'inscriptionvendredi 28 novembre 2003StatutMembreDernière intervention20 mars 2006 20 oct. 2005 à 02:00
Ah! Tu as oublier de nous dire
que tes cgi étaient écrit en perl et non en php (c'est peut-être
évident pour certains, mais pas pour moi)
La variable $_GET est une variable de
php et non de perl. Malheureusement je n'y connais rien en perl (mais
ça a l'air rigolo, ça ressemble à s'y méprendre à du php)
*vas tout de même aller consulter mon ami google pouvoir s'il a de bonnes histoire d'huitres à raconter*
Bon si j'ai bien compris, c'est la variable d'environnement %ENV
que tu dois utiliser dans tes cgi. Il s'agit d'un tableau associatif
contenant entre autre la chaîne de caractère se trouvant après le ?
d'une url, appelée query string :
Prenons cette url : rep/mapage.cgi?truc=1&id=5
$ENV{'QUERY_STRING'} contiendra "truc=1&id=5"
Donc pour accéder à l'id lui-même tu devras analyser cette chaîne de caractères...
Heureusement, comme le stipule l'article lié ci-dessus, tu as à ta disposition deux outils pour te simplifier la tâche :
1/ Le module CGI.pm qui te permet d'instancier un objet a partir de la
classe CGI afin d'avoir accès à la méthodes param() que tu pourras
utiliser de la façon suivante :
use CGI;
// chargement du module CGI.pm
$get = new CGI; // instantiation
$id = $get->param('id'); // retourner la valeur de id dans $id
2/ La librairie cgi-lib.pl qui te permet d'utiliser la sous-routine
ReadParse() qui retourne dans un tableau associatif mis en argument les
paires name/value de la QUERY_STRING.
require "cgi-lib.pl"; // chargement de la librairie cgi-lib.pl
&ReadParse(*get); //
décodage de la QUERY_STRING et remplissage du tableau associatif %get
$id = $get{'id'}; // retourner la valeur de id dans $id
Il ne te reste plus qu'a choisir la méthode que tu veux, et tu
obtiendras (enfin) la variable $id que tu pourras utiliser dans tes cgi
pour les redirections :)
gjeanely
Messages postés26Date d'inscriptionvendredi 7 février 2003StatutMembreDernière intervention 4 novembre 2005 19 oct. 2005 à 17:34
Salut ,
je viens de tester sa marche niquel sur une page , par contre j'ai d'autre lien de redirection et je c'est pas trop les adapter selon ton model , voici les lien selon les page :
dans : mapage.cgi :
j'ai ceci qui ouvre la derniere page du script cgi mais l'id est vide :
print "Location: $cgi_aff_page?truc=$num_truc&id=$id\n\n";
dans la derniere page cgi appele . celle qui redonne la valeur $id a la page php membre qui viens apres :
<meta http-equiv="Refresh" content="5;URL=membres_suite.php3?id=.$id" />
j'ai aussi un lien au cas ou la page ne redirige pas automatique
monoceros01
Messages postés420Date d'inscriptionvendredi 28 novembre 2003StatutMembreDernière intervention20 mars 2006 19 oct. 2005 à 23:10
Je pense que tu devrais utiliser tout simplement $_GET["id"] au lieu de $id (tout en faisant attention à ta syntaxe ;) ) dans la/les page(s) où ça marche pas.
je croit que je n'est pas compris un truc , comment se sert ton de $_GET ? stp
Faut t'il l'inserer dans un lien ? ou sur une page pour afficher l' id ?
Donc comme je vois que tu fait passer la valeur de $id dans l'url, je presume que pour récupérer cette valeur tu doives le faire via le tableau $_GET.
Le seul problème c'est que je n'ai pas encore entièrement compris
comment fonctionnais ton cgi. En théorie (d'après ce que je sais), un
cgi est un script compilé , mais pourtant tu écris :
"dans : mapage.cgi :
j'ai ceci qui ouvre la derniere page du script cgi mais l'id est vide :
Donc je suis perplexe quant au fonctionnement de ton cgi... (à vrai
dire je n'ai presque jamais compilé autre chose qu'un "Hello World!" en
C++ <_<)
Si tu pouvais, en dire plus sur les tenant et les aboutissant de tes
trois scripts =) (et surtout expliquer un peu mieux le fonctionnement
de ce cgi), à moins que tu ne t'en sortes avec ce que je viens
d'expliquer ;)
gjeanely
Messages postés26Date d'inscriptionvendredi 7 février 2003StatutMembreDernière intervention 4 novembre 2005 20 oct. 2005 à 00:42
voici la 1er page cgi (mapage.cgi) ou j'ai envoyer l'id avec cet commande : expredirect ('rep/mapage.cgi?truc= 1&id='.$id, '5'); (cette commande se trouve sur la 1ere page php) - l' id apparait bien dans l'url
-----------------------------------------------------------------------------
#!/usr/bin/perl
read(STDIN,$temp,$ENV{'CONTENT_LENGTH'});
{$temp = "$temp\&$ENV{'QUERY_STRING'}";}
@pairs=split(/&/,$temp);
foreach $item(@pairs)
{
($mots,$content)=split(/=/,$item,2);
$content=~tr/+/ /;
$content=~s/%(..)/pack("c",hex($1))/ge;
$content =~ s/\/>/g;
$content{$mots}="$content";
$champs{$mots} .= "\0" if (defined($champs{$mots}));
$champs{$mots} .= "$content";
}
require "config.pl";
$num_lot = $champs{'lot'};
open(FICHIER, "$fic_lots");
flock (DATA2, 2);
print DATA2 $news;
close (DATA2);
flock (DATA2, 8);
print "Location: $cgi_aff_gain?lot=$num_lot\n\n";
exit;
}
else {
foreach $i(0..$i)
{
if ($i == $num_lot) { $news .= "$nom\|$num_gagnant\|$num_en_cours\|$aff_num\|\n"; }
else { $news .= $FICHIER[$i]; }
}
open(DATA2, ">$fic_lots");
flock (DATA2, 2);
print DATA2 $news;
close (DATA2);
flock (DATA2, 8);
print "Location: $cgi_aff_perdu?lot=$num_lot\n\n";
exit;
}
----------------------------------------------------------------------------------------------
ici c la page.cgi qui affiche les resultat par rapport a mapage.cgi (c'est resultat sont afficher dans une page html - voir plus bas ), je voudrais que mon id passe aussi par cette page pour arriver sur la derniere qui est en php
- - ------------------------------------------------------------------------ - -
------------------------------------------------------------------------------------------------
voici la derniere page.php la ou je dois avoir l'id pour que le membre puisse voir sa page
- - ---------------------------------------------------------------------------- - -
Document sans titre
Votre pseudo :
Vos points:
----------------------------------------------------------------------------------------
Voila le code j'espere que tu pourras me comprendre
je te remerci de ton aide.
gjeanely
Messages postés26Date d'inscriptionvendredi 7 février 2003StatutMembreDernière intervention 4 novembre 2005 20 oct. 2005 à 02:28
Je te Remerci avec un gran R car tu me rend un grand service moi qui est cherche des heures et qui tourner en rond ,j'ai utilise la 1er solution , je comprend maintenant beaucoup mieux l'utilisation des cette fonction , et elle va me servir sur bien d'autre page , encore merci et je valide cette reponse. @ bientot.
gjeanely
Messages postés26Date d'inscriptionvendredi 7 février 2003StatutMembreDernière intervention 4 novembre 2005 20 oct. 2005 à 02:41
oui moi mon hebergement ma coute 27 euro a peut pres pour 1 an , et en plus je suis limite dans les fonctions cgi , faut adapte mais c'est pas toujour evidant .