بارکد(QR Code) یک کد قابل خواندنی توسط ماشین است که شامل مربع های سیاه رنگ بر روی یک پس زمینه سفید است . بارکد معمولا برای ذخیره اطلاعاتی که توسط دوربین قابل خواندن است استفاده می شود . بعضی مواقع نیاز است که یک بارکد (QR Code) داینامیک برای محصولات ، کاربران و یا مواردی در پروژه هایی که می نویسید ایجاد کنید . با یک جستجوی ساده می توانید کلی کتابخانه برای ایجاد بارکد پیدا کتید ، اما Google Chart API یک راه آسان برای ساخت بارکد درphp بدون استفاده از کتابخانه یا افزونه را ارایه می دهد .
در این آموزش به شما نحوه ساخت بارکد درphp با استفاده از Chart API گوگل و curl نشان می دهیم . اسکریپت ساخت بارکد ما اجازه ساخت QR Code هایی برای URL،متن،ایمیل،شماره تلفن،SMS،اطلاعات مخاطبان و دیگر محتوا را می دهد.
برای راحتی کار یک کلاس به اسم QR_BarCode ساختیم که به شما امکان ذخیره بارکد به صورت عکس PNG را میدهد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
<?php /** * QR_BarCode - Barcode QR Code Image Generator * @author NETParadis * @url http://www.netparadis.com */ class QR_BarCode{ // Google Chart API URL private $googleChartAPI = 'http://chart.apis.google.com/chart'; // Code data private $codeData; /** * URL QR code * @param string $url */ public function url($url = null){ $this->codeData = preg_match("#^https?\:\/\/#", $url) ? $url : "http://{$url}"; } /** * Text QR code * @param string $text */ public function text($text){ $this->codeData = $text; } /** * Email address QR code * * @param string $email * @param string $subject * @param string $message */ public function email($email = null, $subject = null, $message = null) { $this->codeData = "MATMSG:TO:{$email};SUB:{$subject};BODY:{$message};;"; } /** * Phone QR code * @param string $phone */ public function phone($phone){ $this->codeData = "TEL:{$phone}"; } /** * SMS QR code * * @param string $phone * @param string $text */ public function sms($phone = null, $msg = null) { $this->codeData = "SMSTO:{$phone}:{$msg}"; } /** * VCARD QR code * * @param string $name * @param string $address * @param string $phone * @param string $email */ public function contact($name = null, $address = null, $phone = null, $email = null) { $this->codeData = "MECARD:N:{$name};ADR:{$address};TEL:{$phone};EMAIL:{$email};;"; } /** * Content (gif, jpg, png, etc.) QR code * * @param string $type * @param string $size * @param string $content */ public function content($type = null, $size = null, $content = null) { $this->codeData = "CNTS:TYPE:{$type};LNG:{$size};BODY:{$content};;"; } /** * Generate QR code image * * @param int $size * @param string $filename * @return bool */ public function qrCode($size = 200, $filename = null) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $this->googleChartAPI); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, "chs={$size}x{$size}&cht=qr&chl=" . urlencode($this->codeData)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_TIMEOUT, 30); $img = curl_exec($ch); curl_close($ch); if($img) { if($filename) { if(!preg_match("#\.png$#i", $filename)) { $filename .= ".png"; } return file_put_contents($filename, $img); } else { header("Content-type: image/png"); print $img; return true; } } return false; } } ?> |
برای ساخت بارکد درphp از کلاس QE_BarCode به اینصورت استفاده میکنیم.
1 2 3 4 5 6 7 8 9 10 11 |
// include QR_BarCode class include "QR_BarCode.php"; // QR_BarCode object $qr = new QR_BarCode(); // create text QR code $qr->text('CodexWorld'); // display QR code image $qr->qrCode(); |
برای ذخیره بارکد به صورت تصویر PNG از کد زیر استفاده میکنیم.
1 2 3 |
<?php // save QR code image $qr->qrCode(350,'images/cw-qr.png'); |
کلاس QR_BarCode انواع مختلف بارکد ها را با فراخوانی متد موردنظر ایجاد می کند.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<?php // create url QR code $qr->url('URL'); // create text QR code $qr->text('textContent'); // create email QR code $qr->email('emailAddress', 'subject', 'message'); // create phone QR code $qr->phone('phoneNumber'); // create sms QR code $qr->sms('phoneNumber', 'message'); // create contact QR code $qr->contact('name', 'address', 'phone', 'email'); // create content QR code $qr->content('type', 'size', 'content'); |
جمع بندی
کلاس QR_BarCode به سادگی و هرچه سریعتر یک بارکد برای شما می سازد . تنها با فراخوانی فایل ( QR_Code.php) حاوی کلاس مورد نظر انواع مختلفی بارکد می توانید بسازید . برای استفاده از این کلاس مطمین باشید curl فعال باشد (اکثرا است!)
موفق باشید.
درود بر شما وقت بخیر.
کد شما رو پیاده سازی کردم در سایتم. متاسفانه از خط ۱۰۷ QE_BarCode.php چون قصد تغییر Header که قبلا در صفحه ایجاد شده را دارد ایراد میگیرد.
ولی وقتی کد چاپ QR رو در یک صفحه خالی اجرا میکنم مشکلی نیست.
من قصد دارم QR رو در بخشی از صفحه سایتم داشته باشم لطفا راهنمایی کنید.
سپاس
سلام ممنون.
از ob_start() برای فعال کردن بافر استفاده کنید
https://netparadis.com/output-buffering-php
ممنونم از پاسخ سریعتون. موردم حل شد. نمیدونم اصولی هست یا نه ولی اومدم تو src یه img، فایل php حاوی کدهای فراخوانی کلاس QR رو قرار دادم و مقادیر رو از طریق Query String(GET) بهش پاس دادم.
با سلام
خسته نباشید
احتراما از مجموعه سورس فوق استفاده میکنم از curl_init ایراد می گیرد و پیام خطا میدهد.
لطفاً راهنمایی بفرمایید چه باید کرد.
ممنون از زحمات شما
سلام ممنون .
احتمالا کتابخانه cURL روی سرور شما فعال نیست که باید با هاستینگ از طریق تیکت در ارتباط باشید .
موفق باشید.
البته میتونن از طریق select php version هم اینکارو بکنن اگه سی پنل هست
سلام. بله این یک ماژول برای سی پنل هست که خب فقط در بعضی هاستینگ ها نصب هست و بعضی ها ندارند و با گزینه دیگری میشه تغییر داد.
موفق باشید.