IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

besoin d'aide avec les session


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 71
    Points : 45
    Points
    45
    Par défaut besoin d'aide avec les session
    bonjour a tous,
    j'essais tant bien que mal (debutant en php ...) de faire une page avec un formulaire dans laquelle (et oui c'est pas parce que je débute que je veux pas avoir quelque chose de bien ) je met une image généré automatiquement grace à GD.

    Le probleme c'est pas de faire l'image, là j'ai trouvé des tres bon tutorials.
    Le probleme c'est que je n'arrive pas à recpurer le texte contenu dans l'image pour le comparé à celui ecris par l'user.

    j'ai un fichier image.php qui genere une image contenant 5 lettres au hazard (avec des traits et des cercles)
    ces lettres sont stocké dans une variable $codeImg.

    voila mon fichier image.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    <?php
    /*
     * script fait avec l'aide de http://jmhoule314.blogspot.com/2006/05/easy-php-captcha-tutorial-today-im.html
     *
     */
    session_start();
    $strlength = 5; //longueur variable de 4
    //pour chaque char, on cherche une lettre au hazard
    for($i=1;$i<=$strlength;$i++){
    $textornumber = rand(1,2);
    if($textornumber == 1)
    	$codeImg .= chr(rand(65,74));
    if($textornumber == 2)
    	$codeImg .= chr(rand(75,90));
    }
     
    //image vide de taille 200,50
    $image = imageCreate(170,35);
     
    //on assigne la couleur de fond (blanc)
    $backcolor = imageColorAllocate($image, 255, 255, 255);
    //puis la couleur du texte
    $txtcolor = imageColorAllocate($image, 255, 60, 0);
     
    //on met les lettres dans l'image avec une inclinaison avec une taille aléatoire
    for($i=1;$i<=$strlength;$i++)
    {
     
    $clockorcounter = rand(1,2);
    if ($clockorcounter == 1)
    {
    $rotangle = rand(0,45);
    }
    if ($clockorcounter == 2)
    {
    $rotangle = rand(315,360);
    }
     
    //taile de la lettre entre 14 et 20, et 25 d'espacement entre les lettres
    imagettftext($image,rand(14,20),$rotangle,($i*25),30,$txtcolor,"/arial.ttf",substr($codeImg,($i-1),1));
    }
     
    //en theorie on a fini, mais ce serrai trop facile pour les robots.
    //Il faut rajouters des elypse ou autre signe pour que les lettres soient moins facilent trouvé
    //
     
     
    imageellipse($image,rand(1,170),rand(1,35),rand(50,90),rand(8,17),$txtcolor);
     
    for($i=1; $i<=4;$i++)
    {
    imageline($image,rand(10,155),rand(5,28),rand(1,170),rand(1,35),$backcolor);
    }
    for($i=1;$i<=2;$i++){
    	imageellipse($image,rand(1,170),rand(1,35),rand(50,90),rand(8,17),$backcolor);
    }
    for($i=1;$i<=2;$i++){
    	imageline($image,rand(12,155),rand(1,35),rand(1,170),rand(1,35),$txtcolor);
    }
    //en envoie le header pour dire que notre fichier est une image
    header('Content-type: image/png');
     
    //et en renvoie notre image fabriqué au format png
    imagePNG($image);
     
    //on efface l'image de la memoire
    imageDestroy($image);
    //et la je retiens mon image en variable de session
    $_SESSION['codeImg'] = $codeImg;
    ?>
    Maintenant je fais comment pour récupérer codeImg dans un autre fichier php qui affiche l'image de façon suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <img src="image.php">
    je demande parce que j'ai essayé tout ce que j'ai trouvé, et peut importe comment, si je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $_SESSION['codeImg'];
    bah j'ai rien qui s'affiche

    merci de votre aide ...

  2. #2
    Membre averti
    Inscrit en
    Janvier 2004
    Messages
    533
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 533
    Points : 313
    Points
    313
    Par défaut
    As-tu bien mis le session_start() dans le 2e fichier ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 71
    Points : 45
    Points
    45
    Par défaut
    oui,

    apres plusieurs test en fait ca fonctionne, mais que sous internet explorer

    sous firefox (bon echo alpha 3) il ne me redis pas les lettres affichés et le plus drole c'est qu'il ne me fais pas le session_destroy();
    alors que sous ie il m'affiche ce qu'il faut et quand je réactualise, il me change l'image..

    y'a t'il un truc a faire sous firefox ?

    je vais testé firefox version stable pour voir si ca change quelque chose....

  4. #4
    Membre du Club Avatar de charlene44
    Profil pro
    Étudiant
    Inscrit en
    Juin 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2006
    Messages : 87
    Points : 67
    Points
    67
    Par défaut
    firefox ne détruit pas forcément les sessions, cela dépend de je sais plus quoi, ce que je sais par contre c'est que si un utilisateur ouvre ton site dans un onglet et qu'il ferme juste l'onglet alors la session est conservée. moralité : apprendre aux utilisateurs à cliquer sur "déconnexion".

    pour ton erreur de sessions, je ne vois vraiment pas où est le problème... désolé

  5. #5
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    C'est normal que quand tu réactualises ça change l'image... d'ailleur c'est le but que la chaine soit toujours différente. Si tu veux que la chaine soit la meme tu regarde si la session existe et si oui tu réutilises la chaine qu'elle contient.

    Sinon ne fait pas session_destroy() mais plutot unset($_SESSION['variable']).

    Au pire tu peux appeler ton image mais avec comme parametre la chaine aléatoire, comme ça tu l'as directement sur la page du formulaire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="images.php?str=chaine_aleatoire">

Discussions similaires

  1. Besoin d'aide avec les Repository
    Par pascalwick dans le forum SUSE
    Réponses: 1
    Dernier message: 11/07/2009, 01h32
  2. Besoin d'aide avec les filtres imagemagick
    Par vallica dans le forum Traitement d'images
    Réponses: 0
    Dernier message: 04/07/2008, 17h23
  3. Besoin d'aide avec les regxp
    Par vodevil dans le forum Langage
    Réponses: 1
    Dernier message: 04/04/2006, 13h28
  4. Besoin d'aide avec les fichier htaccess et htpasswd
    Par Polux000 dans le forum Apache
    Réponses: 2
    Dernier message: 26/01/2006, 01h05
  5. Réponses: 2
    Dernier message: 29/08/2003, 18h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo