Maison  >  Article  >  interface Web  >  Implémentation du code du point d'enfouissement des données de numérisation de code QR

Implémentation du code du point d'enfouissement des données de numérisation de code QR

不言
不言original
2018-08-14 17:26:532693parcourir

Le contenu de cet article concerne la mise en œuvre du code des points d'enfouissement des données de numérisation de code QR. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Problèmes rencontrés dans le projet : 1. La réception enterre les données du code de numérisation du produit (le lien dans le code QR est un lien externe, pas son propre backend si c'est le cas). publié directement vers le monde extérieur. Pour les liens, les données ne peuvent pas être comptées, vous devez donc d'abord demander à votre propre backend, puis rediriger les liens externes. 2. Si le lien dans le code QR est trop long, il y aura de nombreux points dans le code QR et le temps de numérisation et de reconnaissance du téléphone mobile sera allongé. Il est nécessaire de concevoir une stratégie de remplacement de lien court
.

Implémentation du code du point denfouissement des données de numérisation de code QR

1. Vue front-end

Citationqrcode-liteLe package génère un code QR

import { toDataURL } from 'qrcode-lite'
...
const longUrl = 'http://h5.m.taobao.com/app/smg/index.html?a=1&b=2&c=3...'
this.shortUrl = this.getShortUrl(longUrl)  // 由长链接获取短链接
const qrOption = {
    width: 200,
    margin: 1,
    quality: 0.3
}
this.getQrcodeImgURL(this.shortUrl, qrOption).then(url => {
    this.qrcodeImg = url
}).catch((err) => {
    console.log(`Create qrcode img failed, ${err}`)
})

2. Arrière-plan Laravel

L'arrière-plan implémente principalement 3 fonctions, générer des liens courts, mettre en cache et récupérer des liens longs, et rediriger

public function shortUrl(Request $request)
    {
        $url = $request->input('long_url');
        if (!$url) {
            return response()->json([
                'code' => '-1',
                'message' => 'The long_url is required!'
            ]);
        }

        $key =  Carbon::now()->timestamp; // 以当前时间戳作为缓存的key
      
        $expiresAt = Carbon::now()->addDays(10); // 短链接的有效时间为10天
        Cache::put($key, $url, $expiresAt);

        return response()->json([
            'code' => '0',
            'message' => 'Success short the url',
            'data' => $key
        ]);
    }
    
 public function redirect($shortCode)
    {
        $key = $shortCode;
        if (!$key) {
            return view("common.error", [
                "errorTitle" => "扫码错误",
                "errorMessage" => "二维码错误,请跟管理员确认!"]);
        }

        $redirectUrl = Cache::get($key, 'expiration');
        if ($redirectUrl == 'expiration') {
            return view("common.error", [
                "errorTitle" => "扫码错误",
                "errorMessage" => "二维码过期,请重新生成二维码后再扫码!"]);
        }

        // 记录埋点数据
        ...
        
        return redirect()->away($redirectUrl);
    }

Articles connexes recommandés :

Comment utiliser la connexion par code QR ? Résumer l'utilisation des exemples de connexion par code QR

Code QR pour générer des images en ligne Code source 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