HP頁面之間的數據傳遞
在頁面傳遞數據的方法很多,可以應用POST的方法,可以運用GET的放啊發也可以運用SESSION的方法,通過他們可以實現頁面之間的數據傳遞,其中POST的方法常見,也有GET的方法的,SESSION是完全應用頁面之間數據的傳遞,下面通風PHP為實例講述頁面之間的數據。
POST方法
在網站開發和使用過程中,經常需要提交表單在頁面之間傳遞數據,通過POST方法是比較常見的,如登錄頁面,把賬號和密碼傳給服務判斷對錯就可用POST方法。下列用GET犯法實現頁面之間的簡單數據傳輸。
首先了解HTML中的FORM標記:
<form>標記就像邊際線一樣把某個區域數據圈起來傳給其他頁面
一、<form> 表單在此標記內設置,有如下屬性:
1、action,為處理表單的頁面的URL地址;
2、method,指定數據傳送到服務器的方式,它有兩種屬性值,分別為get和post。get屬性值表示將輸入的數據追加到action指定地址的后面,并傳送到服務器。屬性值為post時,會將輸入的數據按照HTTP協議中的post傳輸方式傳送到服務器。
3、name,指定表單名稱。
4、target,指定數據結果顯示在那個窗口,可以設置_blank、_self、_parent和_top,_blank表示在新窗口打開目標文件;_selt表示在同一個窗口中打開;_parent表示在上一級窗口中打開,一般在框架中經常使用,_top表示在瀏覽器整個窗口中打開,忽略任何框架。
以上HTML的基礎知識稍微有接觸的朋友們都懂。接下來舉例PHP通GET方法頁面數據的傳遞。首先建立也index.PHP文檔,在FORM標記包含一個文本框和一個提交按鈕。如下圖。
名為form 1的標記用POST的方法想同目錄index.php的頁面傳遞數據。
再次寫一段PHP數據傳輸代碼,可以再同頁面寫,如圖:
用echo輸出POST得到數據。這里textfield是輸入框的名字。就是輸出POST方法得到的名textfield的輸入框的數據。完成代碼就是以上兩個合并再運行。
運行PHP我們一般用Apache或Ngix服務器軟件,初學可以studyPHP套裝工具。
下面運行演示。
網頁有一個文本框和提交按鈕,輸入某個值再提交;就可以送到index.php并顯示。
提交
再網頁使用中錄入數據,登錄,注冊等都可以POST方法。
GET方法
Get方法的創建和POST一樣是相同的,都在FORM標記中的method屬性來指定但他們的區別很大。
1.GET方法是用來請求數據而POST方法是發送數據,顯而易見。
2.GET傳送的數據非常小一般限制在2KB左右。POST比GET傳送的數據大一些。
3.用GET方法傳送賬號密碼會帶來安全問題,應為數據會出現URL中,可以再瀏覽記錄或緩存的數據中找這些所有并不很安全。下面我們看一下GET方法傳送數據。
如圖所示數據顯示在URL欄中了并用了button提交,顯然不安全。實際上有許多網站是用GET的,在瀏覽各種網站實不難發現,在網上所搜GET和POST的區別有詳細講解。本實例簡單理解為主。
SESSION方法
SESSION是什么?
Session 和 Cookie 功能效果是差不多的,區別就是session 是記錄在服務端的,Cookie是記錄在客戶端的。都是記錄一系列狀態的。
session是服務端存儲,cookie是瀏覽器端存儲
Cookie是把用戶的數據寫給用戶的瀏覽器。
Session技術把用戶的數據寫到用戶獨占的session中。
Session對象由服務器創建,開發人員可以調用request對象的getSession方法得到session對象。
Session解釋: 當訪問服務某個網頁的時候,會在服務器端的內存開辟一塊內存,這塊內存就叫做session,而這個內存是跟瀏覽器關聯在一起的。這個瀏覽器指的是瀏覽器窗口,或者是瀏覽器的子窗口,意思就是,只允許當前這個Session對應的瀏覽器訪問,就算是在同一個機器上新啟動的瀏覽器也是無法訪問的。而另外一個瀏覽器也需要記錄session的話,就會再啟動一個屬于自己的session。
簡單理解為SESSION在服務器端記錄用戶數據。
下面實例。代碼如下
結果:
SESSION的數據傳送可以由開始,儲存,銷毀來實現。想學習更深度的知識可以再下面引用頁面當中學習。
感謝朋友們的閱讀!給個贊謝謝!么么噠!
引用:1.https://wenku.baidu.com/view/c9843bae72fe910ef12d2af90242a8956aecaa48.html
ompdf是一個可以將HTML生成PD并保留樣式效果的PHP第三方擴展。
下面就一步步講解如何使用:
一、通過composer安裝
composer require dompdf/dompdf
安裝過程
二 、編寫測試代碼
(1)引用autoload.php
include 'vendor/autoload.php';
(2)實例化Dompdf
$dompdf=new \Dompdf\Dompdf();
(3)加載HTML
$dompdf->loadHtml($html); //$html 為HTML字符串
(4)設置紙張和方向
$dompdf->setPaper('A4', 'landscape'); //紙張大小和紙張方向
(5)生成PDF并下載
$dompdf->render();
$dompdf->stream('數據字典.pdf');
三、導出PDF測試,發現中文亂碼了
導出PDF發現中文亂碼了
四、解決中文亂了問題
(1)下載支持中文的字體包放到根目錄下(和vendor目錄同級),這里演示使用的是阿里巴巴的普惠字體(字體格式是ttf的,小編原先下載使用的字體格式是otf格式的無效)
(2)下載dompdf字體安裝工具解壓到根目錄(和vendor目錄同級)
下載地址:https://github.com/dompdf/utils
(3)在命令行(CMD定位到根目錄)下執行命令
php load_font.php "puhui" Alibaba-PuHuiTi-Light.ttf
執行成功后在路徑(vendor\dompdf\dompdf\lib\fonts)下就會出現剛才的字體
(4)在樣式文件中指定使用剛才安裝的字體
body{font-family:puhui;}
(5)再次導出PDF測試成功
亂碼問題解決
司的某項業務需要與用戶線上簽訂協議,即用戶在線手寫一個簽名,后臺將公司公章信息和用戶的簽名以及合同信息生成一份PDF文件,供用戶查看和下載。
比對了一些插件,我們最終決定使用dompdf這個插件,插件的github在這里:https://github.com/dompdf/dompdf。
1. 使用方法
// 引入命名空間 use Dompdf\Dompdf; // 初始化dompdf對象 $dompdf=new Dompdf(); // 加載html文檔內容 $dompdf->loadHtml('hello world'); // 設置紙張類型和方向 $dompdf->setPaper('A4', 'landscape'); // 渲染HTML為PDF $dompdf->render(); // 流輸出 $dompdf->stream();
2. 常見問題和解決辦法
2.1 中文亂碼的問題
插件對于字體和編碼問題是這樣形容的:
PDF documents internally support the following fonts: Helvetica, Times-Roman, Courier, Zapf-Dingbats, & Symbol. These fonts only support Windows ANSI encoding. In order for a PDF to display characters that are not available in Windows ANSI, you must supply an external font. Dompdf will embed any referenced font in the PDF so long as it has been pre-loaded or is accessible to dompdf and reference in CSS @font-face rules. See the font overview for more information on how to use fonts.The DejaVu TrueType fonts have been pre-installed to give dompdf decent Unicode character coverage by default. To use the DejaVu fonts reference the font in your stylesheet, e.g. body { font-family: DejaVu Sans; } (for DejaVu Sans). The following DejaVu 2.34 fonts are available: DejaVu Sans, DejaVu Serif, and DejaVu Sans Mono.
嘗試了一下,默認帶的字體是無法渲染中文的,使用CSS的@font-face引入會報錯(也可能是我打開方式不對)。這樣就只好自己引入一個字體了。
插件給了一個安裝語言文件的工具,地址再這里:https://github.com/dompdf/utils。
使用步驟:
這樣,我們就可以在html文檔的css中使用font-family屬性來指定字體了。
html { font-family: simkai; }
2.2 圖片無法展示
插件應該是無法直接顯示網絡圖片,所以需要將圖片轉換為BASE64格式才能顯示。
將HTML文檔中的所有圖片轉換為BASE64的方式:
function imgToBase64($html) { $html=preg_replace_callback('/<img(?:.*?)src="(.*?)"(?:.*?)\/?>/', function($matches) { $imageInfo=getimagesize($matches[1]); $base64="" . chunk_split(base64_encode(file_get_contents($matches[1]))); $base64_image='data:' . $imageInfo['mime'] . ';base64,' . $base64; return str_replace($matches[1], $base64_image, $matches[0]); }, $html); return $html; }
這樣轉換其實性能影響挺大的,感覺性能不太好可以加一下緩存。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。