Compréhension script PHP.
Répondre à la discussion
Affichage des résultats 1 à 9 sur 9

Compréhension script PHP.



  1. #1
    marc.suisse

    Compréhension script PHP.


    ------

    Bonjour à tous

    Je suis en train d'essayer de comprendre comment fonctionne le script suivant :

    Code PHP:
    <?php
      
    // on génère une chaîne de caractères aléatoire qui sera utilisée comme frontière
      
    $boundary "-----=" md5uniqid rand() ) );

      
    $headers  "From: \"toto\"<toto@titi.fr>\n";
      
    // on indique qu'on a affaire à un email au format html et texte et
      // on spécifie la frontière (boundary) qui servira à séparer les deux parties
      // ainsi que la version mime
      
    $headers .= "MIME-Version: 1.0\n";
      
    $headers .= "Content-Type: multipart/alternative; boundary=\"$boundary\"";

      
    $message_txt  "Salut Alphonse\n\n";
      
    $message_txt .= "Ca va ?\n";
      
    $message_txt .= "C'était juste pour savoir..\n\n";
      
    $message_txt .= "A plus\n";
      
    $message_txt .= "toto";

      
    $message_html  "<html><body><b>Salut Alphonse</b><br><br>";
      
    $message_html .= "Ca va ?<br>";
      
    $message_html .= "<font color=\"red\">C'était juste pour savoir..</font><br><br>";
      
    $message_html .= "A plus<br>";
      
    $message_html .= "<u>toto</u>";

      
    $message  "This is a multi-part message in MIME format.\n\n";
      
    $message .= "--" $boundary "\n";
      
    $message .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
      
    $message .= "Content-Transfer-Encoding: quoted-printable\n\n";
      
    $message .= $message_txt;
      
    $message .= "\n\n";
      
    $message .= "--" $boundary "\n";
      
    $message .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
      
    $message .= "Content-Transfer-Encoding: quoted-printable\n\n";
      
    $message .= $message_html;
      
    $message .= "\n\n";
      
    $message .= "--" $boundary "--\n";

      
    mail('alphonse@lycos.fr''Comment tu vas'$message$headers);
    ?>
    Particulièrement la première ligne :

    Code PHP:
     $boundary '-----=' md5uniqid rand() ) ); 
    Source : http://phpcodeur.net/articles/php/emails

    Voici ce que j'ai déjà trouvé en cherchant un peu :

    - MD5 est un moyen de crypter par exemple un mot de passe .

    - Uniqid se base sur la date et l'heure existante pour générer un identifiant unique.

    - Rand génère un chiffre aléatoire .

    Je n'ai par contre pas compris comment ils fonctionnaient ensemble dans le script ci-dessus .

    PS : Le script permet d'envoyer un mail suivant le contenu d'un formulaire HTML , soit en HTML si le logiciel de courrier l'accepte , soit en texte .

    Merci d'avance

    -----
    On a tous quelque chose à s'apporter .

  2. #2
    Towl

    Re : Compréhension script PHP.

    Une petite remarque : md5 n'est pas un algo de chiffrement mais de hashage.
    Le but d'un algo de chiffrement, c'est :
    - rendre le contenu chiffré incompréhensible pour qui ne connait pas la clé
    - rendre le contenu chiffré compréhensible si on connait la clé
    Le but d'un algo de hashage, c'est de prendre une emprunte du fichier. Ainsi, lorsque un seul bit du fichier source change, le hash change complétement. Cela sert pour voir par exemple qu'un fichier à été téléchargé correctement (on fournit le hash + le fichier, et l'utilisateur recalcule le hash de son coté et le vérifie).
    Par contre un hash ne permet en aucun cas de revenir vers un texte clair.

    Apres pour ta ligne spécifique, il faut savoir que dans un mail, chaque 'morceau' du mail (text, html, piece jointe) est séparée par une frontière, ou boundary, qui contient '-----=' suivit d'un texte unique (qui représente qqch mais je sais plus quoi, voir la RFC pour plus de détail )

    Donc ici ta ligne te permet de générer ta frontière entre les différents formats.
    The only limiting factor of the Linux operating system, is his user. - Linus Torvalds

  3. #3
    marc.suisse

    Re : Compréhension script PHP.

    Salut , je te remercie de ces précisions

    Mais j'ai néanmoins toujours de la peine à comprendre .

    Tout d'abord , pourquoi utiliser un md5 dans ce cas de figure ?

    Tu dis :
    Cela sert pour voir par exemple qu'un fichier à été téléchargé correctement (on fournit le hash + le fichier, et l'utilisateur recalcule le hash de son coté et le vérifie).
    Cela laisserait supposer que le réceptionnaire du mail devra recalculer le hash , cela voudrait dire qu'il doit pouvoir lire du PHP ?

    Apres pour ta ligne spécifique, il faut savoir que dans un mail, chaque 'morceau' du mail (text, html, piece jointe) est séparée par une frontière, ou boundary, qui contient '-----=' suivit d'un texte unique
    Uniqid va donc créer un identifiant unique , mais pourquoi encore utiliser rand ?

    Excuses moi de te poser toutes ces questions , mais j'avoue avoir de la peine à comprendre ce script et j'aimerais bien y arriver .

    Merci encore
    On a tous quelque chose à s'apporter .

  4. #4
    marc.suisse

    Re : Compréhension script PHP.

    J'ai oublié une chose :

    La notion de boundary est utilisé dans d'autres langages de programmation ?
    On a tous quelque chose à s'apporter .

  5. A voir en vidéo sur Futura
  6. #5
    Towl

    Re : Compréhension script PHP.

    Le boudndary n'est pas dépendant du langage, c'est une régle sur le formatage des mails.

    Apres, on utilise le rand() en plus surement pour éviter que 2 mails envoyé en meme temps à la meme personne aient le meme boundary. De meme le md5 doit servir à disperser encore plus le boudary (md5(aaaaaaa) étant tres tres différent de md5(aaaaaab)).
    Mais apres ce ne sont que des supposition, l'idéal serait de regarder la RFC les entetes mime ( http://www.faqs.org/rfcs/rfc2046.html ) qui t'expliquera :
    - a quoi sert le boundary
    - comment le créer (proposent ils un algo, y a t il des contraintes...)
    Dernière modification par Towl ; 15/03/2009 à 10h04.
    The only limiting factor of the Linux operating system, is his user. - Linus Torvalds

  7. #6
    marc.suisse

    Re : Compréhension script PHP.

    Ok , ça marche , je fais comme ça

    Je te remercie

    Bon dimanche .
    On a tous quelque chose à s'apporter .

  8. #7
    marc.suisse

    Re : Compréhension script PHP.

    Salut

    Juste une question concernant le MD5 , peut-on le comparer au bit de parité ou le checksum ?

    Je veux dire par là que toutes ces méthodes permettent de contrôler si les informations sont bien arrivées et dans leurs intégralités .
    On a tous quelque chose à s'apporter .

  9. #8
    Towl

    Re : Compréhension script PHP.

    oui, c'est une vérifiation d'intégrité comme une autre, sans correction d'erreur comme peuvent l'avoir certains CRC.
    The only limiting factor of the Linux operating system, is his user. - Linus Torvalds

  10. #9
    marc.suisse

    Re : Compréhension script PHP.

    Salut

    Ok , je te remercie !
    On a tous quelque chose à s'apporter .

Discussions similaires

  1. Passage Script HTML en PHP
    Par invite55fe29e6 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 4
    Dernier message: 03/01/2009, 21h55
  2. aide pour un petit script PHP
    Par invite10382d0f dans le forum Internet - Réseau - Sécurité générale
    Réponses: 2
    Dernier message: 17/11/2008, 13h35
  3. Recherche un script en php spécifique
    Par Tesla dans le forum Internet - Réseau - Sécurité générale
    Réponses: 6
    Dernier message: 11/02/2006, 14h11
  4. Script php pour gestion de news
    Par invite98afdcc1 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 05/02/2005, 12h57
  5. Script php et netstat
    Par invite79cae1be dans le forum Internet - Réseau - Sécurité générale
    Réponses: 1
    Dernier message: 06/02/2004, 15h59
Découvrez nos comparatifs produits sur l'informatique et les technologies.