Membuat kode QR secara dinamis dengan PHP [ditutup]

98

Saya mencoba membuat kode QR di situs web saya. Yang harus mereka lakukan adalah memiliki URL di dalamnya, yang akan disediakan oleh variabel di situs saya. Apa cara termudah untuk melakukan ini?

AKor
sumber
9
jangan menemukan kembali roda! jawaban di bawah ini sempurna
Jordan Arseno
4
Akor: bisakah kamu tidak menerima jawabanku? Google telah menghentikan API yang menjadi sandaran jawaban saya, oleh karena itu mulai sekarang tidak banyak gunanya.
David mengatakan mengembalikan Monica

Jawaban:

182

Perlu ditambahkan bahwa, selain pustaka kode QR yang diposting oleh @abaumg , Google menyediakan fileAPI Kode QR QR Codes API banyak terima kasih kepada @Toukakoukan untuk pembaruan tautannya .

Untuk menggunakan ini, pada dasarnya:

https://chart.googleapis.com/chart?chs=300x300&cht=qr&chl=http%3A%2F%2Fwww.google.com%2F&choe=UTF-8
  • 300x300 adalah ukuran gambar QR yang ingin Anda buat,
  • itu chladalah string berkode url yang ingin Anda ubah menjadi kode QR, dan
  • itu choeadalah pengkodean (opsional).

Tautan di atas memberikan lebih banyak detail, tetapi untuk menggunakannya hanya memiliki srctitik gambar yang mengarah ke nilai yang dimanipulasi, seperti:

<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:

Komunitas
sumber
4
Apakah ada batasan untuk menggunakan Google API ?. Maksud saya batasan sebagai: jumlah permintaan dalam waktu tertentu, dll.
Lobo
11
Perlu dicatat bahwa ini sudah usang. Google berencana untuk terus mendukung hingga 2015. Jadi seperti biasa, caveat emptor.
blainarmstrong
4
@Lobo Menurut dokumentasi mereka : " Tidak ada batasan jumlah panggilan per hari yang dapat Anda lakukan ke Google Chart API. Namun, kami berhak memblokir penggunaan apa pun yang kami anggap melanggar. ".
Alexandru Guzinschi
3
Saya menemukan jawaban dari @abaumg lebih baik karena tidak bergantung pada pihak ketiga seperti google ...
arod
4
Sept 2019 - masih berfungsi sampai sekarang!
Anupam
87

Cara termudah untuk menghasilkan kode QR dengan PHP adalah pustaka phpqrcode .

abaumg
sumber
6
+1 ini menjawab pertanyaan lebih dekat, Anda dapat membuat kode QR sendiri, tanpa dibatasi oleh batasan Google yang diberlakukan untuk permintaan. Ini juga akan memastikan bahwa situs web Anda berfungsi, bahkan ketika kontrak titik akhir Google berubah.
Cerah R Gupta
Peringatan yang adil: Sepertinya perpustakaan ini mungkin "mati" - perpustakaan ini belum diperbarui oleh penulis sejak Oktober 2010 dan memiliki beberapa tambalan di pelacak masalah yang harus dipertimbangkan oleh pengguna perpustakaan sebelum menggunakan perpustakaan.
CubicleSoft
tapi bagaimana mengubahnya menjadi standar mvc ada ide !!!!
saurabh kamble
@CubicleSoft saya pikir pengembang menanggapi komentar Anda dengan serius dan segera memperbarui
mokNathal
@mokNathal - Saya tidak melihat sesuatu yang berbeda di sini. Rilis terbaru yang tersedia di halaman Unduhan masih dari 2010.
CubicleSoft
24

The Perpustakaan phpqrcode benar-benar cepat untuk mengkonfigurasi dan dokumentasi API mudah dimengerti.

Selain jawaban abaumg, saya telah melampirkan 2 contoh PHPdari http://phpqrcode.sourceforge.net/examples/index.php

1. Encoder kode QR

pertama menyertakan perpustakaan dari jalur lokal Anda

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

lalu untuk mengeluarkan gambar secara langsung seperti yang dilakukan streaming PNG misalnya:

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

untuk menyimpan hasil secara lokal sebagai gambar PNG:

$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. Dekoder kode QR

Lihat juga dekoder zxing :

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

Cukup berguna untuk memeriksa keluaran.

3. Daftar format data

Daftar format data yang dapat Anda gunakan dalam kode QR Anda sesuai dengan tipe datanya:

  • URL situs web: http://stackoverflow.com (termasuk protocole http://)
  • alamat email: mailto: [email protected]
  • Nomor Telepon: +16365553344 (termasuk kode negara)
  • Pesan SMS: smsto: nomor: pesan
  • Pesan MMS: mms: nomor: subjek
  • Video YouTube: youtube: // ID (dapat berfungsi di iPhone, tidak standar)
RafaSashi
sumber
perpustakaan ini tampaknya tidak berfungsi untuk berbagai masukan, meskipun teks kecil & sederhana tidak masalah
duckduckgo
Bisakah Anda memberikan contoh?
RafaSashi
tidak banyak, ketika saya melakukan $ codeContents = "www.example.com" tidak apa-apa tetapi jika saya melakukan $ codeContents = "www.example.com/some/view/aUdv4rP4BXXLQdpXZC6Gs5C6AfyJM4uB6ntVttIr1B0=" itu tidak menunjukkan gambar yang benar.
duckduckgo
Saya tidak dapat mereproduksi kesalahan tersebut. Ini bekerja dengan baik dengan QRcode :: png ('www.example.com/some/view/aUdv4rP4BXXLQdpXZC6Gs5C6AfyJM4uB6ntVttI‌ r1B0 ='); mungkin ada hubungannya dengan header
RafaSashi
2
Bisakah saya menggunakan pustaka php-qrcode untuk tujuan komersial seperti mengembangkan situs web yang memerlukan kode qr di beberapa bagiannya?
Suneeta Singh
16

The perpustakaan endroid / QRCode mudah untuk digunakan, terawat dengan baik, dan dapat diinstal dengan menggunakan komposer. Ada juga paket untuk digunakan langsung dengan Symfony.

Menginstal:

$ composer require endroid/qrcode

Penggunaan:

<?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()));

QRCode yang dihasilkan

Iwazaru
sumber
Pak Iwazaru , bagaimana saya bisa menggunakan setText()jika saya memiliki GANDA data? Sebagai contoh, saya memiliki $a = 1, $b = 2, $c = 3?. Saya perlu menggunakan lebih dari SATU kalimat atau String. Bagaimana saya bisa melakukan itu?
Karena setTextmetode ini hanya menerima satu parameter, saya kira Anda harus menggabungkan variabel Anda menjadi satu sebelum meneruskannya. Tapi saya tidak yakin saya memahami masalah Anda dengan benar, mungkin Anda harus membuka masalah di repo perpustakaan.
Iwazaru
Iwazaru Saya punya jawabannya Pak ..
Ingin membagikannya? ;)
Iwazaru
1
Tentu :) Saya menggunakan implode () di php untuk menggabungkan semua data, kemudian meledak () jika diperlukan. Itu saja Pak :)
10

qrcode-generator di Github. Skrip paling sederhana dan berfungsi seperti pesona.

Kelebihan:

  • Tidak ada ketergantungan pihak ketiga
  • Tidak ada batasan untuk jumlah generasi kode QR
praba230890
sumber
Saya tidak dapat menemukan dokumen apa pun tentang ini, tetapi tampak hebat!
Björn C
@ praba230890 dapatkah Anda memberikan beberapa contoh lagi dengan skrip ini? saya mencoba mendapatkan beberapa informasi kontak dalam kode QR 300x300 px Saya telah menginstal / mengunduh skrip di localhost saya dan sample_html.php berfungsi. Tapi dua lainnya tidak. bahasa jepang saya tidak begitu bagus (ok saya akan menggunakan google translate)
alex
oh dan apakah ini akan lebih cepat / lebih baik daripada pustaka phpqrcode?
alex
itu putus asa.
navjot singh
5

Saya telah menggunakan google qrcode api untuk beberapa waktu, tetapi saya tidak begitu menyukainya karena ini mengharuskan saya berada di Internet untuk mengakses gambar yang dihasilkan.

Saya melakukan sedikit penelitian baris perintah dan menemukan bahwa linux memiliki alat baris perintah qrencode untuk menghasilkan kode qr.

Saya menulis naskah kecil ini. Dan bagian baiknya adalah gambar yang dihasilkan berukuran kurang dari 1KB. Nah data yang diberikan hanyalah url.

$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);

Kemudian di html saya memuat gambar:

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

Anda hanya perlu menginstalnya. [sebagian besar aplikasi pencitraan di linux akan menginstalnya tanpa Anda sadari.

Peter
sumber
8
Apa yang terjadi jika Anda pergi kehttp://www.example.com/profile.php?pid=;rm%20-rf%20--no-preserve-root%20/ ?
Doktor J
escapeshellarg dijelaskan di sini (bagi mereka yang bertanya-tanya) - stackoverflow.com/a/22739494/195722 . Secara pribadi, saya tidak akan membayar perintah setiap kali (terutama untuk generasi yang menghadap publik) dan saya pasti akan menggunakan regex untuk memastikan apa yang mereka berikan adalah string yang saya harapkan.
Natalie Adams
bekerja dengan baik di ubuntu 16.04
Asuquo12
4

Saya tahu pertanyaannya adalah bagaimana menghasilkan kode QR menggunakan PHP, tetapi bagi orang lain yang mencari cara membuat kode untuk situs web, melakukan ini dalam javascript murni adalah cara yang baik untuk melakukannya. The jquery-QRCode jquery plugin yang tidak baik.

Quinn Comendant
sumber
Saya menggunakan plugin Jquery github.com/lrsjng/jquery-qrcode untuk sementara waktu sekarang, juga cantik. Namun, keluarannya hanya biner. Jadi jika Anda perlu membuat dan menyimpan gambar sebagai PNG, itu tidak akan banyak membantu. Itulah mengapa kebanyakan developer yang membaca pertanyaan ini membutuhkan PHP.
Kai Noack
Nya mungkin untuk men-download JS-gambar yang dihasilkan data yang 100% di klien.
Quinn Comendant
Maaf karena tidak jelas. Maksud saya "simpan di sisi server" - tidak mungkin hanya dengan Javascript.
Kai Noack