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 :

Liens identiques, et pourtant différents


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 241
    Points : 95
    Points
    95
    Par défaut Liens identiques, et pourtant différents
    Voilà, bien que le texte ne soit pas très explicite, le problème est bien réel...

    J'ai le code suivant en PHP :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $url = 'http://site.com/?p=20&a='.decoder($tablo['clef']).'&v='.decoder($tablo['id']); // lien de confirmation
    $url2 = 'http://site.com/?p=21&a='.decoder($tablo['clef']).'&v='.decoder($tablo['id']); // lien de suppression
    Comme vous pouvez le constater, ils sont IDENTIQUES dans la structure. Toujours est-il que pour "decoder($tablo['clef'])", en HTML le premier lien rendra un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    http://site.com/?p=21&a=854mhbgcg,4fff7e,8fsfd88g44gff9eehff74feo8g4f8h7g74885gc8p48hidh7hfgd4t8h8,5458dn4hfgf877ua8hhLd47l49t849ulgh88f878f7fg74i7hf7a85hhf54i7ff4ffgg44h9f5efh7458h598sfnhhf348d49lu49otf.hc4ss48ng8cnig3884047ma5rf5479448fppggp4ags57f94sdfg845h8fug9fgtdv8dgffhf7h&v=23
    Et le deuxième :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    http://site.com/?p=21&a=854mhbgcg,4fff7e,8fsfd88g!+44gff9eehff74feo8g4f8h7g74885gc8p48hidh7hfgd4t8h8,5458dn4hfgf877ua8hhLd47l49t849ulgh88f878f7fg74i7hf7a85hhf54i7ff4ffgg44h9f5efh7458h598sfnhhf348d49lu49otf.hc4ss48ng8cnig3884047ma5rf5479448fppggp4ags57f94sdfg845h8fug9fgtdv8dgffhf7h&v=23
    J'ai mis en gras ce qui apparait dans TOUS mes liens générés aléatoirement !

    Pourquoi y-a-t-il ces 2 caractère en plus ? D'où cela vient-il ?

    Merci d'avance...

  2. #2
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    salut,
    cela dépend de ce que fait ta fonction decoder, si tu veux à tout pris avoir le même résultat tu dois plutôt faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $code1 = decoder($tablo['clef']);
    $code2 = decoder($tablo['id']);
    $url = 'http://site.com/?p=20&a='.$code1.'&v='.$code2; // lien de confirmation
    $url2 = 'http://site.com/?p=21&a='.$code1.'&v='.$code2; // lien de suppression

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 241
    Points : 95
    Points
    95
    Par défaut
    Hum, je ne sais pas si cela changera grand chose mais je vais tester...

    Voilà. non cela ne change rien mais je m'y attendais...

    Je ne vois pas d'où ce + et ce ! vienne ! C'est IN-COM-PRE-HEN-SSIBLE

    une idée

  4. #4
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    est ce qu'il y a un modification du buffer de sortie ? tu utilises un framework spécial ou juste du code que tu as fais toi même ?
    est ce que le problème apparait si tu mets tout le code dans un seul fichier de test ?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 241
    Points : 95
    Points
    95
    Par défaut
    Non, je n'utilise aucun framework et je code avec le bon vieux Notepad++

    Pour le buffer de sortie, aucune idée, c'est quoi ?

    Et j'ai demandé à mon prof qui n'en revient pas non plus. Les 2 url sont IDENTIQUES (sauf dans une p=20 et dans l'autre p=21).
    Quand je commente $url1, $url2 MARCHE !!!!!!
    Et quand je remet $url1, $url2 ne marche plus Oo

    Plus troublant encore : j'ai : <a href="$url2">$url2</a>, celui en bleu n'affiche pas le "!+" et celui en rouge OUI !!!!

    Autre chose de tarré, si j'envoie ce mail avec les liens sur ma boite gmail, j'ai donc ce fameux "!+", mais si je l'envoie sur hotmail j'ai "! " (mon prof m'a dit que + pouvait effectivement signifier espace).

    Encore autre chose de bizarre, si je met une url "index.php?p=20..." et "?p=20....", le "!+" n'est pas au même endroit !

    Bref, c'est le truc le plus fou dont j'ai eut à faire jusqu'à maintenant. Le prof confirme que c'est totalement incompréhensible, je n'ai plus que vous pour m'aider...

    Merci d'avance.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Points : 822
    Points
    822
    Par défaut
    tu utilises des variables statiques ou des globales dans ta fonction decoder ?

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 241
    Points : 95
    Points
    95
    Par défaut
    Euh... Static il me semble... Mais pourquoi ? Le truc c'est que je ne comprends pas pourquoi la même chose marche pour un et pas l'autre... C'est vraiment abusé Oo

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Points : 822
    Points
    822
    Par défaut
    L'utilisation de variables statiques peut être une piste pour comprendre pourquoi une fonction lancée deux fois avec les même paramètres ne renvoie pas deux fois le même résultat.

  9. #9
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Dans le même esprit qu'une variable statique ou globale, un paramètre passé par référence pourrait aussi expliquer ce changement.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
     
    function foo(&$tab) {
        $tab[1] = 'bar';
        return $tab[1];
    }
     
    $str = 'http://www.domaine.com/keyword1-keyword2-keyword3-id-1.html';
    $arr = range(1,10);
     
    print_r($arr);
    print_r(foo($arr));
    print_r($arr);
    Pour pouvoir répondre à la question, le source de la fonction decoder() ne serait pas de trop...

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 241
    Points : 95
    Points
    95
    Par défaut
    Soit alors voilà le code de la fonction en question...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // Décoder une chaine
    function decoder($chaine){
    	$chaine = nl2br($chaine); // 1 ajout des <br>
    	$chaine = stripslashes($chaine); // 2 enlévement des \
    	$chaine = htmlentities($chaine, ENT_QUOTES); // 3 : convertion en html des caractères spéciaux
    	$chaine = utf8_encode(utf8_decode($chaine)); // 4 : encodage et décodage de la chaine
    	return $chaine;
    }

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 241
    Points : 95
    Points
    95
    Par défaut
    Y aurait-il d'autre suggestion ? Toujours pas réussit, j'ai demandé à plusieurs personne qui ne voient pas non plus d'où vient le pb, une aide serait une bénédiction à ce stade

    Merci d'avance...

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

Discussions similaires

  1. Lien hypertexte: fonctionnement par différents utilisateurs.
    Par COCONUT2 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/10/2007, 13h23
  2. Réponses: 11
    Dernier message: 30/08/2007, 22h35
  3. SYBASE ASE : lien entre deux serveurs différents
    Par n.roussaly dans le forum Sybase
    Réponses: 6
    Dernier message: 07/06/2007, 09h53
  4. Réponses: 21
    Dernier message: 24/01/2007, 21h29

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