Session bizarroïde

malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 - 1 janv. 2005 à 16:32
webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 - 2 janv. 2005 à 15:21
Hello,
Je ne connais pas trop les sessions et j'ai un problème:

J'ai un fichier pwd.php qui crée une image avec un text 'pwd':
<?
session_start();
function createImage($pwd){...}
function createPwd(){...}
$pwd = createPwd();
$_SESSION['pwd'] = $pwd;
createImage($pwd);
?>
Un autre fichier appel ce fichier:

<HTML><TITLE>nOiSy.ch</TITLE>

Welcome!

$PWD:

<?
session_start();
$pwd=$_SESSION['pwd'];

if(isset($pwd))
echo 'La variable "pwd" existe et vaut '.$pwd.'!';
else echo 'pwd n existe pas';
session_destroy();
?>
</HTML>

Voilà ce que cela donne si on l'exécute plusieurs fois:
...
image: 7gUZ9omn
texte : 08CEs0Km

image: qgaEQ0Ay
texte : 7gUZ9omn

image: 46G88ew6
texte : qgaEQ0Ay

image: nzmd6T7z
texte : 46G88ew6
...
En d'autres termes, ma variable $pwd a un temps de retard par rapport à l'image! Quelqu'un peu m'expliquer? J'ai essayé de jongler avec session_start() et _destroy() sans succès...

Merci et bonne année!
Malik7934

12 réponses

webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
1 janv. 2005 à 21:58
Salut !

Je ferais plutôt ceci :

<?php

// Page fonctions.php

function createImage($pwd){...}
function createPwd(){...}

?>



<?php

include 'fonctions.php';

$pwd = createPwd();
$image = createImage($pwd);

if(isset($pwd))
{
echo 'La variable "$pwd" existe et vaut '.$pwd.'!';
}
else 
{
echo 'pwd n existe pas';
}
?><HTML>
<TITLE>nOiSy.ch</TITLE>

Welcome!
" alt="image générée">
$PWD:

</HTML>


Au fait, les balises PHP c'est <?php et non <?

++

---
Webmaster de [Webmaster-Debutant.net] ---> http://www.webmaster-debutant.net :)

[mailto:webdeb73@hotmail.com Webdeb]
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
2 janv. 2005 à 11:53
Merci pour ton message...

Concernant la balise php, qu'on mette le "<?php" ou "<?" , le résultat est le même! Après, c'est des histoires de puriste ou non :big)

Merci pour le code que tu m'as proposé, mais il y a un hic: faire " n'affiche pas une image, mais son code!

... mais j'imagine que la solution n'est pas loin!

Thanx, Malik7934
0
webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
2 janv. 2005 à 12:07
Ah la la, pour les balises je sais ce que je dis. Lis l'article ci dessous pour t'en convaincre :

>> Les balises PHP

Pour ce qui est de l'image, je ne m'y connais pas vraiment (voire pas du tout lol) mais apparemment avec ce que je t'ai donné tu as progressé et tu arrives bientôt à tes fins ^^

++

-----------
Webmaster de [Webmaster-Debutant.net] ---> http://www.webmaster-debutant.net :)
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
2 janv. 2005 à 12:18
ok, je note et j'adopte!

Je laisse ma question ouverte pour l'image... car y a un mystère:
ma fonction est :
function createImage($pwd){

$col1  = 1+rand()%254;
$col2  = 1+rand()%254;
$col3  = 1+rand()%254;
$image = imagecreate(80,20);
$fond  = imagecolorallocate($image, $col1, $col2, $col3);
$pix   = imagecolorallocate($image, $col1/2, $col2/2, $col3/2);
$noir  = imagecolorallocate($image, 0, 0, 0);
$blanc = imagecolorallocate($image, 255, 255, 255);

for ($i=0;$i<160;$i++){
imagesetpixel ($image, rand()%80, rand()%20, $pix);
}
imagestring($image, 5, 2, 0, $pwd, $noir);
imagestring($image, 5, 4, 0, $pwd, $noir);
imagestring($image, 5, 2, 2, $pwd, $noir);
imagestring($image, 5, 4, 2, $pwd, $noir);

imagestring($image, 5, 3, 1, $pwd, $blanc);
imagejpeg($image);
}


Si je la mets dans un fichier image.php et qu'ensuite je l'appelle en faisant > ça ne marche plus!

Why!!!!????
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
2 janv. 2005 à 12:43
Tu as essayé de mettre une entête PHP avec header ?

header("Content-type: image/jpeg"); 


++

-------
Webmaster de [Webmaster-Debutant.net] ---> http://www.webmaster-debutant.net :)

[mailto:webdeb73@hotmail.com Webdeb]
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
2 janv. 2005 à 12:49
oui... mais le problème reste le même! J'ai l'impression que c'est pas vraiment possible sans appeler depuis un autre fichier...

Thanx, Malik7934
0
webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
2 janv. 2005 à 12:54
Ce n'est pas grave s'il y a plusieurs fichiers ! Tu n'es pas obligé de tout mettre dans le même fichier php.

---
Webmaster de [Webmaster-Debutant.net] ---> http://www.webmaster-debutant.net :)

[mailto:webdeb73@hotmail.com Webdeb]
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
2 janv. 2005 à 13:01
Oui dans mon cas, ce n'est pas pratique. Je m'explique:

je génère une image contenant un code du type aH67iUX0 (pour protection de compte).

L'utilisateur doit écrire ce qu'il lit dans un champ et ensuite c'est vérifié... et c'est pour cela que je dois être dans le même fichier:
je génère le mot de passe dans le même fichier qui génère l'image (obligatoire), ensuite je ne veut pas transmettre mon pwd en clair... je pensais donc faire un hashage (genre md5($pwd)) et le stocker dans un cookie.

Ainsi, l'idée ensuite est que lorsque l'utilisateur tape le code et envoie, la valeur est récupérée, hashée et comparée au cookie... mais voilà, j'ai un #!!!¦# de décalage dans mes cookie: Ca se remarque après plusieurs exécution:
...
image: 7gUZ9omn
texte : 08CEs0Km

image: qgaEQ0Ay
texte : 7gUZ9omn

image: 46G88ew6
texte : qgaEQ0Ay

image: nzmd6T7z
texte : 46G88ew6
...

J'vais pleurer je crois... !
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
2 janv. 2005 à 13:15
problème réglé...
0
webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
2 janv. 2005 à 13:24
Comment as tu fait, ca pourrait en aider certains stp ?

++

-------
Webmaster de [Webmaster-Debutant.net] ---> http://www.webmaster-debutant.net :)

[mailto:webdeb73@hotmail.com Webdeb]
0
malik7934 Messages postés 1154 Date d'inscription mardi 9 septembre 2003 Statut Membre Dernière intervention 15 août 2009 17
2 janv. 2005 à 13:39
En fait, je n'ai pas réellement réglé le problème, mais je l'ai contourné...

Si tu exécute le code suivant (main.php):

<HTML><TITLE>blabla</TITLE>

</HTML>


avec dans le fichier functions.php:

<? php
function createPwd(){...}
function createImage($pwd){
   ...
   setcookie("pwd_cook", $pwd, time()+120);
   ...}

$pwd = createPwd();
createImage($pwd);
?>


il y aura toujours le problème et si tu regardes le cookie qui s'affiche dans main.php, c'est décalé de 1 dans le temps (et je comprendrai peut-être jamais pourquoi).

Du coup, j'ai ajouté un bouton pour dire "montre moi le cookie" et il n'y a plus de problème!!!
Dans main.php:

<form method="POST" action="montremoilecookie.php">
  
</form>


et dans montremoilecookie.php:

$cookie = $HTTP_COOKIE_VARS['pwd_cook'];
echo "COOKIE: ".$cookie;


et voilà... ceci dit, c'est une variante pas forcément élégante... mais pour ce que je fais, ça convient!
0
webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
2 janv. 2005 à 15:21
Fais plutôt ceci :

<HTML>
<TITLE>blabla</TITLE>

<?php
echo $_COOKIE['pwd_cook'];
?>

</HTML>


++

--------
Webmaster de [Webmaster-Debutant.net] ---> http://www.webmaster-debutant.net :)

[mailto:webdeb73@hotmail.com Webdeb]
0
Rejoignez-nous