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 :

Encoder, décoder et afficher des url complexes


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 169
    Points : 34
    Points
    34
    Par défaut Encoder, décoder et afficher des url complexes
    Bonjour.


    J'ai encore des erreurs en utilisant urlencode/urldecode et addslashes pour l'affichage.
    Ca me répond undefined.

    Voilà un exemple d'url un peu complexe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    https://fr.search.yahoo.com/search;_ylt=A9mSs3eCxNNYKhUA5ptjAQx.;_ylc=X1MDMjExNDcxNjAwMwRfcgMyBGZyA21vejM1BGdwcmlkA1FhbXFtcWhDVF9XcXBLaU5ZSFhPUkEEbl9yc2x0AzAEbl9zdWdnAzQEb3JpZ2luA2ZyLnNlYXJjaC55YWhvby5jb20EcG9zAzAEcHFzdHIDBHBxc3RybAMEcXN0cmwDMjQEcXVlcnkDU0VMRUNUJTIwTUFYKGlkKSUyMCUyMGFzBHRfc3RtcAMxNDkwMjczOTE1?p=SELECT+MAX%28id%29++as&fr2=sb-top-fr.search&fr=moz35
    Que je souhaite passer en variable php avec de l'afficher dans un textarea.

    Histoire de pouvoir passer n'importe quel url aussi complexe qu'elle soit;
    Je suppose que pour bien faire il faut utiliser un tas de fonction les unes sur les autres.
    Mais lesquelles ?


    Bonne journée

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ca me répond undefined.
    C'est quoi "ça" ?

    Il n'y a rien de particulier dans ta chaîne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    $url = 'https://fr.search.yahoo.com/search;_ylt=A9mSs3eCxNNYKhUA5ptjAQx.;_ylc=X1MDMjExNDcxNjAwMwRfcgMyBGZyA21vejM1BGdwcmlkA1FhbXFtcWhDVF9XcXBLaU5ZSFhPUkEEbl9yc2x0AzAEbl9zdWdnAzQEb3JpZ2luA2ZyLnNlYXJjaC55YWhvby5jb20EcG9zAzAEcHFzdHIDBHBxc3RybAMEcXN0cmwDMjQEcXVlcnkDU0VMRUNUJTIwTUFYKGlkKSUyMCUyMGFzBHRfc3RtcAMxNDkwMjczOTE1?p=SELECT+MAX%28id%29++as&fr2=sb-top-fr.search&fr=moz35';
    echo '<textarea>' . $url . '</textarea>';
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 169
    Points : 34
    Points
    34
    Par défaut
    effectivement. Je ne sais pas d'où ca vient, je cherche. MErci.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 169
    Points : 34
    Points
    34
    Par défaut
    ... J'ai passé de heures à refaire mon code pour m'apercevoir que c'est un souci avec le retour à la ligne... Juste par ce que je n'avait pas reproduit exactement les mêmes circonstances... Ca m'apprendra !

    Je dois résoudre ce problème de retour à la ligne.

    Je veux réinjecter plusieurs url séparées par un retour à la ligne dans le textearea d'où les urls proviennent.

    Pour le moment je n'y arrive ni avec nl2br(), ni avec <br> ni avec \n\n
    Je ne trouve pas le code latin1 pour le retour à la ligne. Histoire d'essayer.

    Version d'exemple
    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
    <?php
    // Si form envoyé
    if(!empty($_POST['liens']))
    {
    	$liens = urlencode($_POST['liens']);
    	$liens=addslashes(urldecode($liens));
    }
    // Premièer affichage
    else {$liens = 'ecris avec puis sans retour à la ligne';}
     
    // création de la variable pour retour au form
    echo "<script type='text/javascript'>var jsliens ='".$liens."';</script>";
     
    ?>
     
    <!DOCTYPE html>
    <html>
    <body>
     
    <form action='test.php' method="post"  enctype="multipart/form-data">
    <textarea rows="10" cols="30" name="liens" id="liens" minlength="16" maxlength="2000"/></textarea>
    <input type='submit' value='Envoyer'>
    </form>
     
    <script type='text/javascript'>document.getElementById('liens').value = jsliens;</script>
     
    <body>
    </html>
    Sur ce, je vais encore fouiller le net voir si je peux avancer dessus.
    Bonne journée

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu veux les réinjecter dans quoi ?

    Je ne comprends pas à quoi sert le code que tu nous montres ni pourquoi tu passes par du javascript pour écrire dans le champs.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 169
    Points : 34
    Points
    34
    Par défaut
    Ce n'est qu'un exemple démonstratif qu'il faut résoudre.

    Ma procédure :

    HTML :
    Divers champs dont ce textarea
    Validation du form

    PHP de destination :
    Vérification du form et des champs avec et sans sql.
    Si erreur : création de var JS + Retour au form
    include du html.
    Function JS injectant les valeurs précédente pour ne pas que l'utilisateur ai à les écrire à nouveau.

    Bonne journée

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    C'est du grand n'importe quoi....

    Au lieu d'essayer de réinventer la roue carrée à couper l'eau tiède beurrée, LIS des tutos / docs.,... !!!


    • "formulaire PHP"
    • "PHP pour débutant pressé"
    • "Formulaire et traitement même page"
    • ...

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il n'y a pas besoin de javascript, tu peux réafficher directement ce qui a été saisie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form action="" method="post">
    <textarea name="url"><?php if (isset($_POST['url'])) { echo $_POST['url']; } ?></textarea>
    <input type="submit"/>
    </form>
    Tel quel, si l'utilisateur se met à saisir du HTML dans le textarea, il peut "casser" son affichage de la page. A toi de voir s'il y a vraiment un enjeu sur ça.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre à l'essai
    Inscrit en
    Janvier 2003
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 7
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Il n'y a pas besoin de javascript, tu peux réafficher directement ce qui a été saisie
    Tout à fait d'accord avec sabotage : il n'y a quasiment rien à faire car :
    - le décodage d'URL (url_decode) est fait automatiquement en PHP sur tout ce qui vient de GET, POST...
    - le nl2br aurait un effet destructeur car il faut conserver les retours chariot en "texte brut" du textarea (\r et \n) pour les réinjecter dans le textarea.

    Par contre les gars, y'en a aucun qui précise à ce pauvre westernz qu'il faut échapper les entités HTML avant de réinjecter dans un textarea (ou dans un value=) ? Les chevrons vont perturber le textarea, comme les guillemets vont perturber les value= (imaginez un gars qui ajoute </textarea> dans son URL, suivi d'un <script> bien gentil...)

    Donc avant de réafficher dans le textarea : il faut absolument échapper avec htmlentities ou htmlspecialchars (qui a ma préférence car elle ne bousille pas l'UTF8).

    Vous aller me dire : ce sont des URL, elles ne sont pas censées contenir des chevrons... Mais moi, quand je sais pas d'où ça vient, je me méfie (en informatique : soyez paranoïaque ! Méfiance absolue sur tout ce qui vient de quelqu'un d'autre que vous-même).

  10. #10
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    (imaginez un gars qui ajoute </textarea> dans son URL, suivi d'un <script> bien gentil...)
    Ba il sera lui même victime de son script et c'est tout.
    Le problème de sécurité ne se pose que si on réaffiche les données de quelqu'un d'autre.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. afficher des url non soulignées
    Par alainsm dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 01/11/2010, 21h26
  2. Récupérer et afficher des objets complexes
    Par basket dans le forum Langage
    Réponses: 3
    Dernier message: 17/04/2009, 19h24
  3. [MySQL] Afficher des images dont l'URL se trouve dans ma base de données
    Par body72 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 27/02/2008, 18h11
  4. Afficher des URL dans 1 zone texte
    Par jomannix dans le forum Flash
    Réponses: 6
    Dernier message: 31/10/2006, 16h25
  5. [JTable] afficher et interragir avec des URLs
    Par jean_bobi dans le forum Composants
    Réponses: 1
    Dernier message: 28/09/2006, 10h35

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