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小时内与您取得联系。