這篇文章主要介紹了關於php產生二維碼的三種方法,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
最簡單最實例的goolge開源方法,不過反應有點慢
1.google開放api
#程式碼如下:
$urlToEncode="http://www.helloweba.com"; generateQRfromGoogle($urlToEncode); /** * google api 二维码生成【QRcode可以存储最多4296个字母数字类型的任意文本,具体可以查看二维码数据格式】 * @param string $chl 二维码包含的信息,可以是数字、字符、二进制信息、汉字。 不能混合数据类型,数据必须经过UTF-8 URL-encoded * @param int $widhtHeight 生成二维码的尺寸设置 * @param string $EC_level 可选纠错级别,QR码支持四个等级纠错,用来恢复丢失的、读错的、模糊的、数据。 * L-默认:可以识别已损失的7%的数据 * M-可以识别已损失15%的数据 * Q-可以识别已损失25%的数据 * H-可以识别已损失30%的数据 * @param int $margin 生成的二维码离图片边框的距离 */ function generateQRfromGoogle($chl,$widhtHeight ='150',$EC_level='L',$margin='0') { $chl = urlencode($chl); echo '<img src="/static/imghwm/default1.png" data-src="jquery.js" class="lazy" alt="QR code" widhtHeight="'.$widhtHeight.' " widhtHeight="'.$widhtHeight.'"/>'; }
2.php類別庫PHP QRCode
#網址:http://phpqrcode.sourceforge.net/
下載:http://sourceforge.net/projects/phpqrcode/
下載官網提供的類別庫後,只需要使用phpqrcode.php就可以產生二維碼了,當然您的PHP環境必須開啟支援GD2
。 phpqrcode.php
提供了一個關鍵的png()
方法,其中參數$frame
表示產生的資訊文字;參數$filename
#表示是否輸出二維碼圖片檔(檔路徑,包含圖片名稱與字尾),預設否;參數$pixelPerPoint
表示容錯率,也就是有被覆寫的區域還能辨識參數,$ outerFrame
表示產生圖片大小,預設是4;參數$saveandprint
表示是否儲存二維碼。
程式碼如下:
public static function png($frame, $filename = false, $pixelPerPoint = 4, $outerFrame = 4,$saveandprint=FALSE) { $image = self::image($frame, $pixelPerPoint, $outerFrame); if ($filename === false) { Header("Content-type: image/png"); ImagePng($image); } else { if($saveandprint===TRUE){ ImagePng($image, $filename); header("Content-type: image/png"); ImagePng($image); }else{ ImagePng($image, $filename); } } ImageDestroy($image); }
呼叫PHP QR Code:
<?phpinclude 'phpqrcode.php'; //只需要phpqrcode一个文件即可,下载的里面其他的没什么用QRcode::png('http://www.baidu.com');
實際應用程式中,我們會在二維碼的中間加上自己的LOGO,已增強宣傳效果。那要如何產生含有logo的二維碼呢?其實原理很簡單,先使用PHP QRCode
產生一張二維碼圖片,然後再利用php的image
相關函數,將事先準備好的logo圖片加入剛產生的原始二維碼圖片中間,然後重新產生一張新的二維碼圖片。
<?phpinclude './phpqrcode.php'; QRcode::png('http://www.baidu.com','qrcode.png',2,10,true); $logo = 'logo.jpg';//准备好的logo图片$QR = 'qrcode.png';//已经生成的原始二维码图if ($logo !== FALSE) { $QR = imagecreatefromstring(file_get_contents($QR)); $logo = imagecreatefromstring(file_get_contents($logo)); $QR_width = imagesx($QR);//二维码图片宽度 $QR_height = imagesy($QR);//二维码图片高度 $logo_width = imagesx($logo);//logo图片宽度 $logo_height = imagesy($logo);//logo图片高度 $logo_qr_width = $QR_width / 5; $scale = $logo_width/$logo_qr_width; $logo_qr_height = $logo_height/$scale; $from_width = ($QR_width - $logo_qr_width) / 2; //重新组合图片并调整大小 imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height); }//输出图片imagepng($QR, 'newcode.png');echo '';
對於第二種方法:如果不使用$filename,第二個參數為false的時候,就不會把二維碼圖片儲存,而是直接輸出。
現在還有一些如有:libqrencode與QRcode Perl CGI & PHP scripts二維碼生成外掛大家喜歡也可看看。
3.基於jquery的二維碼產生插件qrcode,在頁面中呼叫該外掛程式就能產生對應的二維碼。
qrcode其實是透過使用jQuery實現圖形渲染,畫圖,支援canvas(HTML5)和table兩種方式,
可以到https://github.com/jeromeetienne/jquery-qrcode取得最新的代碼。
如何使用
(1)、先在頁面中加入jquery庫檔案和qrcode外掛。
<script type="text/javascript" ></script> <script type="text/javascript" src="jquery.qrcode.min.js"></script>
(2)、在頁面中需要顯示二維碼的地方加入以下程式碼:
<p id="code"></p>
(3)、呼叫qrcode外掛程式。
qrcode支援canvas和table兩種方式進行圖片渲染,預設使用canvas方式,效率最高,當然要瀏覽器支援html5。直接呼叫如下:
$('#code').qrcode("http://www.helloweba.com"); //任意字符串
您也可以透過以下方式呼叫:
$("#code").qrcode({ render: "table", //table方式 width: 200, //宽度 height:200, //高度 text: "www.helloweba.com" //任意内容 });
這樣就可以在頁面中直接產生一個二維碼,你可以用手機「掃一掃」功能讀取二維碼資訊。
辨識中文
我們試驗的時候發現不能辨識中文內容的二維碼,透過尋找多方資料了解到,jquery-qrcode是採用charCodeAt()方式進行編碼轉換的。而這個方法預設會取得它的Unicode編碼,如果有中文內容,在生成二維碼前就要把字串轉換成UTF-8,然後再產生二維碼。您可以透過以下函數來轉換中文字串:
function toUtf8(str) { var out, i, len, c; out = ""; len = str.length; for(i = 0; i < len; i++) { c = str.charCodeAt(i); if ((c >= 0x0001) && (c <= 0x007F)) { out += str.charAt(i); } else if (c > 0x07FF) { out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F)); out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F)); out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F)); } else { out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F)); out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F)); } } return out; }
以下範例:
var str = toUtf8("随便来点啥"); $('#code').qrcode(str);
相關推薦:
以上是php產生二維碼的三種方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

在PHP中,可以使用session_status()或session_id()來檢查會話是否已啟動。 1)使用session_status()函數,如果返回PHP_SESSION_ACTIVE,則會話已啟動。 2)使用session_id()函數,如果返回非空字符串,則會話已啟動。這兩種方法都能有效地檢查會話狀態,選擇使用哪種方法取決於PHP版本和個人偏好。

sessionsarevitalinwebapplications,尤其是在commercePlatform之前。

在PHP中管理並發會話訪問可以通過以下方法:1.使用數據庫存儲會話數據,2.採用Redis或Memcached,3.實施會話鎖定策略。這些方法有助於確保數據一致性和提高並發性能。

PHPsessionshaveseverallimitations:1)Storageconstraintscanleadtoperformanceissues;2)Securityvulnerabilitieslikesessionfixationattacksexist;3)Scalabilityischallengingduetoserver-specificstorage;4)Sessionexpirationmanagementcanbeproblematic;5)Datapersis

負載均衡會影響會話管理,但可以通過會話複製、會話粘性和集中式會話存儲解決。 1.會話複製在服務器間複製會話數據。 2.會話粘性將用戶請求定向到同一服務器。 3.集中式會話存儲使用獨立服務器如Redis存儲會話數據,確保數據共享。

Sessionlockingisatechniqueusedtoensureauser'ssessionremainsexclusivetooneuseratatime.Itiscrucialforpreventingdatacorruptionandsecuritybreachesinmulti-userapplications.Sessionlockingisimplementedusingserver-sidelockingmechanisms,suchasReentrantLockinJ

PHP會話的替代方案包括Cookies、Token-basedAuthentication、Database-basedSessions和Redis/Memcached。 1.Cookies通過在客戶端存儲數據來管理會話,簡單但安全性低。 2.Token-basedAuthentication使用令牌驗證用戶,安全性高但需額外邏輯。 3.Database-basedSessions將數據存儲在數據庫中,擴展性好但可能影響性能。 4.Redis/Memcached使用分佈式緩存提高性能和擴展性,但需額外配

Sessionhijacking是指攻擊者通過獲取用戶的sessionID來冒充用戶。防範方法包括:1)使用HTTPS加密通信;2)驗證sessionID的來源;3)使用安全的sessionID生成算法;4)定期更新sessionID。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

Dreamweaver CS6
視覺化網頁開發工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。