Maison  >  Article  >  développement back-end  >  Comment générer un code de requête unique en php

Comment générer un code de requête unique en php

王林
王林original
2019-09-18 17:58:232246parcourir

Comment générer un code de requête unique en php

Exemple de la façon dont php génère un code de requête unique

Il existe de nombreuses façons de générer un identifiant unique en php .

1. md5(time() . mt_rand(1,1000000));

Cette méthode a une certaine probabilité de duplication.

2. La fonction intégrée PHP uniqid()

La fonction uniqid() génère un identifiant unique basé sur l'heure actuelle en microsecondes. Il y a une phrase dans le manuel de référence de w3school : "Comme il est basé sur l'heure système, l'ID généré par cette fonction n'est pas optimal. Pour générer un ID absolument unique, veuillez utiliser la fonction md5()."

function uuid() {
    if (function_exists ( 'com_create_guid' )) {
        return com_create_guid ();
    } else {
        mt_srand ( ( double ) microtime () * 10000 ); //optional for php 4.2.0 and up.随便数播种,4.2.0以后不需要了。
        $charid = strtoupper ( md5 ( uniqid ( rand (), true ) ) ); //根据当前时间(微秒计)生成唯一id.
        $hyphen = chr ( 45 ); // "-"
        $uuid = '' . //chr(123)// "{"
substr ( $charid, 0, 8 ) . $hyphen . substr ( $charid, 8, 4 ) . $hyphen . substr ( $charid, 12, 4 ) . $hyphen . substr ( $charid, 16, 4 ) . $hyphen . substr ( $charid, 20, 12 );
        //.chr(125);// "}"
        return $uuid;
    }
}

com_create_guid() est la méthode propre à PHP pour générer un identifiant unique. Elle semble avoir disparu après PHP5.
3. Le manuel de référence officiel uniqid() contient des méthodes fournies par les utilisateurs, avec des résultats similaires : {E2DFFFB3-571E-6CFC-4B5C-9FEDAAF2EFD7>

public function create_guid($namespace = '') {     
    static $guid = '';
    $uid = uniqid("", true);
    $data = $namespace;
    $data .= $_SERVER['REQUEST_TIME'];
    $data .= $_SERVER['HTTP_USER_AGENT'];
    $data .= $_SERVER['LOCAL_ADDR'];
    $data .= $_SERVER['LOCAL_PORT'];
    $data .= $_SERVER['REMOTE_ADDR'];
    $data .= $_SERVER['REMOTE_PORT'];
    $hash = strtoupper(hash('ripemd128', $uid . $guid . md5($data)));
    $guid = '{' .   
            substr($hash,  0,  8) . 
            '-' .
            substr($hash,  8,  4) .
            '-' .
            substr($hash, 12,  4) .
            '-' .
            substr($hash, 16,  4) .
            '-' .
            substr($hash, 20, 12) .
            '}';
    return $guid;
  }

Tutoriel recommandé : Tutoriel vidéo PHP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn