J'ai un probleme pouvez- vous m'aider svp?

Résolu
Signaler
Messages postés
26
Date d'inscription
vendredi 7 février 2003
Statut
Membre
Dernière intervention
4 novembre 2005
-
Messages postés
26
Date d'inscription
vendredi 7 février 2003
Statut
Membre
Dernière intervention
4 novembre 2005
-
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

Cordialement
Jean

12 réponses

Messages postés
420
Date d'inscription
vendredi 28 novembre 2003
Statut
Membre
Dernière intervention
20 mars 2006

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*



^0^ Je l'aime ce google (mais pas au point d'appeler mon premier fils google... d'autres l'ont déjà fait >_>)



Alors voilà ce qu'il m'a raconté



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 :)
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Hello,



l'envoi doit se faire ainsi :



expredirect ('rep/mapage.cgi?truc=1&id='.$id, '5');
Messages postés
26
Date d'inscription
vendredi 7 février 2003
Statut
Membre
Dernière intervention
4 novembre 2005

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 :

1er page php :

expredirect ('rep/mapage.cgi?truc=1&id='.$id, '5'); /sa marche impec

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

Cordialement
Jean
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
25
Je n'ai rien compris, lol.



Pourquoi il y a un point avant $id là :

<meta http-equiv="Refresh" content="5;URL=membres_suite.php3?id=.$id" />

??

et tu es dans un echo là? je veux dire, dans du php? Parce que
sinon...$id n'existe pas du tout. html ne sait pas interpréter
$id. C'est une variable.

Pareil là:
Messages postés
26
Date d'inscription
vendredi 7 février 2003
Statut
Membre
Dernière intervention
4 novembre 2005

j'avais mis sa au debut :[membres_suite.php3?id
=<? echo ">suite]
mais dans la page qui apparait a l'ecran il resort sa : ; ?>">suite

je ne peut donc pas passer l'id du membre dans la 2eme page cgi ?

merci
Messages postés
420
Date d'inscription
vendredi 28 novembre 2003
Statut
Membre
Dernière intervention
20 mars 2006

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.
Messages postés
26
Date d'inscription
vendredi 7 février 2003
Statut
Membre
Dernière intervention
4 novembre 2005

salut monoceros j'ai essayer comme ceci : sur une des page est sans succé

print "Location: $cgi_aff_perdu?lot=$num_lot&id=$_GET["id"]\n\n";

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 ?

merci
Messages postés
420
Date d'inscription
vendredi 28 novembre 2003
Statut
Membre
Dernière intervention
20 mars 2006

La variable $_GET est un tableau contenant les paires name/value
retournées dans une url sous forme de query_string (ce qu'il y a après
le ?)



Pour résumer, si dans ton url tu as http://www.monsite.com/index.php?plop= 5&plup=o_o&plap=TRUE, la variable $_GET contiendra le tableau suivant :

Array(

"plop" => 5,

"plup" => "o_o",

"plap" => TRUE

);



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 :

print "Location: $cgi_aff_page?truc =$num_truc&id=$id\n\n"; "

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 ;)
Messages postés
26
Date d'inscription
vendredi 7 février 2003
Statut
Membre
Dernière intervention
4 novembre 2005

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/\/&gt;/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
- - ------------------------------------------------------------------------ - -

#!/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/\/&gt;/g;
$content{$mots}="$content";
$champs{$mots} .= "\0" if (defined($champs{$mots}));
$champs{$mots} .= "$content";
}
require "config.pl";
$num_lot = $champs{'lot'};
open(FICHIER, "Perl-fr.com.>



------------------------------------------------------------------------------------------------
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.
Messages postés
26
Date d'inscription
vendredi 7 février 2003
Statut
Membre
Dernière intervention
4 novembre 2005

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.
Messages postés
420
Date d'inscription
vendredi 28 novembre 2003
Statut
Membre
Dernière intervention
20 mars 2006

De rien ça m'a permis de découvrir le perl =).



C'est rigolo, mais il n'y a pas d'hébergeur gratuit qui autorise les
CGI :/, donc côté application web, je ne risque pas de l'utiliser
beaucoup...
Messages postés
26
Date d'inscription
vendredi 7 février 2003
Statut
Membre
Dernière intervention
4 novembre 2005

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 .