کد QR یا همان Ouick Response code (کد پاسخ سریع) نوعی از بارکد دو بعدی است که برای ذخیره اطلاعات استفاده می شود. در ابتدا, کد QR برای صنعت خوردو طراحی شده بود اما بعدها برای ساده سازی مکانیزم ذخیره اطلاعات در همه زمینه ها استفاده شد.
در کد QR ذخیره سازی داده ها می تواند با انواع مختلف تکنیک های رمزگذاری انجام شود.
اطلاعات ذخیره شده با دستگاه قابل خواندن است که توسط یک reader و یا یک دوربین مثل اپ های تلفن های هوشمند تفسیر می شود.
کتابخانه های مختلفی از PHP برای ساخت کد QR در php وجود دارند. در این مقاله آموزش php , از کاربر آدرس ایمیل را دریافت و در یک کد QR ذخیره می کنیم.
من از کتابخانه tc-lib-barcode برای php به منظور ساخت کد QR و ذخیره اطلاعات استفاده می کنم. ایمیل کاربر را با یک فرم HTML دریافت می کنیم. با ارسال فرم , مقدار فیلد ورودی ایمیل را اعتبارسنجی و بعد آن را برای اینکد و ذخیره آدرس ایمیل در کد QR , به تابع کتابخانه tc-lib-barcode ارسال می کنیم.
دریافت اطلاعات کاربر در HTML برا ذخیره در کد QR
این صفحه شامل یک فرم HTML برای دریافت آدرس ایمیل کاربر است. با ارسال (submit) این فرم, اسکریپت اعتبارسنجی جی کوئری را برای چک کردن ورودی کاربر و فرمت آن فراخوانی می کنیم. اگر کاربر آدرس ایمیل را در فرمت صحیح وارد کند, پس فرم با موفقیت سابمیت می شود.
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 |
<form method="post" name="frmQRGenerator" id="frm-qr" onSubmit="return validate();"> <div class="form-row"> Email: <input type="text" name="email_field" id="email_field" class="input-field" /> </div> <div> <input type="submit" name="generate" class="submit-button" value="Generate QR Code" /> </div> </form> <div id="validation-info"></div> <script src="jquery-3.2.1.min.js"></script> <script> function validate() { var valid = true; var emailRegexp = /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i $("#validation-info").hide(); $("#validation-info").html(); if ($("#email_field").val() == "") { $("#validation-info").show(); $("#validation-info").html("Email is required."); valid = false; } else if (!(emailRegexp.test($("#email_field").val()))) { $("#validation-info").show(); $("#validation-info").html("Invalid Email."); valid = false; } return valid; } </script> |
کد php برای tc-lib-barcode برای ساخت کد QR
کتابخانه tc-lib-barcode را قبل از اجرا کردن این مثال در محیط PHP دانلود کنید. با استفاده از توابع این کتابخانه یک آبجکت Barcode
را برای ارسال پارامترهایی مانند ابعاد, داده قابل ذخیره در فرم بارکد و غیره.. را ساختیم.
نمونه آبجکت barcode
را برای ساخت تصاویر باینری به منظور ذخیره با فرمت PNG در فولدر مشخص شده, استفاده کردیم.مسیر فایل برای نمایش خروجی بارکد به کاربر استفاده شده است. زمانی که تصویر کد QR را اسکن کنید, داده ذخیره شده در این QR دوبعدی تفسیر و نمایش داده خواهد شد.
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 |
<?php if (! empty($_POST["email_field"])) { require ('tc-lib-barcode/vendor/autoload.php'); $barcode = new \Com\Tecnick\Barcode\Barcode(); $targetPath = "qr-code/"; if (! is_dir($targetPath)) { mkdir($targetPath, 0777, true); } $bobj = $barcode->getBarcodeObj('QRCODE,H', $_POST["email_field"], - 16, - 16, 'black', array( - 2, - 2, - 2, - 2 ))->setBackgroundColor('#f0f0f0'); $imageData = $bobj->getPngData(); $timestamp = time(); file_put_contents($targetPath . $timestamp . '.png', $imageData); ?> <div class="result-heading">Output:</div> <img src="<?php echo $targetPath . $timestamp ; ?>.png" width="150px" height="150px"> <?php } ?> |
خروجی مثال ساخت کد QR در PHP
امیدوارم از آموزش ساخت کد QR در PHP نهایت استفاده را برده باشید .
برای دانلود سورس کد کامل این آموزش از باکس دانلود استفاده کنید.
هر سوالی داشتید ، از قسمت نظرات ارسال کنید . سریعا ، پاسخگوی سوالات شما هستیم .
موفق و پیروز باشید
سلام، ممنون از آموزش خوبتون.
میشه برای یک لینک هم qr ساخت؟
سلام ممنون بله میتونید
مچکرم. خیلی عالی جواب کارمو داد…
وب سایت عالی در زمینه php دارید
واقعا کاربردی…
موفق باشید
خوشحالیم که مفید واقع شده.
موفق باشید.
سلام
لطفا در مورد خواندن qr code نیز اگر ارائه بدهید عالی خواهد شد.
با تشکر.
سلام. دیکد کردن و خواندنش با کتابخانه زیر قابل انجام است.
https://github.com/khanamiryan/php-qrcode-detector-decoder
کار باهاش بسیار ساده است کافیه دانلود یا با کامپوزر نصب کنید بعد تصویر اسکن شده رو به تابع بدید تا متن داخلش رو براتون نمایش بده.
موفق باشید.
سلام
خط ۸۷ وجود نداره:
require (‘tc-lib-barcode/vendor/autoload.php’);
سلام. بهتر است که فقط به سورس کد پسنده نکنید و برای استفاده بهتر خود پست آموزشی رو هم مطالغه کنید.
در آموزش ذکر شده که “کتابخانه tc-lib-barcode را قبل از اجرا کردن این مثال در محیط PHP دانلود کنید.”
همچنین براحتی میتوانید با کامپوزر این پکیج رو نصب و استفاده کنید
https://netparadis.com/what-composer-in-php
موفق باشید.
سلام
ممنون از آموزشتون
دانلود کردنش چه فایده ای داره برای استفاده مگه حتما نباید نصب بشه؟
توی گیت هاب بعضی کدهارو میشه بدون نصب کتابخانه استفاده کرد آیا میشه همه کد ها رو باروش خاصی کاری کنیم که بدون نیاز به نصب کتابخانه ازشون استفاده کنیم
برای استفاده در هاست های اشتراکی بدرد میخوره که نمیشه کتابخونه نصب کرد
سلام. خوشحالیم که مفید واقع شده.
بله در هاست اشتراکی چون دسترسی شل ندارید نمیتونید پکیج نصب کنید.
راه حل زیاد است ولی ساده ترین این است که اول داخل لوکال هاست سورس رو راه اندازی و پکیج ها رو با کامپوزر نصب کنید بعد اینکه فایل ها کامل شد میتونید اون ها رو زیپ و بعد انتقال بدید روی هاست.
برای ساده تر کردن بیشتر هم میتونید ویرایشگر خودتون رو به ftp هاست وصل کنید تا دیگر عملیات زیپ و انتقال رو هم دستی انجام ندید.
موفق باشید.