PHP ile dinamik olarak QR kodu oluşturma [kapalı]


99

Web sitemde QR kodları oluşturmaya çalışıyorum. Yapmaları gereken tek şey, sitemdeki bir değişkenin sağlayacağı bir URL'ye sahip olmak. Bunu yapmanın en kolay yolu ne olabilir?


9
tekerleği yeniden icat etmeyin! aşağıdaki cevaplar mükemmel
Jordan Arseno

4
Akor: Cevabımı kabul etmeyebilir misin lütfen? Google, cevabımın dayandığı API'yi kullanımdan kaldırdı, bu nedenle artık çok az amaca hizmet ediyor.
David, Monica'yı

Yanıtlar:


185

Google, @abaumg tarafından yayınlanan QR kodları kitaplığına ek olarak , Google'ınQR Kodları API'si QR Codes API , bağlantı güncellemesi için @Toukakoukan'a çok teşekkürler .

Bunu kullanmak için temel olarak:

https://chart.googleapis.com/chart?chs=300x300&cht=qr&chl=http%3A%2F%2Fwww.google.com%2F&choe=UTF-8
  • 300x300 oluşturmak istediğiniz QR görüntüsünün boyutudur,
  • chlEğer bir QR koduna değiştirmek istediğiniz url kodlanmış dize ve
  • choe(isteğe bağlı) kodlamasıdır.

Yukarıdaki bağlantı daha fazla ayrıntı verir, ancak onu kullanmak için yalnızca srcbir görüntünün manipüle edilen değere işaret etmesini sağlayın, örneğin:

<img src="https://chart.googleapis.com/chart?chs=300x300&cht=qr&chl=http%3A%2F%2Fwww.google.com%2F&choe=UTF-8" title="Link to Google.com" />

Demo:


4
Google API kullanımıyla ilgili herhangi bir sınırlama var mı? Sınırlamaları kastediyorum: belirli bir zamandaki istek miktarı, vb.
Lobo

12
Bunun kullanımdan kaldırıldığına dikkat edilmelidir. Google, 2015 yılına kadar desteğini sürdürmeyi planlıyor. Her zaman olduğu gibi, uyarıda bulunun.
blainarmstrong

4
Onların göre @Lobo belgelerinde : "Google Grafik API yapabilirsiniz günde aramaların sayısında bir sınır yoktur ancak biz kötü niyetli olarak gördükleri herhangi kullanımını engellemek hakkımız saklıdır. ".
Alexandru Guzinschi

3
@Abaumg ile cevabı daha iyi buluyorum çünkü google gibi 3. taraflara bağlı değil ...
arod

5
Eylül 2019 - şu an itibariyle hala çalışıyor!
Anupam

87

PHP ile QR kodları oluşturmanın en kolay yolu phpqrcode kitaplığıdır .


6
+1 bu soruyu daha yakından yanıtlarsa, istekler için uygulanan Google sınırlamalarıyla sınırlandırılmadan QR kodunu kendi başınıza oluşturabilirsiniz. Bu ayrıca, google uç nokta sözleşmesi değişse bile web sitenizin çalıştığından emin olmanızı sağlayacaktır.
Sunny R Gupta

Adil uyarı: Görünüşe göre bu kitaplık "bitmiş" olabilir - yazar tarafından Ekim 2010'dan beri güncellenmemiştir ve sorun izleyicide, kitaplığı kullanmadan önce kitaplığı kullananların uygulamayı düşünmeleri gereken birkaç yama vardır.
CubicleSoft

ancak herhangi bir fikir için mvc standardına nasıl dönüştürüleceği !!!!
saurabh kamble

@CubicleSoft Bence geliştirici yorumunuzu ciddiye aldı ve hemen güncellendi
mokNathal

@mokNathal - Burada farklı bir şey görmüyorum. İndirmeler sayfasında bulunan en son sürüm hala 2010
yılına aittir

24

Phpqrcode kütüphane configure gerçekten hızlı ve API belgeleri anlamak kolaydır.

Abaumg'un cevabına ek olarakPHP , http://phpqrcode.sourceforge.net/examples/index.php adresinden 2 örnek ekledim.

1. QR kod kodlayıcı

önce kütüphaneyi yerel yolunuzdan ekleyin

include('../qrlib.php');

daha sonra görüntüyü doğrudan PNG akışı olarak çıkarmak için şunları yapın:

QRcode::png('your texte here...');

sonucu yerel olarak bir PNG resmi olarak kaydetmek için:

$tempDir = EXAMPLE_TMP_SERVERPATH;

$codeContents = 'your message here...';

$fileName = 'qrcode_name.png';

$pngAbsoluteFilePath = $tempDir.$fileName;
$urlRelativeFilePath = EXAMPLE_TMP_URLRELPATH.$fileName;

QRcode::png($codeContents, $pngAbsoluteFilePath); 

2. QR kodu çözücü

Ayrıca zxing kod çözücüsüne bakın :

http://zxing.org/w/decode.jspx

Çıktıyı kontrol etmek oldukça kullanışlı.

3. Veri formatı listesi

Veri türüne göre QR kodunuzda kullanabileceğiniz veri formatı listesi:

  • Web sitesi URL'si: http://stackoverflow.com (protokol dahil http://)
  • e-posta adresi: mailto: name@example.com
  • Telefon Numarası: +16365553344 (ülke kodu dahil)
  • SMS Mesajı: smsto: numara: mesaj
  • MMS Mesajı: mms: numara: konu
  • YouTube Videosu: youtube: // ID (standartlaştırılmamış, iPhone'da çalışabilir)

Bu kütüphane doesnt olan girdiler, küçük ve basit metin çeşitli çalışmalarına tamam karşın, yine de görünüyor
DuckDuckGo

Lütfen bir örnek verebilir misiniz?
RafaSashi

Fazla bir şey yok, $ codeContents = "www.example.com" yaptığımda sorun yok ama $ codeContents = "www.example.com/some/view/aUdv4rP4BXXLQdpXZC6Gs5C6AfyJM4uB6ntVttIr1B0=" yaparsam doğru görüntü göstermedi.
duckduckgo

Hatayı yeniden oluşturamıyorum. QRcode :: png ('www.example.com/some/view/aUdv4rP4BXXLQdpXZC6Gs5C6AfyJM4uB6ntVttI‌ r1B0 ='); başlıklarla bir ilgisi olabilir
RafaSashi

2
Php-qrcode kitaplığını, bazı kısımlarında qr kodu gerektiren bir web sitesi geliştirmek gibi ticari amaçlarla kullanabilir miyim?
Suneeta Singh

17

Endroid / qrcode kütüphane , kullanımı kolay bakımlı ve besteci kullanılarak kurulabilir. Doğrudan Symfony ile kullanabileceğiniz bir paket de vardır .

Kurulum:

$ composer require endroid/qrcode

Kullanım:

<?php

use Endroid\QrCode\QrCode;

$qrCode = new QrCode();
$qrCode
    ->setText('Life is too short to be generating QR codes')
    ->setSize(300)
    ->setPadding(10)
    ->setErrorCorrection('high')
    ->setForegroundColor(array('r' => 0, 'g' => 0, 'b' => 0, 'a' => 0))
    ->setBackgroundColor(array('r' => 255, 'g' => 255, 'b' => 255, 'a' => 0))
    ->setLabel('Scan the code')
    ->setLabelFontSize(16)
    ->setImageType(QrCode::IMAGE_TYPE_PNG)
;

// now we can directly output the qrcode
header('Content-Type: '.$qrCode->getContentType());
$qrCode->render();

// or create a response object
$response = new Response($qrCode->get(), 200, array('Content-Type' => $qrCode->getContentType()));

Oluşturulan QRCode


Iwazaru efendim, nasıl kullanabilirsiniz setText()ben varsa BİRDEN verileri? Örneğin, ben var $a = 1, $b = 2, $c = 3?. Birden fazla kullanmak gerekir BİR cümle ya da dize. Bunu nasıl yapabilirim?

As setTextyöntemi yalnızca bir parametre kabul Bunu geçirmeden önce birinin içine değişkenleri bağlamak gerekir sanırım. Ama sorununuzu doğru anladığımdan emin değilim, belki kütüphanenin deposunda bir sayı açmalısınız.
Iwazaru

Iwazaru Cevabım var efendim ..

Paylaşmak ister misin? ;)
Iwazaru

1
Tabii :) Tüm verileri birleştirmek için php'de implode () kullandım, sonra gerekirse patlattım (). İşte bu efendim :)

10

Github'da qrcode-generator . En basit senaryo ve cazibe gibi çalışır.

Artıları:

  • Üçüncü taraf bağımlılığı yok
  • QR kodu oluşturma sayısında sınırlama yoktur

Bununla ilgili herhangi bir belge bulamıyorum ama harika görünüyor!
Björn C

@ praba230890 bu komut dosyasıyla daha fazla örnek verebilir misiniz? 300x300 piksel QR kodunda bazı iletişim bilgileri almaya çalışıyorum. Komut dosyasını localhost'uma yükledim / indirdim ve sample_html.php çalışıyor. Ama diğer ikisi değil. Japoncam o kadar iyi değil (tamam google çeviriyi kullanacağım)
alex

oh ve bu phpqrcode kitaplığından daha hızlı / daha iyi olur mu?
alex

umutsuz.
navjot singh

5

Bir süredir google qrcode api kullanıyorum, ancak bundan pek hoşlanmadım çünkü oluşturulan görüntüye erişmek için internette olmamı gerektiriyor.

Küçük bir komut satırı araştırması yaptım ve qrencodelinux'un qr kodları oluşturmak için bir komut satırı aracı olduğunu öğrendim .

Bu küçük senaryoyu yazdım. İşin iyi yanı, oluşturulan görüntünün boyutunun 1KB'den küçük olmasıdır. Sağlanan veriler basitçe bir url'dir.

$url = ($_SERVER['HTTPS'] ? "https://" : "http://").$_SERVER['HTTP_HOST'].'/profile.php?id='.$_GET['pid'];
$img = shell_exec('qrencode --output=- -m=1 '.escapeshellarg($url));

$imgData = "data:image/png;base64,".base64_encode($img);

Sonra html'de resmi yükledim:

<img class="emrQRCode" src="<?=$imgData ?>" />

Sadece yüklemiş olmanız gerekiyor. [linux üzerindeki çoğu görüntüleme uygulaması, siz farkında olmadan onu kaputun altına yüklerdi.


escapeshellarg burada açıkladı (merak edenler için) - stackoverflow.com/a/22739494/195722 . Şahsen, her seferinde (özellikle de halka açık bir nesil için) bir komuta cevap vermezdim ve ilettiklerinin beklediğim bir dize olduğundan emin olmak için kesinlikle normal ifadeyi kullanırdım.
Natalie Adams

ubuntu
16.04'te

4

Sorunun PHP kullanarak QR kodlarının nasıl üretileceği olduğunu biliyorum, ancak bunu saf javascript ile yapan web siteleri için kod üretmenin bir yolunu arayanlar için bunu yapmanın iyi bir yolu. Jquery-qrcode jquery eklentisi iyi yapar.


Bir süredir Jquery eklentisi github.com/lrsjng/jquery-qrcode kullanıyorum , ayrıca güzel. Ancak çıktı yalnızca ikilidir. Dolayısıyla, bir görüntüyü PNG olarak oluşturmanız ve kaydetmeniz gerekiyorsa, bu çok fazla yardımcı olmaz. Bu yüzden bu soruyu okuyan çoğu geliştiricinin PHP'ye ihtiyacı var.
Kai Noack

Bu var olası istemci bir JS tarafından oluşturulan veri görüntü% 100 indirmek için.
Quinn Comendant

Açık olmadığım için üzgünüm. "Sunucu tarafına kaydet" demek istedim - sadece Javascript ile mümkün değil.
Kai Noack
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.