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 :

[Cookies] Quand PHP rhyme avec étrange... .


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 13
    Points : 11
    Points
    11
    Par défaut [Cookies] Quand PHP rhyme avec étrange... .
    Bonjour,

    voila, bien que n'étant pas à mon premier projet web, je viens de rencontrer une situation plutôt étrange lors de l'exécution de mon code, et même si, à priori, tout fonctionne bien, je ne comprends pas pourquoi cela ne plante pas... .

    Vous me direz tant mieux, mais histoire d'essayer d'avoir une explication, je poste quand-même le tout sur ce forum.

    Alors en fait, j'ai un formulaire qui se trouve sur une page qui s'appèle 'show_sent.php'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <input type="hidden" name="type3" value="sent">
    									<input type="hidden" name="id_sent3[]" value="<?php echo $id_sent; ?>">	 
    									<input type="hidden" name="from3[]" value="<?php echo $from; ?>">
    									<input type="hidden" name="date3[]" value="<?php echo $date; ?>"> 
    									<input type="hidden" name="subject3[]" value="<?php echo $subject; ?>">
    									<input type="hidden" name="message3[]" value="<?php echo $message; ?>">
    puis j'ai 'del_sent.php' qui traite les $_POST envoyés par 'show_sent.php'.

    dans ma page 'del_sent.php' se trouve d'abord le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $id_sent3=$_POST['id_sent3'];
    $type3=$_POST['type3'];
    $from3=$_POST['from3'];
    $date3=$_POST['date3'];
    $subject3=$_POST['subject3'];
    $message3=$_POST['message3'];
    puis plus bas dans le code se trouve
    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
     
    for($i = 0; $i < sizeof($emails)-1; $i++) 
    			{ 
    				//echo 'emakil='.$emails[$i].'<br>';
    				//echo 'sizeofemails='.sizeof($emails).'<br>';
    				$nova_check=$emails[$i]-1;
    				//echo 'i='.$i.'<br>';
    				echo 'chk='.$emails[$i].'<br>';
    				echo 'nova_chk='.$nova_check.'<br>';
    				echo 'type='.$type3.'<br>';
    				echo 'id_sent='.$id_sent3[$nova_check].'<br>';
    				echo 'from='.$from3[$nova_check].'<br>';
    				echo 'date='.$date3[$nova_check].'<br>';
    				echo 'subject='.$subject3[$nova_check].'<br>';
    				echo 'message='.$message3[$nova_check].'<p>';
     
    etc.....
    }
    Maintenant, si je change $subject3=$_POST['subject3']; en $subject3=$_POST['subject'];, ma variable $subject3 ne contient plus rien et c'est complètement normal.
    Mais la ou cela devient étrange, c'est que, si je commente cette partie là, à savoir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    /*$id_sent3=$_POST['id_sent3'];
    $type3=$_POST['type3'];
    $from3=$_POST['from3'];
    $date3=$_POST['date3'];
    $subject3=$_POST['subject3'];
    $message3=$_POST['message3'];*/
    j'obiens toujours de quoi alimenter mon ma boucle for, avec donc les variables $type3, $from3, etc... bien chargées.

    Vous me direz, jusque là, c'est parceque ce sont les données du cache, et je serais également du même avis.

    J'ai donc repassé mon disk cleaner préféré plusieurs fois, toujours rien, pas de variables vides.

    Là, une seule chose à faire à priori, redémarrer easyphp, ce que j'ai fait plusieurs fois, et donc toujours rien, tout marche impécable.

    Un redémarrage de PC plus tard, toujours rien.

    Bien évidement, il n'y a aucun autre endroit dans tout le code complet ou sont initialisé ses variables.

    A priori, la seule explication rationnelle serait que PHP, fait directement le lien entre les $_POST du formulaire et les variables du fichier dans lequel le formulaire est soumis, mais là, j'aurais du mal à y croire...

    J'ai, comme la plupart des développeurs php au fils de projets, vécu des stituations de codage inédites voir ufologiques, mais là, cela dépasse toutes mes ambitions... .

    N'hésitez donc pas à proposer vos explications si vous en avez.

    Merci d'avance,
    JSK

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    A priori, c'est parceque register_global est à ON. Donc les valeurs de POST ou GET sont passées à la fois par $_POST['valeur'] et par $valeur... ce explique la 'magie' de l'opération.
    Au passage, la communauté php recommande très fortement de passer à register_global OFF. Ne serait-ce que pour être sûr de ne pas utiliser des données transmises par l'utilisateur et non validées par le script.

  3. #3
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 269
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 269
    Points : 8 568
    Points
    8 568
    Billets dans le blog
    17
    Par défaut Re: Quand PHP rhyme avec étrange... .
    Citation Envoyé par JSuper_Kitten
    Vous me direz, jusque là, c'est parceque ce sont les données du cache
    Je dirais plutôt que tu as l'option register_globals à On
    => Les variables GET, POST, COOKIE, SESSION sont automatiquement extraites, comme si tu faisais un extract( ).

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    Bonjour,

    et merci de vos réponses. J'avais écarté l'idée de l'option register_globals_on car je pensais que jusque là que cette dernière, si réglée sur ON, ne faisait juste qu'assimiler n'importes quelles variables à des variables globales, mais je ne pensais pas que cela allait jusqu'à extraire les les champs de $_POST[] et $_GET[].

    Voila donc ce qui explique le tout. Il est vrai donc qu'il vaudrait mieux que je finisse par perdre le réflexe de tout coder avec register_globals sur ON, ne serait-ce que par mesure de sécurité.
    Egalement, ce sera surement une bonne occasion de passer de easyphp 1.6 à easyphp 1.8 ou 2.0 quand elle sera sortie.

    Bon, merci à vous donc pour votre aide.

    JSK

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Citation Envoyé par JSuper_Kitten
    Egalement, ce sera surement une bonne occasion de passer de easyphp 1.6 à easyphp 1.8 ou 2.0 quand elle sera sortie.
    JSK
    Je te recommande de passer à EasyPhp 1.8, car register_global est à OFF, et error_reporting est à ALL, ce qui fait que la moindre erreur est indiquée (la moindre variable non initialisée, par exemple), ce qui permet de coder beaucoup plus proprement et avec une plus grande sécurité.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 28/07/2007, 02h01
  2. [SQL-Server] ms sql server et php : problème avec les caractères accentués
    Par stephane9422 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 05/12/2005, 18h45
  3. [PHP]problème avec strftime()...
    Par sanosuke85 dans le forum Langage
    Réponses: 5
    Dernier message: 26/05/2005, 11h02
  4. [FLASH MX] Flash boude quand PHP veut lui parler :(
    Par Huntress dans le forum Flash
    Réponses: 11
    Dernier message: 03/11/2004, 13h16
  5. Réponses: 2
    Dernier message: 19/08/2004, 18h12

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