Maison > développement back-end > tutoriel php > Comment implémenter une URL courte en PHP

Comment implémenter une URL courte en PHP

步履不停
Libérer: 2023-04-06 20:22:02
original
7013 Les gens l'ont consulté

Comment implémenter une URL courte en PHP

1. Introduction au contexte

Je crois que beaucoup les gens ont des téléphones portables Nous avons tous reçu des SMS marketing. Les SMS sont parfois accompagnés d'URL, comme indiqué ci-dessous

Ces URL sont souvent très courtes, mais lorsque nous les ouvrons, si vous regardez bien, elles s'affichent. sera un saut au milieu, l'URL affichée dans la barre d'adresse du navigateur n'est pas l'URL que vous voyez dans le message texte, c'est l'URL courte !

Comment implémenter une URL courte en PHP

2.Principe et application

Les URL courtes utilisent généralement un nom de domaine très court, des paramètres de chemin. ne comportent généralement que 3 à 6 caractères, ce qui est très concis !

Le principe de l'utilisation d'une URL courte est de générer d'abord une URL courte, qui utilise principalement un certain algorithme pour faire correspondre un caractère court à un caractère long, par exemple, à partir des 0-9, a-z couramment utilisés. , A-Z, un total de 62 caractères Sélectionnez 6 caractères dans , cela signifie qu'il y a 62 combinaisons de puissance 6 et qu'il y a environ 56,8 milliards d'URL courtes uniques disponibles !

Le serveur interroge la véritable URL longue via le paramètre path, puis utilise 301/302 pour accéder à la vraie URL !

Concernant la redirection, 301 est une redirection permanente et 302 est une redirection temporaire. L'adresse courte ne changera pas une fois générée, donc l'utilisation de 301 est cohérente avec la sémantique http. Le navigateur enregistrera l'adresse de saut et, en même temps, la pression sur le serveur sera réduite dans une certaine mesure. Mais si 301 est utilisé, nous ne pourrons pas compter le nombre de fois où l'adresse courte est cliquée. S'il y a des exigences en matière de statistiques de données, il est peut-être préférable d'utiliser le saut 302 !

Le principal avantage des URL courtes est qu'elles sont pratiques à transférer et à mémoriser, en particulier lorsqu'elles sont utilisées dans des messages texte. Les SMS ont une limite sur le nombre de mots dans le contenu. Par exemple, des URL courtes sont également utilisées. à partager sur Weibo !

3. Cas existants sur le marché

Il existe de nombreux services de liaison courte gratuits sur le marché, et leurs fonctions sont fondamentalement les mêmes. limite!

(1) Lien court de Baidu (dwz.cn/), Baidu fournit non seulement l'accès aux pages Web, mais fournit également des interfaces et des documents de développement, simples et faciles à utiliser !

(2) Le lien court de Sina (sina.lt/) ne fournit actuellement que l'accès à une page Web, et aucun service d'interface n'a été trouvé !

(3) Le lien court de Taobao (tb.am/) ne fournit actuellement qu'une entrée Web, et aucun service d'interface n'a été trouvé !

Il existe de nombreuses autres petites entreprises sur le marché qui proposent des services de liens courts, certains sont partiellement gratuits, et certains liens courts sont valides, je ne les présenterai donc pas un par un ici !

4. Algorithmes couramment utilisés

Les algorithmes les plus populaires sur Internet incluent l'algorithme hexadécimal, l'algorithme de hachage et l'algorithme de nombres aléatoires. . Ce qui suit est simple Laissez-moi vous présenter :

Un. Algorithme de base

Cet algorithme est également appelé algorithme de séquence auto-croissante sur le. Internet. Sa particularité est qu'il ne se répète jamais. Paramètre L'identifiant est incrémenté automatiquement. Un identifiant décimal correspond à une valeur de 62 chiffres, 1 à 1, il n'y aura donc pas de duplication. sera réduit lorsque la base basse sera convertie en base haute.

Les systèmes de base courants dans les ordinateurs incluent le binaire, l'octal, le décimal et l'hexadécimal. Plus la base est grande, plus le nombre pouvant être représenté est grand et moins il prend de mots. Voici un exemple :

1000 en décimal équivaut à 1750 en octal, et 3E8 en hexadécimal. Et en hexadécimal ? Certains disent qu’il n’y a pas de base 62 dans l’ordinateur. . . Bien qu'il n'y en ait pas, nous pouvons en créer un. L'algorithme de conversion de base est fixe. Le plus courant est la « méthode de division par base » !

Nous supposons que la séquence de caractères à 62 chiffres est 0-9a-zA-Z. L'ordre peut être perturbé, mais il doit être corrigé. Il s'agit d'un tableau commençant de 0 à 61. Appelons-le For. l'alphabet !

====> 1000/62 = 16, reste 8

====> 16/62 = 0, reste 16

Le nombre obtenu par le reste C'est 16 et 8, puis trouvez les caractères marqués 16 et 8 dans l'alphabet et assemblez-les, c'est g8, qui est très court, seulement 2 chiffres ! Si nous voulons générer au moins 6 chiffres de caractères, alors nous pouvons commencer avec un nombre relativement grand. Pour plus de détails, voir la figure ci-dessous :

1 chiffre 62 0 - 61 2 chiffres 3844 62 - 3843 3 chiffres. environ 230 000 3844 - 238327 4 chiffres environ 14 millions 238328 - 14776335 5 chiffres environ 910 millions 14776336 - 916132831 6 chiffres environ 56,8 milliards 916132832 - 56800235583 Copier le code

2. Algorithme de hachage

La première façon :

Ajoutez simplement du salt md5 au lien long, ce qui générera une chaîne de 32 bits, en choisira au hasard 6 caractères, ou simplement grossièrement prenez les 6 derniers chiffres, mais md5 ne contient que 0-9A-Fa-f, ce qui représente moins de caractères que l'alphabet, et le risque de conflit est plus grand !

La deuxième méthode :

1. Générez une chaîne de signature de 32 bits à partir du md5 de l'URL longue, divisée en 4 segments, chaque segment fait 8 octets

2. Pour ces quatre sections de traitement de boucle, prenez 8 octets, traitez-les comme des chaînes hexadécimales et opérez avec 0x3fffffff (30 bits 1), c'est-à-dire ignorez le traitement de plus de 30 bits

3 . Ces 30 chiffres sont divisés en 6 segments, et chaque nombre à 5 chiffres est utilisé comme index de l'alphabet pour obtenir un caractère spécifique, et la chaîne de 6 chiffres est obtenue en séquence

Le total md5. La chaîne peut obtenir 4 chaînes à 6 chiffres, prenez N'importe laquelle d'entre elles peut être utilisée comme adresse URL courte de cette URL longue

La méthode de génération est plus compliquée et la probabilité de duplication est faible, mais les conflits persisteront se produire!

3. Algorithme de nombres aléatoires

C'est plus simple, sélectionnez simplement le tableau de 62 caractères et sélectionnez-en 6. Créer un lien court. les codes sont simples et faciles à utiliser, mais des conflits en double se produiront inévitablement !

4. Comparaison d'algorithmes

Le premier algorithme peut éviter les conflits tant qu'il résout le problème de l'identification auto-croissante. l'augmentation de l'identifiant peut utiliser la base de données pour augmenter automatiquement l'identifiant. L'augmentation de la clé primaire ne nécessite qu'une seule opération de base de données à chaque fois qu'un code court est généré (insérer l'opération, obtenir l'identifiant de la clé primaire, puis calculer le code court)

Les deuxième et troisième algorithmes sont en fait similaires et tous deux reposent sur Le programme est aléatoire et sujet aux conflits, ce qui nécessite un jugement approfondi à chaque fois qu'il est inséré dans la base de données, ce qui est moins efficace !

5. Sécurité

Bien que les liens courts facilitent la transmission et la mémoire, en raison du petit nombre de caractères dans le lien, ils sont plus susceptibles pour être explosé, devinant l'attaque, l'attaquant peut facilement parcourir les liens composés de tous les personnages !

Par conséquent, il n'est pas recommandé d'utiliser des liens courts pour envoyer des URL privées, telles que des liens de réinitialisation de mot de passe. Une authentification secondaire est requise pour les liens avec certaines autorisations et informations sensibles !

Tutoriel recommandé : Tutoriel vidéo du générateur de liens courts sur le développement pratique de Laravel

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal