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 :

Comment faire un checksum [PHP 7]


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    recherche d'emploi
    Inscrit en
    Avril 2022
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : recherche d'emploi

    Informations forums :
    Inscription : Avril 2022
    Messages : 88
    Points : 48
    Points
    48
    Par défaut Comment faire un checksum
    Bonjour,
    Vous êtes des pro, et cela est un plaisir de lire vos réponses. Donc j'abuse beaucoup pour cette nouvelle discussion.

    Je dois faire un genre de compteur qui ajoute un code à la fin du formulaire, suivant les données envoyer.
    C'est juste pour un contrôle, si l'user ne fais pas un copié collé des anciennes balises.
    L'user doit répondre à plusieurs questions. A la fin cela lui donne une chaine de balise qu'il doit copier et coller dans un autre logiciel.
    Donc au bout d'un moment il est possible de coller les anciennes balises dans le logiciel.
    Pour contrôler si l'user a bien utilisé l'application avant de coller ses balises, il faut que je mettre une série de code dans la dernière page.
    Mails je suis nul en math et je ne sait pas comment commencer.
    Voici des exemples:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    [DEM_PDT<AE_XX><TPX_1>] [PRT_PHN<AE_XX><TPX_1>] [RDV_NON] [RSDP_NON] 
    [ARBRE_DE_CLOTURE_V.2.01] [20/04/2022 - 12:31] [E592181E] [DEM] [USER_CMDB_DIF_NON] [GUICHET] [SDP] 
    //////////////////
    [PRT_PHN<AE_XX><TPX_1>] [RDV_NON] [RSDP_NON] 
    [ARBRE_DE_CLOTURE_V.2.01] [20/04/2022 - 12:32] [7946CDC6] [DEM] [USER_CMDB_DIF_NON] [GUICHET] [SDP] 
    ///////////////////
    [DEM_PDT<AE_XX><TPX_1>] [PRT_PHN<AE_XX><TPX_1>] [RDV_NON] [RSDP_NON] 
    [ARBRE_DE_CLOTURE_V.2.01] [20/04/2022 - 12:33] [E592181E] [DEM] [USER_CMDB_DIF_NON] [GUICHET] [SDP]
    ///////////////////
    [DEM_PDT<AE_XX><TPX_21>] [PRT_PHN<AE_XX><TPX_21>] [RDV_NON] [RSDP_NON] 
    [ARBRE_DE_CLOTURE_V.2.01] [20/04/2022 - 12:35] [D79194CA] [DEM] [USER_CMDB_DIF_NON] [GUICHET] [SDP]
    Le premier exemple est idem au 3ième exemple.
    Le 4ième exemple est idem au premier, sauf pour le TPX qui change et cela change le code.
    Le deuxième exemple n'a rien à voir avec les autres exemples .

    Malheureusement personne au travail, ne sait comment avait fait le développeur, et impossible de lui demander, car le pauvre est dans une situation de santé grave. Quand il reviendra je lui cèderai ma place avec plaisir. Si j'ai bien compris je ne suis là que pour le remplacer et je l'accepte de tout cœur.
    Je ne peux reprendre son code, car il a tout développé sous Symfony.
    Merci beaucoup.

  2. #2
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 828
    Points
    5 828
    Billets dans le blog
    1
    Par défaut
    Visiblement, même les pros (dont je ne fais pas partie) ont du mal à comprendre le besoin. Peux tu le clarifier ? Peut-être le résultat attendu...

  3. #3
    Membre du Club
    Homme Profil pro
    recherche d'emploi
    Inscrit en
    Avril 2022
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : recherche d'emploi

    Informations forums :
    Inscription : Avril 2022
    Messages : 88
    Points : 48
    Points
    48
    Par défaut
    Je comprends tout à fait.
    En fait ce code servira de pisteur.
    Les responsables regarderont certains tickets sur l'autre logiciel, et si le technicien colle un vieux code et que le code ne correspond pas il le saura de suite.
    C'est juste pour éviter aux techniciens de copier toujours le même code.
    Mais moi ce qui m'intéresse, c'est comment faire pour générer un code suivant certaines balises renseignées.
    Je doit passer par un IF ou un while?
    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    If (isset($_SESSION['Balises2'])){
    $num = $SESSION['Balises2'];
           if((strpos($num, '[PDT]'&&[TPX_21]&&[RDVNON]&&[toto]&&[titi]) !== false){
                 $num = 'DE12345';
                 $_POST['$num'];
            }
    }
    Et dans l'autre page je récupère le S_POST['$num'], à la dernière ligne,
    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
    <?php include("header.php"); ?>
    <div  id="global">
    <div id="texteglobal">
    </br></br>
    <H1><center>CODE FINAL</center></H1>
    Copier/Coller le code suivant dans la rubrique "Comment and Worknotes" de Service Now
    </br></br>
    <?php
    // setlocale(LC_TIME, 'fr_FR.UTF8');
    // setlocale(LC_TIME, 'fr_FR');
    // setlocale(LC_TIME, 'fr');
    setlocale(LC_TIME, 'fra_fra');
    // Set session variables
    $page= '12';
    $date = strftime('[%d/%m/%y-%H:%M]');
    $version = "[Version_2.02]";
    $code= "[ADC_END]";
    $_SESSION["Balises"] = $_SESSION["Balises2"]. S_POST['$num'] . $date . $version . $code;
    Ai-je raison ou je me plante complètement????
    Merci.

  4. #4
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 828
    Points
    5 828
    Billets dans le blog
    1
    Par défaut
    J'ai beau pas être pro, il y a 2 choses qui me gênent :

    1. dans ta première page, tu n'affectes pas la variable $_POST['$num'] à la ligne 5.
    2. pas sur qu'on puisse affecter la variable $_POST en dehors d'un formulaire. Je passerais plutôt par une variable de session.

  5. #5
    Membre du Club
    Homme Profil pro
    recherche d'emploi
    Inscrit en
    Avril 2022
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : recherche d'emploi

    Informations forums :
    Inscription : Avril 2022
    Messages : 88
    Points : 48
    Points
    48
    Par défaut
    Bonjour LaurentSc,
    Grace à vous tous et aux tutos de ce site, je viens de valider un CDD.
    Mon nouveau poste comporte 3 missions différentes en même temps.(piti mouton à 5 pattes!!!).

    pas sur qu'on puisse affecter la variable $_POST en dehors d'un formulaire. Je passerais plutôt par une variable de session.
    Comme d'habitude, j'oublie toujours les variables de session.
    Merci je vais corriger.

  6. #6
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 230
    Points
    20 230
    Par défaut
    Comme ca à vue de nez le checksum que tu montres dans tes exemples ressemble à un CRC32.
    En php il suffit d'appeler la fonction crc32 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $checksum = crc32($chaineaverifier);
    Cela génère un entier.
    Si tu veux sa représentation héxadécimal comme ca semble être le cas tu peux faire un dechex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $str = dechex($checksum);

  7. #7
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 828
    Points
    5 828
    Billets dans le blog
    1
    Par défaut
    Bonne nouvelle pour le CDD .

    Pour cette discussion, merci de tenir au courant quand tu auras essayé.

  8. #8
    Membre du Club
    Homme Profil pro
    recherche d'emploi
    Inscrit en
    Avril 2022
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : recherche d'emploi

    Informations forums :
    Inscription : Avril 2022
    Messages : 88
    Points : 48
    Points
    48
    Par défaut
    Bonjour grunk,
    Merci pour cette astuce que je garde dans mes dossiers mémo.
    En attendant je vais le mettre dans l'application, on verra bien lors des tests si c'est validé.

    Mais en fait il faut attribuer un numéro bien défini.
    Ce code fonctionne bien
    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
    <?php
    // setlocale(LC_TIME, 'fr_FR.UTF8');
    // setlocale(LC_TIME, 'fr_FR');
    // setlocale(LC_TIME, 'fr');
    setlocale(LC_TIME, 'fra_fra');
    // Set session variables
    $page= '12';
    $_SESSION['Balises2'] = '[PDT][TPX_21][RDVNON]';
    If (isset($_SESSION['Balises2'])){
        $date = strftime('[%d/%m/%y-%H:%M]');
    $version = "[Version_2.02]";
    $code= "[ADC_END]";
     
    $num = $_SESSION['Balises2'];
           if((strpos($num, '[RDVNON]') !== false)){
            $numero = '[DE12345]';
            $_SESSION['Numero'] = $numero;
     
     $_SESSION["Balises2"] = $_SESSION["Balises2"]. $_SESSION['Numero'] . $date . $version . $code;
     echo $_SESSION["Balises2"];
    }
     
    }
    Mais quand je test avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      if((strpos($num, '[RDVNON]&&[TPX_21]&&[PDT]') !== false))
    OU
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if((strpos($num, '[RDVNON]'&&'[TPX_21]'&&'[PDT]') !== false))
    Plus rien ne s'affiche.
    C'est quoi que je n'ai pas compris?
    Merci.

  9. #9
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 828
    Points
    5 828
    Billets dans le blog
    1
    Par défaut
    Je ne comprends pas la syntaxe des 2 tests que tu as essayés ; le 2e argument attendu de strpos étant une string, que viennent faire les && ? Et quel est le but de ce test ?

    Enfin, j'ai vu que depuis PHP8.1, strftime est deprecated et amenée à disparaître et qu'il faut la remplacer par date : $date = date('[%d/%m/%y-%H:%M]');

  10. #10
    Membre du Club
    Homme Profil pro
    recherche d'emploi
    Inscrit en
    Avril 2022
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : recherche d'emploi

    Informations forums :
    Inscription : Avril 2022
    Messages : 88
    Points : 48
    Points
    48
    Par défaut
    LaurentSc;
    Enfin, j'ai vu que depuis PHP8.1, strftime est deprecated et amenée à disparaître et qu'il faut la remplacer par date : $date = date('[%d/%m/%y-%H:%M]');
    Merci , je viens de faire les corrections.
    le 2e argument attendu de strpos étant une string, que viennent faire les && ? Et quel est le but de ce test ?
    J'ai vu aussi mon erreur, et j'ai essayé avec strstr(), mais cela ne fonctionne pas.
    En fait je voudrais que si certaines balises existent dans la chaine il faut attribuer un numéro.
    Merci pour ta patience. Pour votre patience à tou(s)(tes).

  11. #11
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 828
    Points
    5 828
    Billets dans le blog
    1
    Par défaut
    J'ai déjà dit que j'étais pas un pro mais j'ai quand même un peu de bouteille (15 ou 16 ans de PHP et plus de 30 ans de codage) ; je ne suis pas capable de répondre de but en blanc, mais ça me fait penser à regarder les expressions régulières...
    Aujourd'hui, j'aurai peu de temps pour continuer.

  12. #12
    Membre du Club
    Homme Profil pro
    recherche d'emploi
    Inscrit en
    Avril 2022
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : recherche d'emploi

    Informations forums :
    Inscription : Avril 2022
    Messages : 88
    Points : 48
    Points
    48
    Par défaut
    mais ça me fait penser à regarder les expressions régulières...
    Je vais regarder.
    Merci LaurentSc.

  13. #13
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 828
    Points
    5 828
    Billets dans le blog
    1
    Par défaut
    Tous comptes faits, y a plus simple :
    Code php : 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
    <?php
    // setlocale(LC_TIME, 'fr_FR.UTF8');
    // setlocale(LC_TIME, 'fr_FR');
    // setlocale(LC_TIME, 'fr');
    setlocale(LC_TIME, 'fra_fra');
    // Set session variables
    $page= '12';
    $_SESSION['Balises2'] = '[PDT][TPX_21][RDVNON]';
    If (isset($_SESSION['Balises2'])) {
        $date = date('[%d/%m/%y-%H:%M]');
     
        $version = "[Version_2.02]";
        $code = "[ADC_END]";
     
        $num = $_SESSION['Balises2'];
     
        $values = ['RDVNON', 'TPX_21', 'PDT'];
        $value_founded = false;
        foreach ($values as $one_value) {
            if ((strpos($num, $one_value) !== false)) {
                $value_founded = true;
            }
        }
        if ($value_founded) {
            $numero = '[DE12345]';
            $_SESSION['Numero'] = $numero;
     
            $_SESSION["Balises2"] = $_SESSION["Balises2"] . $_SESSION['Numero'] . $date . $version . $code;
            echo $_SESSION["Balises2"];
        }
    }

  14. #14
    Membre du Club
    Homme Profil pro
    recherche d'emploi
    Inscrit en
    Avril 2022
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : recherche d'emploi

    Informations forums :
    Inscription : Avril 2022
    Messages : 88
    Points : 48
    Points
    48
    Par défaut
    Bonjour LaurentSc,
    Merci beaucoup, maintenant j'ai de quoi travailler.
    Merci à tous.

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

Discussions similaires

  1. [VB6][impression]Comment faire des effets sur les polices ?
    Par le.dod dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 08/11/2002, 10h31
  2. comment faire evoluer ma base vers interbase6
    Par toure32 dans le forum InterBase
    Réponses: 5
    Dernier message: 23/10/2002, 10h59
  3. Réponses: 8
    Dernier message: 18/09/2002, 03h20
  4. Comment faire pour mettre l'ecran en veille ?
    Par March' dans le forum MFC
    Réponses: 6
    Dernier message: 29/08/2002, 14h25
  5. Comment faire pour créer un bitmap
    Par GliGli dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/04/2002, 15h41

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