Я пытаюсь создать QR-коды на своем сайте. Все, что им нужно сделать, это указать в них URL-адрес, который предоставит переменная на моем сайте. Какой способ сделать это проще всего?
Я пытаюсь создать QR-коды на своем сайте. Все, что им нужно сделать, это указать в них URL-адрес, который предоставит переменная на моем сайте. Какой способ сделать это проще всего?
Ответы:
Стоит добавить, что в дополнение к библиотеке QR-кодов, опубликованной @abaumg , Google предоставляетQR-коды API QR Codes API большое спасибо @Toukakoukan за обновление ссылки .
Чтобы использовать это, в основном:
https://chart.googleapis.com/chart?chs=300x300&cht=qr&chl=http%3A%2F%2Fwww.google.com%2F&choe=UTF-8
300x300
это размер QR-изображения, которое вы хотите сгенерировать,chl
строка в кодировке url, которую вы хотите преобразовать в QR-код, иchoe
является ( по желанию) кодирования.Ссылка, приведенная выше, дает более подробную информацию, но для ее использования достаточно src
изображения, указывающего на изменяемое значение, например:
<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" />
Демо:
Самый простой способ сгенерировать QR-коды с помощью PHP - это библиотека phpqrcode .
Библиотеку phpqrcode очень быстро настроить, а документацию по API легко понять.
В дополнение к ответу abaumg я приложил 2 примера PHP
из http://phpqrcode.sourceforge.net/examples/index.php
1. Кодировщик QR-кода
сначала включите библиотеку с вашего локального пути
include('../qrlib.php');
затем для вывода изображения напрямую, как поток PNG, например:
QRcode::png('your texte here...');
чтобы сохранить результат локально как изображение 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. Декодер QR-кода.
См. Также декодер zxing :
http://zxing.org/w/decode.jspx
Довольно полезно проверить вывод.
3. Список формата данных
Список форматов данных, которые вы можете использовать в своем QR-коде в соответствии с типом данных:
http://
)Библиотека endroid / QrCode проста в использовании, в хорошем состоянии и может быть установлена с помощью composer. Также есть пакет, который можно использовать напрямую с Symfony.
Установка:
$ composer require endroid/qrcode
Использование :
<?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()));
setText()
если у меня НЕСКОЛЬКО данных? Например, у меня есть $a = 1
, $b = 2
, $c = 3
?. Мне нужно использовать более ОДНОГО предложения или строки. Как я могу это сделать?
setText
метод принимает только один параметр, я думаю, вам следует объединить свои переменные в один перед его передачей. Но я не уверен, что правильно понимаю вашу проблему, возможно, вам стоит открыть проблему в репозитории библиотеки.
qrcode-generator на Github. Скрипт простейший и работает как шарм.
Плюсы:
Некоторое время я использую google qrcode api, но мне это не очень понравилось, потому что для доступа к сгенерированному изображению мне нужно быть в Интернете.
Я провел небольшое исследование командной строки и обнаружил, что в Linux есть инструмент командной строки qrencode
для генерации qr-кодов.
Я написал этот небольшой сценарий. И что хорошо, размер сгенерированного изображения составляет менее 1 КБ. Что ж, предоставленные данные - это просто 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);
Затем в html загружаю изображение:
<img class="emrQRCode" src="<?=$imgData ?>" />
Вам просто нужно установить его. [большинство приложений для работы с изображениями в Linux установили бы его под капотом, даже если бы вы не осознали.
http://www.example.com/profile.php?pid=;rm%20-rf%20--no-preserve-root%20/ ?
Я знаю, что вопрос в том, как сгенерировать QR-коды с помощью PHP, но для тех, кто ищет способ генерировать коды для веб-сайтов, делать это на чистом javascript - это хороший способ сделать это. JQuery-QRCode JQuery плагин делает это хорошо.