<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>接口 &#8211; 个人随笔</title>
	<atom:link href="/label/%E6%8E%A5%E5%8F%A3/feed" rel="self" type="application/rss+xml" />
	<link>/</link>
	<description></description>
	<lastBuildDate>Sat, 19 May 2018 12:31:34 +0000</lastBuildDate>
	<language>zh-CN</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.6.1</generator>

<image>
	<url>/wp-content/uploads/2022/01/cropped-截屏2022-01-01-18.57.09-32x32.png</url>
	<title>接口 &#8211; 个人随笔</title>
	<link>/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>TP3.2商城 （七）接口、CURL、手机注册、购物车下单</title>
		<link>/%e5%90%8e%e5%8f%b0%e6%a1%86%e6%9e%b6/4240.html</link>
					<comments>/%e5%90%8e%e5%8f%b0%e6%a1%86%e6%9e%b6/4240.html#respond</comments>
		
		<dc:creator><![CDATA[Mr.Lee]]></dc:creator>
		<pubDate>Sat, 19 May 2018 12:31:34 +0000</pubDate>
				<category><![CDATA[TP3.2]]></category>
		<category><![CDATA[TP3.2商城]]></category>
		<category><![CDATA[后台框架]]></category>
		<category><![CDATA[CURL]]></category>
		<category><![CDATA[手机注册]]></category>
		<category><![CDATA[接口]]></category>
		<category><![CDATA[购物车下单]]></category>
		<guid isPermaLink="false">/?p=4240</guid>

					<description><![CDATA[接口概述 接口介绍 接口又称为API(Application Programming Interface应用程 [&#8230;]]]></description>
										<content:encoded><![CDATA[<h1>接口概述</h1>
<h2>接口介绍</h2>
<p>
  接口又称为API(Application Programming Interface应用程序编程接口)。是一些预先定义的函数，目的是提供应用程序与开发人员基于某软件或硬件的访问一组例程的能力，而又无需访问源码或理解内部工作机制的细节。
</p>
<p>
  一切皆为接口。只要能够提供一种服务就是接口。对于常见的接口返回数据格式为xml或者json
</p>
<h2>接口的使用原理</h2>
<p><img fetchpriority="high" decoding="async" width="948" height="389" src="/wp-content/uploads/2018/05/word-image-3779.png" class="wp-image-4241" srcset="/wp-content/uploads/2018/05/word-image-3779.png 948w, /wp-content/uploads/2018/05/word-image-3779-300x123.png 300w, /wp-content/uploads/2018/05/word-image-3779-768x315.png 768w" sizes="(max-width: 948px) 100vw, 948px" /></p>
<p>
  本质就是发送请求然后响应
</p>
<h2>接口使用的注意事项</h2>
<p>
  当调用别人所提供的接口时最为重要的看文档。在文档中一定会具体的列出请求地址、请求方式、请求参数、返回格式跟返回的数据。对于比较重要的接口往往都会提供demo例如支付。对于不需要回调的接口可以直接本地进行测试。如果需要回调必须发布到外网中才可以测试
</p>
<p>
  回调：当调用别人的接口完成之后，别人的接口还需要在调用自己提供的接口
</p>
<h2>curl使用</h2>
<p>
  使用curl必须开启curl扩展
</p>
<h3>curl使用步骤</h3>
<ol>
<li>
  打开会话curl_init
</li>
<li>
  设置参数curl_setopt
</li>
<li>
  执行请求curl_exec
</li>
<li>
  关闭会话curl_close
</li>
</ol>
<h3>使用curl实现get请求</h3>
<p><img decoding="async" width="1085" height="704" src="/wp-content/uploads/2018/05/word-image-3780.png" class="wp-image-4242" srcset="/wp-content/uploads/2018/05/word-image-3780.png 1085w, /wp-content/uploads/2018/05/word-image-3780-300x195.png 300w, /wp-content/uploads/2018/05/word-image-3780-768x498.png 768w, /wp-content/uploads/2018/05/word-image-3780-1024x664.png 1024w" sizes="(max-width: 1085px) 100vw, 1085px" /></p>
<h3>使用curl实现post请求</h3>
<p>
  ①创建表单
</p>
<p><img decoding="async" width="876" height="560" src="/wp-content/uploads/2018/05/word-image-3781.png" class="wp-image-4243" srcset="/wp-content/uploads/2018/05/word-image-3781.png 876w, /wp-content/uploads/2018/05/word-image-3781-300x192.png 300w, /wp-content/uploads/2018/05/word-image-3781-768x491.png 768w" sizes="(max-width: 876px) 100vw, 876px" /></p>
<p>
  ②创建php文件对请求进行处理
</p>
<p><img loading="lazy" decoding="async" width="729" height="302" src="/wp-content/uploads/2018/05/word-image-3782.png" class="wp-image-4244" srcset="/wp-content/uploads/2018/05/word-image-3782.png 729w, /wp-content/uploads/2018/05/word-image-3782-300x124.png 300w" sizes="(max-width: 729px) 100vw, 729px" /></p>
<p>
  ③使用curl工具发送post请求
</p>
<p><img loading="lazy" decoding="async" width="1002" height="701" src="/wp-content/uploads/2018/05/word-image-3783.png" class="wp-image-4245" srcset="/wp-content/uploads/2018/05/word-image-3783.png 1002w, /wp-content/uploads/2018/05/word-image-3783-300x210.png 300w, /wp-content/uploads/2018/05/word-image-3783-768x537.png 768w" sizes="(max-width: 1002px) 100vw, 1002px" /></p>
<p>
  结果如下
</p>
<p><img loading="lazy" decoding="async" width="688" height="120" src="/wp-content/uploads/2018/05/word-image-3784.png" class="wp-image-4246" srcset="/wp-content/uploads/2018/05/word-image-3784.png 688w, /wp-content/uploads/2018/05/word-image-3784-300x52.png 300w" sizes="(max-width: 688px) 100vw, 688px" /></p>
<h2>调用第三方接口的案例</h2>
<h3>申请接口使用权限</h3>
<p><a href="https://www.juhe.cn/">https://www.juhe.cn/</a>
</p>
<p>
  聚合数据为一个专门提供接口服务的平台。部分接口免费使用。
</p>
<p>
  ①注册为会员
</p>
<p>
  ②登录到会员中心进行个人的认证
</p>
<p><img loading="lazy" decoding="async" width="186" height="289" src="/wp-content/uploads/2018/05/word-image-3785.png" class="wp-image-4247" /></p>
<p>
  ③申请接口使用权限
</p>
<p><img loading="lazy" decoding="async" width="1177" height="449" src="/wp-content/uploads/2018/05/word-image-3786.png" class="wp-image-4248" srcset="/wp-content/uploads/2018/05/word-image-3786.png 1177w, /wp-content/uploads/2018/05/word-image-3786-300x114.png 300w, /wp-content/uploads/2018/05/word-image-3786-768x293.png 768w, /wp-content/uploads/2018/05/word-image-3786-1024x391.png 1024w" sizes="(max-width: 1177px) 100vw, 1177px" /><br />
<img loading="lazy" decoding="async" width="797" height="565" src="/wp-content/uploads/2018/05/word-image-3787.png" class="wp-image-4249" srcset="/wp-content/uploads/2018/05/word-image-3787.png 797w, /wp-content/uploads/2018/05/word-image-3787-300x213.png 300w, /wp-content/uploads/2018/05/word-image-3787-768x544.png 768w" sizes="(max-width: 797px) 100vw, 797px" /></p>
<p>
  ④对申请的接口进行认证
</p>
<p><img loading="lazy" decoding="async" width="1074" height="159" src="/wp-content/uploads/2018/05/word-image-3788.png" class="wp-image-4250" srcset="/wp-content/uploads/2018/05/word-image-3788.png 1074w, /wp-content/uploads/2018/05/word-image-3788-300x44.png 300w, /wp-content/uploads/2018/05/word-image-3788-768x114.png 768w, /wp-content/uploads/2018/05/word-image-3788-1024x152.png 1024w" sizes="(max-width: 1074px) 100vw, 1074px" /><br />
<img loading="lazy" decoding="async" width="808" height="528" src="/wp-content/uploads/2018/05/word-image-3789.png" class="wp-image-4251" srcset="/wp-content/uploads/2018/05/word-image-3789.png 808w, /wp-content/uploads/2018/05/word-image-3789-300x196.png 300w, /wp-content/uploads/2018/05/word-image-3789-768x502.png 768w" sizes="(max-width: 808px) 100vw, 808px" /></p>
<p>
  ⑤查看身份认证标识
</p>
<p><img loading="lazy" decoding="async" width="1100" height="217" src="/wp-content/uploads/2018/05/word-image-3790.png" class="wp-image-4252" srcset="/wp-content/uploads/2018/05/word-image-3790.png 1100w, /wp-content/uploads/2018/05/word-image-3790-300x59.png 300w, /wp-content/uploads/2018/05/word-image-3790-768x152.png 768w, /wp-content/uploads/2018/05/word-image-3790-1024x202.png 1024w" sizes="(max-width: 1100px) 100vw, 1100px" /></p>
<h3>查看接口使用文档</h3>
<p>
  ①进入接口文档
</p>
<p><img loading="lazy" decoding="async" width="1343" height="407" src="/wp-content/uploads/2018/05/word-image-3791.png" class="wp-image-4253" srcset="/wp-content/uploads/2018/05/word-image-3791.png 1343w, /wp-content/uploads/2018/05/word-image-3791-300x91.png 300w, /wp-content/uploads/2018/05/word-image-3791-768x233.png 768w, /wp-content/uploads/2018/05/word-image-3791-1024x310.png 1024w" sizes="(max-width: 1343px) 100vw, 1343px" /><br />
<img loading="lazy" decoding="async" width="1029" height="487" src="/wp-content/uploads/2018/05/word-image-3792.png" class="wp-image-4254" srcset="/wp-content/uploads/2018/05/word-image-3792.png 1029w, /wp-content/uploads/2018/05/word-image-3792-300x142.png 300w, /wp-content/uploads/2018/05/word-image-3792-768x363.png 768w, /wp-content/uploads/2018/05/word-image-3792-1024x485.png 1024w" sizes="(max-width: 1029px) 100vw, 1029px" /></p>
<p>
  ②查看文档
</p>
<p><img loading="lazy" decoding="async" width="1025" height="536" src="/wp-content/uploads/2018/05/word-image-3793.png" class="wp-image-4255" srcset="/wp-content/uploads/2018/05/word-image-3793.png 1025w, /wp-content/uploads/2018/05/word-image-3793-300x157.png 300w, /wp-content/uploads/2018/05/word-image-3793-768x402.png 768w, /wp-content/uploads/2018/05/word-image-3793-1024x535.png 1024w" sizes="(max-width: 1025px) 100vw, 1025px" /></p>
<p>
  返回数据结果如下
</p>
<p><img loading="lazy" decoding="async" width="782" height="554" src="/wp-content/uploads/2018/05/word-image-3794.png" class="wp-image-4256" srcset="/wp-content/uploads/2018/05/word-image-3794.png 782w, /wp-content/uploads/2018/05/word-image-3794-300x213.png 300w, /wp-content/uploads/2018/05/word-image-3794-768x544.png 768w" sizes="(max-width: 782px) 100vw, 782px" /></p>
<h3>演示调用接口</h3>
<p>
  ①编写代码调用接口
</p>
<p><img loading="lazy" decoding="async" width="1117" height="488" src="/wp-content/uploads/2018/05/word-image-3795.png" class="wp-image-4257" srcset="/wp-content/uploads/2018/05/word-image-3795.png 1117w, /wp-content/uploads/2018/05/word-image-3795-300x131.png 300w, /wp-content/uploads/2018/05/word-image-3795-768x336.png 768w, /wp-content/uploads/2018/05/word-image-3795-1024x447.png 1024w" sizes="(max-width: 1117px) 100vw, 1117px" /></p>
<p>
  ②查看结果
</p>
<p><img loading="lazy" decoding="async" width="1361" height="232" src="/wp-content/uploads/2018/05/word-image-3796.png" class="wp-image-4258" srcset="/wp-content/uploads/2018/05/word-image-3796.png 1361w, /wp-content/uploads/2018/05/word-image-3796-300x51.png 300w, /wp-content/uploads/2018/05/word-image-3796-768x131.png 768w, /wp-content/uploads/2018/05/word-image-3796-1024x175.png 1024w" sizes="(max-width: 1361px) 100vw, 1361px" /></p>
<h2>本地接口案例</h2>
<p>
  APP登录
</p>
<h3>编写接口文档</h3>
<table>
<tr>
<td colspan="4">
<p>
  用户登录接口
</p>
</td>
</tr>
<tr>
<td>
<p>
  请求地址
</p>
</td>
<td colspan="3">
<p>
  http://shop.com/demo/demo5.php
</p>
</td>
</tr>
<tr>
<td>
<p>
  请求方式
</p>
</td>
<td colspan="3">
<p>
  http协议的get或者post
</p>
</td>
</tr>
<tr>
<td>
<p>
  返回结果格式
</p>
</td>
<td colspan="3">
<p>
  Json
</p>
</td>
</tr>
<tr>
<td>
<p>
  请求参数
</p>
</td>
<td>
<p>
  Username
</p>
</td>
<td>
<p>
  用户名
</p>
</td>
<td>
<p>
  必填项
</p>
</td>
</tr>
<tr>
<td></td>
<td>
<p>
  Password
</p>
</td>
<td>
<p>
  密码
</p>
</td>
<td>
<p>
  必填项
</p>
</td>
</tr>
<tr>
<td>
<p>
  返回结果
</p>
</td>
<td>
<p>
  Status
</p>
</td>
<td>
<p>
  状态码
</p>
</td>
<td>
<p>
  0失败1为成功
</p>
</td>
</tr>
<tr>
<td></td>
<td>
<p>
  Msg
</p>
</td>
<td>
<p>
  提示信息
</p>
</td>
<td></td>
</tr>
<tr>
<td></td>
<td>
<p>
  Data
</p>
</td>
<td>
<p>
  数据集合
</p>
</td>
<td>
<p>
  包括了多个信息
</p>
</td>
</tr>
</table>
<h3>代码实现</h3>
<p>
  ①编写代码
</p>
<p><img loading="lazy" decoding="async" width="1090" height="692" src="/wp-content/uploads/2018/05/word-image-3797.png" class="wp-image-4259" srcset="/wp-content/uploads/2018/05/word-image-3797.png 1090w, /wp-content/uploads/2018/05/word-image-3797-300x190.png 300w, /wp-content/uploads/2018/05/word-image-3797-768x488.png 768w, /wp-content/uploads/2018/05/word-image-3797-1024x650.png 1024w" sizes="(max-width: 1090px) 100vw, 1090px" /></p>
<p>
  ②效果
</p>
<p><img loading="lazy" decoding="async" width="1006" height="131" src="/wp-content/uploads/2018/05/word-image-3798.png" class="wp-image-4260" srcset="/wp-content/uploads/2018/05/word-image-3798.png 1006w, /wp-content/uploads/2018/05/word-image-3798-300x39.png 300w, /wp-content/uploads/2018/05/word-image-3798-768x100.png 768w" sizes="(max-width: 1006px) 100vw, 1006px" /></p>
<h1>短信接口</h1>
<h2>短信接口注册</h2>
<p>
  ①注册会员
</p>
<p><a href="http://www.yuntongxun.com/">http://www.yuntongxun.com/</a>
</p>
<p><img loading="lazy" decoding="async" width="1217" height="508" src="/wp-content/uploads/2018/05/word-image-3799.png" class="wp-image-4261" srcset="/wp-content/uploads/2018/05/word-image-3799.png 1217w, /wp-content/uploads/2018/05/word-image-3799-300x125.png 300w, /wp-content/uploads/2018/05/word-image-3799-768x321.png 768w, /wp-content/uploads/2018/05/word-image-3799-1024x427.png 1024w" sizes="(max-width: 1217px) 100vw, 1217px" /></p>
<p>
  ②登录进入控制台查看身份标识
</p>
<p><img loading="lazy" decoding="async" width="1332" height="604" src="/wp-content/uploads/2018/05/word-image-3800.png" class="wp-image-4262" srcset="/wp-content/uploads/2018/05/word-image-3800.png 1332w, /wp-content/uploads/2018/05/word-image-3800-300x136.png 300w, /wp-content/uploads/2018/05/word-image-3800-768x348.png 768w, /wp-content/uploads/2018/05/word-image-3800-1024x464.png 1024w" sizes="(max-width: 1332px) 100vw, 1332px" /></p>
<p>
  ③创建应用
</p>
<p><img loading="lazy" decoding="async" width="1195" height="587" src="/wp-content/uploads/2018/05/word-image-3801.png" class="wp-image-4263" srcset="/wp-content/uploads/2018/05/word-image-3801.png 1195w, /wp-content/uploads/2018/05/word-image-3801-300x147.png 300w, /wp-content/uploads/2018/05/word-image-3801-768x377.png 768w, /wp-content/uploads/2018/05/word-image-3801-1024x503.png 1024w" sizes="(max-width: 1195px) 100vw, 1195px" /><br />
<img loading="lazy" decoding="async" width="948" height="560" src="/wp-content/uploads/2018/05/word-image-3802.png" class="wp-image-4264" srcset="/wp-content/uploads/2018/05/word-image-3802.png 948w, /wp-content/uploads/2018/05/word-image-3802-300x177.png 300w, /wp-content/uploads/2018/05/word-image-3802-768x454.png 768w" sizes="(max-width: 948px) 100vw, 948px" /></p>
<p>
  查看应用列表
</p>
<p><img loading="lazy" decoding="async" width="1012" height="451" src="/wp-content/uploads/2018/05/word-image-3803.png" class="wp-image-4265" srcset="/wp-content/uploads/2018/05/word-image-3803.png 1012w, /wp-content/uploads/2018/05/word-image-3803-300x134.png 300w, /wp-content/uploads/2018/05/word-image-3803-768x342.png 768w" sizes="(max-width: 1012px) 100vw, 1012px" /><br />
<img loading="lazy" decoding="async" width="856" height="565" src="/wp-content/uploads/2018/05/word-image-3804.png" class="wp-image-4266" srcset="/wp-content/uploads/2018/05/word-image-3804.png 856w, /wp-content/uploads/2018/05/word-image-3804-300x198.png 300w, /wp-content/uploads/2018/05/word-image-3804-768x507.png 768w" sizes="(max-width: 856px) 100vw, 856px" /></p>
<p>
  ④查看模板列表
</p>
<p><img loading="lazy" decoding="async" width="1126" height="537" src="/wp-content/uploads/2018/05/word-image-3805.png" class="wp-image-4267" srcset="/wp-content/uploads/2018/05/word-image-3805.png 1126w, /wp-content/uploads/2018/05/word-image-3805-300x143.png 300w, /wp-content/uploads/2018/05/word-image-3805-768x366.png 768w, /wp-content/uploads/2018/05/word-image-3805-1024x488.png 1024w" sizes="(max-width: 1126px) 100vw, 1126px" /></p>
<p>
  ⑤设置测试号码
</p>
<p><img loading="lazy" decoding="async" width="1110" height="555" src="/wp-content/uploads/2018/05/word-image-3806.png" class="wp-image-4268" srcset="/wp-content/uploads/2018/05/word-image-3806.png 1110w, /wp-content/uploads/2018/05/word-image-3806-300x150.png 300w, /wp-content/uploads/2018/05/word-image-3806-768x384.png 768w, /wp-content/uploads/2018/05/word-image-3806-1024x512.png 1024w" sizes="(max-width: 1110px) 100vw, 1110px" /></p>
<h2>查看使用文档或者找demo</h2>
<p>
  ①找到文档入口地址
</p>
<p><img loading="lazy" decoding="async" width="1317" height="159" src="/wp-content/uploads/2018/05/word-image-3807.png" class="wp-image-4269" srcset="/wp-content/uploads/2018/05/word-image-3807.png 1317w, /wp-content/uploads/2018/05/word-image-3807-300x36.png 300w, /wp-content/uploads/2018/05/word-image-3807-768x93.png 768w, /wp-content/uploads/2018/05/word-image-3807-1024x124.png 1024w" sizes="(max-width: 1317px) 100vw, 1317px" /></p>
<p>
  ②找到短信文档的入口
</p>
<p><img loading="lazy" decoding="async" width="1076" height="439" src="/wp-content/uploads/2018/05/word-image-3808.png" class="wp-image-4270" srcset="/wp-content/uploads/2018/05/word-image-3808.png 1076w, /wp-content/uploads/2018/05/word-image-3808-300x122.png 300w, /wp-content/uploads/2018/05/word-image-3808-768x313.png 768w, /wp-content/uploads/2018/05/word-image-3808-1024x418.png 1024w" sizes="(max-width: 1076px) 100vw, 1076px" /></p>
<p>
  ③下载demo
</p>
<p><img loading="lazy" decoding="async" width="950" height="509" src="/wp-content/uploads/2018/05/word-image-3809.png" class="wp-image-4271" srcset="/wp-content/uploads/2018/05/word-image-3809.png 950w, /wp-content/uploads/2018/05/word-image-3809-300x161.png 300w, /wp-content/uploads/2018/05/word-image-3809-768x411.png 768w" sizes="(max-width: 950px) 100vw, 950px" /></p>
<p>
  ④目录说明
</p>
<p><img loading="lazy" decoding="async" width="891" height="263" src="/wp-content/uploads/2018/05/word-image-3810.png" class="wp-image-4272" srcset="/wp-content/uploads/2018/05/word-image-3810.png 891w, /wp-content/uploads/2018/05/word-image-3810-300x89.png 300w, /wp-content/uploads/2018/05/word-image-3810-768x227.png 768w" sizes="(max-width: 891px) 100vw, 891px" /></p>
<h2>测试短信发送</h2>
<p>
  ①将下载的demo拷贝到web目录下
</p>
<p><img loading="lazy" decoding="async" width="936" height="389" src="/wp-content/uploads/2018/05/word-image-3811.png" class="wp-image-4273" srcset="/wp-content/uploads/2018/05/word-image-3811.png 936w, /wp-content/uploads/2018/05/word-image-3811-300x125.png 300w, /wp-content/uploads/2018/05/word-image-3811-768x319.png 768w" sizes="(max-width: 936px) 100vw, 936px" /></p>
<p>
  ②修改发送短信的文件
</p>
<p><img loading="lazy" decoding="async" width="1138" height="674" src="/wp-content/uploads/2018/05/word-image-3812.png" class="wp-image-4274" srcset="/wp-content/uploads/2018/05/word-image-3812.png 1138w, /wp-content/uploads/2018/05/word-image-3812-300x178.png 300w, /wp-content/uploads/2018/05/word-image-3812-768x455.png 768w, /wp-content/uploads/2018/05/word-image-3812-1024x606.png 1024w" sizes="(max-width: 1138px) 100vw, 1138px" /></p>
<p>
  ③继续修改发送短信文件实现发送短信
</p>
<p><img loading="lazy" decoding="async" width="1051" height="496" src="/wp-content/uploads/2018/05/word-image-3813.png" class="wp-image-4275" srcset="/wp-content/uploads/2018/05/word-image-3813.png 1051w, /wp-content/uploads/2018/05/word-image-3813-300x142.png 300w, /wp-content/uploads/2018/05/word-image-3813-768x362.png 768w, /wp-content/uploads/2018/05/word-image-3813-1024x483.png 1024w" sizes="(max-width: 1051px) 100vw, 1051px" /></p>
<p>
  ④测试查看
</p>
<p><img loading="lazy" decoding="async" width="750" height="236" src="/wp-content/uploads/2018/05/word-image-3814.png" class="wp-image-4276" srcset="/wp-content/uploads/2018/05/word-image-3814.png 750w, /wp-content/uploads/2018/05/word-image-3814-300x94.png 300w" sizes="(max-width: 750px) 100vw, 750px" /></p>
<h2>短信注册的流程</h2>
<p><img loading="lazy" decoding="async" width="1066" height="452" src="/wp-content/uploads/2018/05/word-image-3815.png" class="wp-image-4277" srcset="/wp-content/uploads/2018/05/word-image-3815.png 1066w, /wp-content/uploads/2018/05/word-image-3815-300x127.png 300w, /wp-content/uploads/2018/05/word-image-3815-768x326.png 768w, /wp-content/uploads/2018/05/word-image-3815-1024x434.png 1024w" sizes="(max-width: 1066px) 100vw, 1066px" /></p>
<h2>项目中实现短信注册</h2>
<h3>将发送短信封装成为函数</h3>
<p>
  ①拷贝SDK类文件
</p>
<p><img loading="lazy" decoding="async" width="915" height="337" src="/wp-content/uploads/2018/05/word-image-3816.png" class="wp-image-4278" srcset="/wp-content/uploads/2018/05/word-image-3816.png 915w, /wp-content/uploads/2018/05/word-image-3816-300x110.png 300w, /wp-content/uploads/2018/05/word-image-3816-768x283.png 768w" sizes="(max-width: 915px) 100vw, 915px" /></p>
<p>
  ②创建发送短信的函数
</p>
<p><img loading="lazy" decoding="async" width="1068" height="671" src="/wp-content/uploads/2018/05/word-image-3817.png" class="wp-image-4279" srcset="/wp-content/uploads/2018/05/word-image-3817.png 1068w, /wp-content/uploads/2018/05/word-image-3817-300x188.png 300w, /wp-content/uploads/2018/05/word-image-3817-768x483.png 768w, /wp-content/uploads/2018/05/word-image-3817-1024x643.png 1024w" sizes="(max-width: 1068px) 100vw, 1068px" /><br />
<img loading="lazy" decoding="async" width="1077" height="500" src="/wp-content/uploads/2018/05/word-image-3818.png" class="wp-image-4280" srcset="/wp-content/uploads/2018/05/word-image-3818.png 1077w, /wp-content/uploads/2018/05/word-image-3818-300x139.png 300w, /wp-content/uploads/2018/05/word-image-3818-768x357.png 768w, /wp-content/uploads/2018/05/word-image-3818-1024x475.png 1024w" sizes="(max-width: 1077px) 100vw, 1077px" /><br />
<img loading="lazy" decoding="async" width="1026" height="170" src="/wp-content/uploads/2018/05/word-image-3819.png" class="wp-image-4281" srcset="/wp-content/uploads/2018/05/word-image-3819.png 1026w, /wp-content/uploads/2018/05/word-image-3819-300x50.png 300w, /wp-content/uploads/2018/05/word-image-3819-768x127.png 768w, /wp-content/uploads/2018/05/word-image-3819-1024x170.png 1024w" sizes="(max-width: 1026px) 100vw, 1026px" /></p>
<p>
  ③编写测试代码
</p>
<p><img loading="lazy" decoding="async" width="1083" height="395" src="/wp-content/uploads/2018/05/word-image-3820.png" class="wp-image-4282" srcset="/wp-content/uploads/2018/05/word-image-3820.png 1083w, /wp-content/uploads/2018/05/word-image-3820-300x109.png 300w, /wp-content/uploads/2018/05/word-image-3820-768x280.png 768w, /wp-content/uploads/2018/05/word-image-3820-1024x373.png 1024w" sizes="(max-width: 1083px) 100vw, 1083px" /><br />
<img loading="lazy" decoding="async" width="583" height="167" src="/wp-content/uploads/2018/05/word-image-3821.png" class="wp-image-4283" srcset="/wp-content/uploads/2018/05/word-image-3821.png 583w, /wp-content/uploads/2018/05/word-image-3821-300x86.png 300w" sizes="(max-width: 583px) 100vw, 583px" /></p>
<h3>正式使用短信验证码注册</h3>
<p>
  ①修改注册表单
</p>
<p><img loading="lazy" decoding="async" width="1128" height="700" src="/wp-content/uploads/2018/05/word-image-3822.png" class="wp-image-4284" srcset="/wp-content/uploads/2018/05/word-image-3822.png 1128w, /wp-content/uploads/2018/05/word-image-3822-300x186.png 300w, /wp-content/uploads/2018/05/word-image-3822-768x477.png 768w, /wp-content/uploads/2018/05/word-image-3822-1024x635.png 1024w" sizes="(max-width: 1128px) 100vw, 1128px" /></p>
<p>
  ②绑定点击事件触发ajax
</p>
<p><img loading="lazy" decoding="async" width="924" height="676" src="/wp-content/uploads/2018/05/word-image-3823.png" class="wp-image-4285" srcset="/wp-content/uploads/2018/05/word-image-3823.png 924w, /wp-content/uploads/2018/05/word-image-3823-300x219.png 300w, /wp-content/uploads/2018/05/word-image-3823-768x562.png 768w" sizes="(max-width: 924px) 100vw, 924px" /></p>
<p>
  ③创建方法实现请求接口发送短信
</p>
<p><img loading="lazy" decoding="async" width="1090" height="673" src="/wp-content/uploads/2018/05/word-image-3824.png" class="wp-image-4286" srcset="/wp-content/uploads/2018/05/word-image-3824.png 1090w, /wp-content/uploads/2018/05/word-image-3824-300x185.png 300w, /wp-content/uploads/2018/05/word-image-3824-768x474.png 768w, /wp-content/uploads/2018/05/word-image-3824-1024x632.png 1024w" sizes="(max-width: 1090px) 100vw, 1090px" /><br />
<img loading="lazy" decoding="async" width="1048" height="343" src="/wp-content/uploads/2018/05/word-image-3825.png" class="wp-image-4287" srcset="/wp-content/uploads/2018/05/word-image-3825.png 1048w, /wp-content/uploads/2018/05/word-image-3825-300x98.png 300w, /wp-content/uploads/2018/05/word-image-3825-768x251.png 768w, /wp-content/uploads/2018/05/word-image-3825-1024x335.png 1024w" sizes="(max-width: 1048px) 100vw, 1048px" /></p>
<p>
  ④查看session中的内容
</p>
<p><img loading="lazy" decoding="async" width="881" height="334" src="/wp-content/uploads/2018/05/word-image-3826.png" class="wp-image-4288" srcset="/wp-content/uploads/2018/05/word-image-3826.png 881w, /wp-content/uploads/2018/05/word-image-3826-300x114.png 300w, /wp-content/uploads/2018/05/word-image-3826-768x291.png 768w" sizes="(max-width: 881px) 100vw, 881px" /><br />
<img loading="lazy" decoding="async" width="521" height="200" src="/wp-content/uploads/2018/05/word-image-3827.png" class="wp-image-4289" srcset="/wp-content/uploads/2018/05/word-image-3827.png 521w, /wp-content/uploads/2018/05/word-image-3827-300x115.png 300w" sizes="(max-width: 521px) 100vw, 521px" /></p>
<p>
  ⑤实现倒计时效果
</p>
<p><img loading="lazy" decoding="async" width="1066" height="707" src="/wp-content/uploads/2018/05/word-image-3828.png" class="wp-image-4290" srcset="/wp-content/uploads/2018/05/word-image-3828.png 1066w, /wp-content/uploads/2018/05/word-image-3828-300x199.png 300w, /wp-content/uploads/2018/05/word-image-3828-768x509.png 768w, /wp-content/uploads/2018/05/word-image-3828-1024x679.png 1024w" sizes="(max-width: 1066px) 100vw, 1066px" /><br />
<img loading="lazy" decoding="async" width="788" height="408" src="/wp-content/uploads/2018/05/word-image-3829.png" class="wp-image-4291" srcset="/wp-content/uploads/2018/05/word-image-3829.png 788w, /wp-content/uploads/2018/05/word-image-3829-300x155.png 300w, /wp-content/uploads/2018/05/word-image-3829-768x398.png 768w" sizes="(max-width: 788px) 100vw, 788px" /></p>
<h2>手机短信注册入库</h2>
<p>
  ①修改表结构
</p>
<p><img loading="lazy" decoding="async" width="783" height="386" src="/wp-content/uploads/2018/05/word-image-3830.png" class="wp-image-4292" srcset="/wp-content/uploads/2018/05/word-image-3830.png 783w, /wp-content/uploads/2018/05/word-image-3830-300x148.png 300w, /wp-content/uploads/2018/05/word-image-3830-768x379.png 768w" sizes="(max-width: 783px) 100vw, 783px" /></p>
<p>
  ②修改自定义模型中字段
</p>
<p><img loading="lazy" decoding="async" width="1018" height="429" src="/wp-content/uploads/2018/05/word-image-3831.png" class="wp-image-4293" srcset="/wp-content/uploads/2018/05/word-image-3831.png 1018w, /wp-content/uploads/2018/05/word-image-3831-300x126.png 300w, /wp-content/uploads/2018/05/word-image-3831-768x324.png 768w" sizes="(max-width: 1018px) 100vw, 1018px" /></p>
<p>
  ③实现注册入库
</p>
<p><img loading="lazy" decoding="async" width="1076" height="613" src="/wp-content/uploads/2018/05/word-image-3832.png" class="wp-image-4294" srcset="/wp-content/uploads/2018/05/word-image-3832.png 1076w, /wp-content/uploads/2018/05/word-image-3832-300x171.png 300w, /wp-content/uploads/2018/05/word-image-3832-768x438.png 768w, /wp-content/uploads/2018/05/word-image-3832-1024x583.png 1024w" sizes="(max-width: 1076px) 100vw, 1076px" /><br />
<img loading="lazy" decoding="async" width="1066" height="492" src="/wp-content/uploads/2018/05/word-image-3833.png" class="wp-image-4295" srcset="/wp-content/uploads/2018/05/word-image-3833.png 1066w, /wp-content/uploads/2018/05/word-image-3833-300x138.png 300w, /wp-content/uploads/2018/05/word-image-3833-768x354.png 768w, /wp-content/uploads/2018/05/word-image-3833-1024x473.png 1024w" sizes="(max-width: 1066px) 100vw, 1066px" /></p>
<p>
  注册后查看数据
</p>
<p><img loading="lazy" decoding="async" width="847" height="317" src="/wp-content/uploads/2018/05/word-image-3834.png" class="wp-image-4296" srcset="/wp-content/uploads/2018/05/word-image-3834.png 847w, /wp-content/uploads/2018/05/word-image-3834-300x112.png 300w, /wp-content/uploads/2018/05/word-image-3834-768x287.png 768w" sizes="(max-width: 847px) 100vw, 847px" /></p>
<h1>购物车下单</h1>
<h2>3.1、显示结算页</h2>
<p>
  ①修改购物车中的结算连接
</p>
<p><img loading="lazy" decoding="async" width="1071" height="487" src="/wp-content/uploads/2018/05/word-image-3835.png" class="wp-image-4297" srcset="/wp-content/uploads/2018/05/word-image-3835.png 1071w, /wp-content/uploads/2018/05/word-image-3835-300x136.png 300w, /wp-content/uploads/2018/05/word-image-3835-768x349.png 768w, /wp-content/uploads/2018/05/word-image-3835-1024x466.png 1024w" sizes="(max-width: 1071px) 100vw, 1071px" /></p>
<p>
  ②创建方法校验是否登录
</p>
<p><img loading="lazy" decoding="async" width="984" height="585" src="/wp-content/uploads/2018/05/word-image-3836.png" class="wp-image-4298" srcset="/wp-content/uploads/2018/05/word-image-3836.png 984w, /wp-content/uploads/2018/05/word-image-3836-300x178.png 300w, /wp-content/uploads/2018/05/word-image-3836-768x457.png 768w" sizes="(max-width: 984px) 100vw, 984px" /></p>
<p>
  ③创建Order控制器方法
</p>
<p><img loading="lazy" decoding="async" width="980" height="611" src="/wp-content/uploads/2018/05/word-image-3837.png" class="wp-image-4299" srcset="/wp-content/uploads/2018/05/word-image-3837.png 980w, /wp-content/uploads/2018/05/word-image-3837-300x187.png 300w, /wp-content/uploads/2018/05/word-image-3837-768x479.png 768w" sizes="(max-width: 980px) 100vw, 980px" /></p>
<p>
  ④处理模板显示数据
</p>
<p><img loading="lazy" decoding="async" width="1087" height="695" src="/wp-content/uploads/2018/05/word-image-3838.png" class="wp-image-4300" srcset="/wp-content/uploads/2018/05/word-image-3838.png 1087w, /wp-content/uploads/2018/05/word-image-3838-300x192.png 300w, /wp-content/uploads/2018/05/word-image-3838-768x491.png 768w, /wp-content/uploads/2018/05/word-image-3838-1024x655.png 1024w" sizes="(max-width: 1087px) 100vw, 1087px" /><br />
<img loading="lazy" decoding="async" width="1263" height="665" src="/wp-content/uploads/2018/05/word-image-3839.png" class="wp-image-4301" srcset="/wp-content/uploads/2018/05/word-image-3839.png 1263w, /wp-content/uploads/2018/05/word-image-3839-300x158.png 300w, /wp-content/uploads/2018/05/word-image-3839-768x404.png 768w, /wp-content/uploads/2018/05/word-image-3839-1024x539.png 1024w" sizes="(max-width: 1263px) 100vw, 1263px" /></p>
<h2>3.2、结算下单</h2>
<h3>3.2.1、数据表创建</h3>
<p>
  ①创建订单总表
</p>
<p>
  CREATE TABLE `shop_order` (
</p>
<p>
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
</p>
<p>
    `user_id` int(11) NOT NULL DEFAULT &#8216;0&#8217;,
</p>
<p>
    `tel` char(11) NOT NULL DEFAULT &#8221; COMMENT &#8216;联系电话&#8217;,
</p>
<p>
    `address` varchar(255) NOT NULL DEFAULT &#8221; COMMENT &#8216;收货人地址&#8217;,
</p>
<p>
    `shr` varchar(255) NOT NULL DEFAULT &#8221; COMMENT &#8216;收货人&#8217;,
</p>
<p>
    `total_price` decimal(10,2) NOT NULL DEFAULT &#8216;0.00&#8217; COMMENT &#8216;总价格&#8217;,
</p>
<p>
    `addtime` int(11) NOT NULL DEFAULT &#8216;0&#8217; COMMENT &#8216;下单时间&#8217;,
</p>
<p>
    `com` char(10) NOT NULL DEFAULT &#8221; COMMENT &#8216;快递公司的编号&#8217;,
</p>
<p>
    `no` varchar(255) NOT NULL DEFAULT &#8221; COMMENT &#8216;快递的运单号&#8217;,
</p>
<p>
    `status` tinyint(4) NOT NULL DEFAULT &#8216;0&#8217; COMMENT &#8216;订单的状态 0表示下单  1已支付 2、已发货&#8217;,
</p>
<p>
    PRIMARY KEY (`id`)
</p>
<p>
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
</p>
<p>
  ②创建订单详情表
</p>
<p>
  CREATE TABLE `shop_order_detail` (
</p>
<p>
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
</p>
<p>
    `order_id` int(11) NOT NULL DEFAULT &#8216;0&#8217; COMMENT &#8216;订单ID对应order表中的ID字段&#8217;,
</p>
<p>
    `goods_id` int(11) NOT NULL DEFAULT &#8216;0&#8217; COMMENT &#8216;商品ID&#8217;,
</p>
<p>
    `goods_attr_id` varchar(255) NOT NULL DEFAULT &#8221; COMMENT &#8216;商品属性值的ID组合&#8217;,
</p>
<p>
    `goods_count` int(11) NOT NULL DEFAULT &#8216;0&#8217; COMMENT &#8216;购买的数量&#8217;,
</p>
<p>
    PRIMARY KEY (`id`)
</p>
<p>
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
</p>
<h3>3.2.2、实现订单的入口</h3>
<p>
  ①修改表单提交
</p>
<p>
  处理提交的地址
</p>
<p><img loading="lazy" decoding="async" width="1061" height="388" src="/wp-content/uploads/2018/05/word-image-3840.png" class="wp-image-4302" srcset="/wp-content/uploads/2018/05/word-image-3840.png 1061w, /wp-content/uploads/2018/05/word-image-3840-300x110.png 300w, /wp-content/uploads/2018/05/word-image-3840-768x281.png 768w, /wp-content/uploads/2018/05/word-image-3840-1024x374.png 1024w" sizes="(max-width: 1061px) 100vw, 1061px" /></p>
<p>
  设置为表单提交
</p>
<p><img loading="lazy" decoding="async" width="1120" height="702" src="/wp-content/uploads/2018/05/word-image-3841.png" class="wp-image-4303" srcset="/wp-content/uploads/2018/05/word-image-3841.png 1120w, /wp-content/uploads/2018/05/word-image-3841-300x188.png 300w, /wp-content/uploads/2018/05/word-image-3841-768x481.png 768w, /wp-content/uploads/2018/05/word-image-3841-1024x642.png 1024w" sizes="(max-width: 1120px) 100vw, 1120px" /></p>
<p>
  ②创建方法实现订单数据入库功能
</p>
<p><img loading="lazy" decoding="async" width="910" height="613" src="/wp-content/uploads/2018/05/word-image-3842.png" class="wp-image-4304" srcset="/wp-content/uploads/2018/05/word-image-3842.png 910w, /wp-content/uploads/2018/05/word-image-3842-300x202.png 300w, /wp-content/uploads/2018/05/word-image-3842-768x517.png 768w" sizes="(max-width: 910px) 100vw, 910px" /></p>
<p>
  ③创建模型方法
</p>
<p><img loading="lazy" decoding="async" width="1092" height="679" src="/wp-content/uploads/2018/05/word-image-3843.png" class="wp-image-4305" srcset="/wp-content/uploads/2018/05/word-image-3843.png 1092w, /wp-content/uploads/2018/05/word-image-3843-300x187.png 300w, /wp-content/uploads/2018/05/word-image-3843-768x478.png 768w, /wp-content/uploads/2018/05/word-image-3843-1024x637.png 1024w" sizes="(max-width: 1092px) 100vw, 1092px" /><br />
<img loading="lazy" decoding="async" width="1065" height="547" src="/wp-content/uploads/2018/05/word-image-3844.png" class="wp-image-4306" srcset="/wp-content/uploads/2018/05/word-image-3844.png 1065w, /wp-content/uploads/2018/05/word-image-3844-300x154.png 300w, /wp-content/uploads/2018/05/word-image-3844-768x394.png 768w, /wp-content/uploads/2018/05/word-image-3844-1024x526.png 1024w" sizes="(max-width: 1065px) 100vw, 1065px" /><br />
<img loading="lazy" decoding="async" width="1079" height="267" src="/wp-content/uploads/2018/05/word-image-3845.png" class="wp-image-4307" srcset="/wp-content/uploads/2018/05/word-image-3845.png 1079w, /wp-content/uploads/2018/05/word-image-3845-300x74.png 300w, /wp-content/uploads/2018/05/word-image-3845-768x190.png 768w, /wp-content/uploads/2018/05/word-image-3845-1024x253.png 1024w" sizes="(max-width: 1079px) 100vw, 1079px" /></p>
<h1>面向接口编程</h1>
<h2>面向接口编程介绍</h2>
<p>
  当有多个子项目存在时，如果有业务逻辑需要修改，对应的每个子项目都需要进行代码的修改。此方式就会比较麻烦。考虑项目的扩展性。可以对每一个子项目按照MVC值保留 V与C。一旦涉及到数据操作。全部通过调用接口实现。对于接口组合到一起就是API项目
</p>
<p><img loading="lazy" decoding="async" width="840" height="452" src="/wp-content/uploads/2018/05/word-image-3846.png" class="wp-image-4308" srcset="/wp-content/uploads/2018/05/word-image-3846.png 840w, /wp-content/uploads/2018/05/word-image-3846-300x161.png 300w, /wp-content/uploads/2018/05/word-image-3846-768x413.png 768w" sizes="(max-width: 840px) 100vw, 840px" /></p>
<h2>接口项目部署</h2>
<p>
  ①下载TP5的源码
</p>
<p><img loading="lazy" decoding="async" width="910" height="507" src="/wp-content/uploads/2018/05/word-image-3847.png" class="wp-image-4309" srcset="/wp-content/uploads/2018/05/word-image-3847.png 910w, /wp-content/uploads/2018/05/word-image-3847-300x167.png 300w, /wp-content/uploads/2018/05/word-image-3847-768x428.png 768w" sizes="(max-width: 910px) 100vw, 910px" /></p>
<p>
  ②拷贝TP源码到项目目录下
</p>
<p><img loading="lazy" decoding="async" width="1043" height="507" src="/wp-content/uploads/2018/05/word-image-3848.png" class="wp-image-4310" srcset="/wp-content/uploads/2018/05/word-image-3848.png 1043w, /wp-content/uploads/2018/05/word-image-3848-300x146.png 300w, /wp-content/uploads/2018/05/word-image-3848-768x373.png 768w, /wp-content/uploads/2018/05/word-image-3848-1024x498.png 1024w" sizes="(max-width: 1043px) 100vw, 1043px" /></p>
<p>
  ③配置虚拟主机
</p>
<p><img loading="lazy" decoding="async" width="899" height="480" src="/wp-content/uploads/2018/05/word-image-3849.png" class="wp-image-4311" srcset="/wp-content/uploads/2018/05/word-image-3849.png 899w, /wp-content/uploads/2018/05/word-image-3849-300x160.png 300w, /wp-content/uploads/2018/05/word-image-3849-768x410.png 768w" sizes="(max-width: 899px) 100vw, 899px" /></p>
<p>
  ③设置host文件
</p>
<p><img loading="lazy" decoding="async" width="560" height="448" src="/wp-content/uploads/2018/05/word-image-3850.png" class="wp-image-4312" srcset="/wp-content/uploads/2018/05/word-image-3850.png 560w, /wp-content/uploads/2018/05/word-image-3850-300x240.png 300w" sizes="(max-width: 560px) 100vw, 560px" /></p>
<p>
  ④重启Apache访问测试
</p>
<p><img loading="lazy" decoding="async" width="960" height="496" src="/wp-content/uploads/2018/05/word-image-3851.png" class="wp-image-4313" srcset="/wp-content/uploads/2018/05/word-image-3851.png 960w, /wp-content/uploads/2018/05/word-image-3851-300x155.png 300w, /wp-content/uploads/2018/05/word-image-3851-768x397.png 768w" sizes="(max-width: 960px) 100vw, 960px" /></p>
]]></content:encoded>
					
					<wfw:commentRss>/%e5%90%8e%e5%8f%b0%e6%a1%86%e6%9e%b6/4240.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>面向对象（二）分页、 多态、 封装、 接口、 方法修饰符、 方法重写、 方法重载、 类常量、 继承</title>
		<link>/php/1759.html</link>
					<comments>/php/1759.html#respond</comments>
		
		<dc:creator><![CDATA[Mr.Lee]]></dc:creator>
		<pubDate>Fri, 18 May 2018 13:01:26 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[面向对象]]></category>
		<category><![CDATA[面向对象编程]]></category>
		<category><![CDATA[分页]]></category>
		<category><![CDATA[多态]]></category>
		<category><![CDATA[封装]]></category>
		<category><![CDATA[接口]]></category>
		<category><![CDATA[方法修饰符]]></category>
		<category><![CDATA[方法重写]]></category>
		<category><![CDATA[方法重载]]></category>
		<category><![CDATA[类常量]]></category>
		<category><![CDATA[继承]]></category>
		<guid isPermaLink="false">/?p=1759</guid>

					<description><![CDATA[面向对象（二） 多态 多种形态，多态分为两种，方法重写和方法重载，PHP不支持方法重载 方法重写 子类重写了父 [&#8230;]]]></description>
										<content:encoded><![CDATA[<h1>面向对象（二）</h1>
<h2>多态</h2>
<p>
  多种形态，多态分为两种，方法重写和方法重载，PHP不支持方法重载
</p>
<h3>方法重写</h3>
<p>
  子类重写了父类的同名方法
</p>
<p><img loading="lazy" decoding="async" width="849" height="364" src="/wp-content/uploads/2018/05/word-image-1540.png" class="wp-image-1761" srcset="/wp-content/uploads/2018/05/word-image-1540.png 849w, /wp-content/uploads/2018/05/word-image-1540-300x129.png 300w, /wp-content/uploads/2018/05/word-image-1540-768x329.png 768w" sizes="(max-width: 849px) 100vw, 849px" /></p>
<p>
  规则：
</p>
<ol>
<li>
  子类中的方法必须和父类中的方法同名
</li>
<li>
  子类可以拥有和父类不同数量的参数
</li>
</ol>
<p><img loading="lazy" decoding="async" width="1099" height="362" src="/wp-content/uploads/2018/05/word-image-1541.png" class="wp-image-1762" srcset="/wp-content/uploads/2018/05/word-image-1541.png 1099w, /wp-content/uploads/2018/05/word-image-1541-300x99.png 300w, /wp-content/uploads/2018/05/word-image-1541-768x253.png 768w, /wp-content/uploads/2018/05/word-image-1541-1024x337.png 1024w" sizes="(max-width: 1099px) 100vw, 1099px" /></p>
<ol>
<li>
  子类中覆盖的方法不能比父类中被覆盖的方法更加严格
</li>
</ol>
<p><img loading="lazy" decoding="async" width="1010" height="261" src="/wp-content/uploads/2018/05/word-image-1542.png" class="wp-image-1763" srcset="/wp-content/uploads/2018/05/word-image-1542.png 1010w, /wp-content/uploads/2018/05/word-image-1542-300x78.png 300w, /wp-content/uploads/2018/05/word-image-1542-768x198.png 768w" sizes="(max-width: 1010px) 100vw, 1010px" /></p>
<h3>方法重载</h3>
<p>
  通过参数的个数来区分不同的方法，PHP不支持。
</p>
<p><img loading="lazy" decoding="async" width="938" height="169" src="/wp-content/uploads/2018/05/word-image-1543.png" class="wp-image-1764" srcset="/wp-content/uploads/2018/05/word-image-1543.png 938w, /wp-content/uploads/2018/05/word-image-1543-300x54.png 300w, /wp-content/uploads/2018/05/word-image-1543-768x138.png 768w" sizes="(max-width: 938px) 100vw, 938px" /></p>
<h2>面向对象的三大特性</h2>
<ol>
<li>
  封装，通过访问修饰符来实现封装</p>
<ol>
<li>
    Public
  </li>
<li>
    Private
  </li>
<li>
    protected
  </li>
</ol>
</li>
<li>
  继承：子类继承了父类的属性和方法
</li>
<li>
  多态：多种形态</p>
<ol>
<li>
    方法重写
  </li>
<li>
    方法重载（PHP不支持）
  </li>
</ol>
</li>
</ol>
<h2>私有属性的继承和重写</h2>
<p>
  私有属性可以被继承，但是不能被重写
</p>
<p><img loading="lazy" decoding="async" width="688" height="273" src="/wp-content/uploads/2018/05/word-image-1544.png" class="wp-image-1765" srcset="/wp-content/uploads/2018/05/word-image-1544.png 688w, /wp-content/uploads/2018/05/word-image-1544-300x119.png 300w" sizes="(max-width: 688px) 100vw, 688px" /></p>
<p>
  思考如下例题
</p>
<p><img loading="lazy" decoding="async" width="745" height="280" src="/wp-content/uploads/2018/05/word-image-1545.png" class="wp-image-1766" srcset="/wp-content/uploads/2018/05/word-image-1545.png 745w, /wp-content/uploads/2018/05/word-image-1545-300x113.png 300w" sizes="(max-width: 745px) 100vw, 745px" /></p>
<h2>方法修饰符</h2>
<ol>
<li>
  static：静态的
</li>
<li>
  final：最终的
</li>
<li>
  abstract：抽象的
</li>
</ol>
<h2>static修饰符</h2>
<ol>
<li>
  static修饰属性叫静态属性，static修饰方法叫静态方法
</li>
<li>
  静态属性在加载类的时候分配空间（普通属性在实例化的时候分配空间）,所以不需要实例化就可以访问
</li>
<li>
  因为静态成员属于类，不属于某个对象，所以通过类名来调用静态成员</p>
<ol>
<li>
    类名::静态属性
  </li>
<li>
    类名::静态方法()
  </li>
</ol>
</li>
<li>
  静态成员在内存中就一份。
</li>
</ol>
<p><img loading="lazy" decoding="async" width="944" height="191" src="/wp-content/uploads/2018/05/word-image-1546.png" class="wp-image-1767" srcset="/wp-content/uploads/2018/05/word-image-1546.png 944w, /wp-content/uploads/2018/05/word-image-1546-300x61.png 300w, /wp-content/uploads/2018/05/word-image-1546-768x155.png 768w" sizes="(max-width: 944px) 100vw, 944px" /></p>
<p>
  多学一招： 由于普通方法在加载类的时候也加载了，所以也可以通过静态调用的方式来调用普通方法。
</p>
<p><img loading="lazy" decoding="async" width="1009" height="158" src="/wp-content/uploads/2018/05/word-image-1547.png" class="wp-image-1768" srcset="/wp-content/uploads/2018/05/word-image-1547.png 1009w, /wp-content/uploads/2018/05/word-image-1547-300x47.png 300w, /wp-content/uploads/2018/05/word-image-1547-768x120.png 768w" sizes="(max-width: 1009px) 100vw, 1009px" /></p>
<h3>静态成员可以被继承</h3>
<p><img loading="lazy" decoding="async" width="743" height="301" src="/wp-content/uploads/2018/05/word-image-1548.png" class="wp-image-1769" srcset="/wp-content/uploads/2018/05/word-image-1548.png 743w, /wp-content/uploads/2018/05/word-image-1548-300x122.png 300w" sizes="(max-width: 743px) 100vw, 743px" /></p>
<h3>静态延时绑定</h3>
<p>
  static也可以表示类名，表示调用当前访问的对象所属的类。
</p>
<p><img loading="lazy" decoding="async" width="771" height="469" src="/wp-content/uploads/2018/05/word-image-1549.png" class="wp-image-1770" srcset="/wp-content/uploads/2018/05/word-image-1549.png 771w, /wp-content/uploads/2018/05/word-image-1549-300x182.png 300w, /wp-content/uploads/2018/05/word-image-1549-768x467.png 768w" sizes="(max-width: 771px) 100vw, 771px" /></p>
<h2>self：当前类的名字</h2>
<p><img loading="lazy" decoding="async" width="727" height="396" src="/wp-content/uploads/2018/05/word-image-1550.png" class="wp-image-1771" srcset="/wp-content/uploads/2018/05/word-image-1550.png 727w, /wp-content/uploads/2018/05/word-image-1550-300x163.png 300w" sizes="(max-width: 727px) 100vw, 727px" /></p>
<h3>self总是表示当前类的名字</h3>
<p><img loading="lazy" decoding="async" width="626" height="204" src="/wp-content/uploads/2018/05/word-image-1551.png" class="wp-image-1772" srcset="/wp-content/uploads/2018/05/word-image-1551.png 626w, /wp-content/uploads/2018/05/word-image-1551-300x98.png 300w" sizes="(max-width: 626px) 100vw, 626px" /></p>
<h2>final修饰符</h2>
<p>
  final修饰的类不能被继承
</p>
<p><img loading="lazy" decoding="async" width="899" height="91" src="/wp-content/uploads/2018/05/word-image-1552.png" class="wp-image-1773" srcset="/wp-content/uploads/2018/05/word-image-1552.png 899w, /wp-content/uploads/2018/05/word-image-1552-300x30.png 300w, /wp-content/uploads/2018/05/word-image-1552-768x78.png 768w" sizes="(max-width: 899px) 100vw, 899px" /></p>
<p>
  final修饰的方法不能被重写
</p>
<p><img loading="lazy" decoding="async" width="824" height="172" src="/wp-content/uploads/2018/05/word-image-1553.png" class="wp-image-1774" srcset="/wp-content/uploads/2018/05/word-image-1553.png 824w, /wp-content/uploads/2018/05/word-image-1553-300x63.png 300w, /wp-content/uploads/2018/05/word-image-1553-768x160.png 768w" sizes="(max-width: 824px) 100vw, 824px" /></p>
<h2>abstract修饰符</h2>
<ol>
<li>
  abstract修饰的方法叫抽象方法，abstract修饰的类叫抽象类
</li>
<li>
  只有方法的声明，没有方法的实现称为抽象方法。
</li>
<li>
  一个类中只要只要有一个方法是抽象方法，这个类必须是抽象类
</li>
</ol>
<p><img loading="lazy" decoding="async" width="799" height="90" src="/wp-content/uploads/2018/05/word-image-1554.png" class="wp-image-1775" srcset="/wp-content/uploads/2018/05/word-image-1554.png 799w, /wp-content/uploads/2018/05/word-image-1554-300x34.png 300w, /wp-content/uploads/2018/05/word-image-1554-768x87.png 768w" sizes="(max-width: 799px) 100vw, 799px" /></p>
<ol>
<li>
  抽象类不可以被实例化，必须在子类中重新实现抽象方法
</li>
<li>
  抽象方法的作用：用来定义命名规范的。
</li>
</ol>
<p>
  &lt;?php
</p>
<p>
  //类中只要有一个方法是抽象的，这个类就是抽象类
</p>
<p>
  abstract class Goods {
</p>
<p>
  	protected $name;	//商品名
</p>
<p>
  	public function setName($name) {
</p>
<p>
  		$this-&gt;name=$name;
</p>
<p>
  	}
</p>
<p>
  	public abstract function show();	//只有方法的声明，没有方法的实现
</p>
<p>
  }
</p>
<p>
  //手机类继承商品类
</p>
<p>
  class Mobile extends Goods {
</p>
<p>
  	public function show() {	//实现父类的抽象方法
</p>
<p>
  		echo $this-&gt;name,'&lt;br&gt;&#8217;;
</p>
<p>
  	}
</p>
<p>
  }
</p>
<p>
  //图书类继承商品类
</p>
<p>
  class Book extends Goods {
</p>
<p>
  	public function show() {	//实现父类的抽象方法
</p>
<p>
  		echo &#8220;《{$this-&gt;name}》&lt;br&gt;&#8221;;
</p>
<p>
  	}
</p>
<p>
  }
</p>
<p>
  //测试
</p>
<p>
  header(&#8216;Content-Type:text/html;charset=utf-8&#8217;);
</p>
<p>
  $mobile=new Mobile();
</p>
<p>
  $mobile-&gt;setName(&#8216;iPhone7&#8217;);
</p>
<p>
  $mobile-&gt;show();
</p>
<p>
  $book=new Book();
</p>
<p>
  $book-&gt;setName(&#8216;PHP入门与精通&#8217;);
</p>
<p>
  $book-&gt;show();
</p>
<p><img loading="lazy" decoding="async" width="175" height="52" src="/wp-content/uploads/2018/05/word-image-1555.png" class="wp-image-1776" /></p>
<p>
  多学一招：类中一个抽象方法都没有也可以声明成抽象类。可以通过这种方法阻止类的实例化。
</p>
<p><img loading="lazy" decoding="async" width="591" height="148" src="/wp-content/uploads/2018/05/word-image-1556.png" class="wp-image-1777" srcset="/wp-content/uploads/2018/05/word-image-1556.png 591w, /wp-content/uploads/2018/05/word-image-1556-300x75.png 300w" sizes="(max-width: 591px) 100vw, 591px" /></p>
<h2>接口（interface）</h2>
<ol>
<li>
  如果一个类中所有的方法都是抽象方法，这个类就可以声明成接口。
</li>
<li>
  使用interface关键字声明接口
</li>
<li>
  接口中的抽象方法只能是public的，默认也是public。
</li>
<li>
  接口不能继承，而是实现接口（implements）
</li>
<li>
  abstract和final不能修饰接口中的抽象方法
</li>
<li>
  接口的作用也是用来定义命名规范
</li>
</ol>
<p><img loading="lazy" decoding="async" width="789" height="407" src="/wp-content/uploads/2018/05/word-image-1557.png" class="wp-image-1778" srcset="/wp-content/uploads/2018/05/word-image-1557.png 789w, /wp-content/uploads/2018/05/word-image-1557-300x155.png 300w, /wp-content/uploads/2018/05/word-image-1557-768x396.png 768w" sizes="(max-width: 789px) 100vw, 789px" /></p>
<h3>类不允许多重继承</h3>
<p>
  一个父类可以有多个子类
</p>
<p><img loading="lazy" decoding="async" width="803" height="227" src="/wp-content/uploads/2018/05/word-image-1558.png" class="wp-image-1779" srcset="/wp-content/uploads/2018/05/word-image-1558.png 803w, /wp-content/uploads/2018/05/word-image-1558-300x85.png 300w, /wp-content/uploads/2018/05/word-image-1558-768x217.png 768w" sizes="(max-width: 803px) 100vw, 803px" /></p>
<p>
  一个子类不能有多个父类（只有c++可以多重继承，其他语言都不允许多重继承。）
</p>
<p><img loading="lazy" decoding="async" width="732" height="169" src="/wp-content/uploads/2018/05/word-image-1559.png" class="wp-image-1780" srcset="/wp-content/uploads/2018/05/word-image-1559.png 732w, /wp-content/uploads/2018/05/word-image-1559-300x69.png 300w" sizes="(max-width: 732px) 100vw, 732px" /></p>
<p>
  多学一招：为什么很多语言不支持多重继承，因为多重继承容易产生二义性。
</p>
<h3>接口的多重实现</h3>
<p><img loading="lazy" decoding="async" width="966" height="429" src="/wp-content/uploads/2018/05/word-image-1560.png" class="wp-image-1781" srcset="/wp-content/uploads/2018/05/word-image-1560.png 966w, /wp-content/uploads/2018/05/word-image-1560-300x133.png 300w, /wp-content/uploads/2018/05/word-image-1560-768x341.png 768w" sizes="(max-width: 966px) 100vw, 966px" /></p>
<h3>继承类同时实现接口</h3>
<p>
  必须是先继承类再实现接口
</p>
<p><img loading="lazy" decoding="async" width="952" height="427" src="/wp-content/uploads/2018/05/word-image-1561.png" class="wp-image-1782" srcset="/wp-content/uploads/2018/05/word-image-1561.png 952w, /wp-content/uploads/2018/05/word-image-1561-300x135.png 300w, /wp-content/uploads/2018/05/word-image-1561-768x344.png 768w" sizes="(max-width: 952px) 100vw, 952px" /></p>
<h2>类常量</h2>
<p>
  常量也是加载代码的时候加载，所以也是通过类名来方法
</p>
<p>
  类常量用const声明
</p>
<p><img loading="lazy" decoding="async" width="716" height="167" src="/wp-content/uploads/2018/05/word-image-1562.png" class="wp-image-1783" srcset="/wp-content/uploads/2018/05/word-image-1562.png 716w, /wp-content/uploads/2018/05/word-image-1562-300x70.png 300w" sizes="(max-width: 716px) 100vw, 716px" /></p>
<p>
  const常量也可以放在接口中（接口中只能放抽象方法和常量）
</p>
<p><img loading="lazy" decoding="async" width="338" height="100" src="/wp-content/uploads/2018/05/word-image-1563.png" class="wp-image-1784" srcset="/wp-content/uploads/2018/05/word-image-1563.png 338w, /wp-content/uploads/2018/05/word-image-1563-300x89.png 300w" sizes="(max-width: 338px) 100vw, 338px" /></p>
<h2>参数约束</h2>
<ol>
<li>
  参数约束在PHP5.3以后才支持
</li>
<li>
  只能约束对象，不能约束基本类型
</li>
</ol>
<p><img loading="lazy" decoding="async" width="596" height="172" src="/wp-content/uploads/2018/05/word-image-1564.png" class="wp-image-1785" srcset="/wp-content/uploads/2018/05/word-image-1564.png 596w, /wp-content/uploads/2018/05/word-image-1564-300x87.png 300w" sizes="(max-width: 596px) 100vw, 596px" /></p>
<h2>父类可以指向子类的引用</h2>
<p>
  父类可以保存子类对象的地址
</p>
<p>
  &lt;?php
</p>
<p>
  class Person {
</p>
<p>
  }
</p>
<p>
  class Student extends Person {
</p>
<p>
  }
</p>
<p>
  class Employee extends Person {
</p>
<p>
  }
</p>
<p>
  function show(Person $obj) {
</p>
<p>
  }
</p>
<p>
  //测试
</p>
<p>
  show(new Student);
</p>
<p>
  show(new Employee);
</p>
<h2>分页功能</h2>
<p>
  知识点：select * from 表名 limit 起始位置，记录数
</p>
<p>
  起始位置从0开始。
</p>
<h3>分析：起始位置和页码的关系</h3>
<p>
  一页放10条记录（$pagesize=10）
</p>
<table>
<tr>
<td>
<p>
  页码（$pageno）
</p>
</td>
<td>
<p>
  SQL语句
</p>
</td>
</tr>
<tr>
<td>
<p>
  1
</p>
</td>
<td>
<p>
  select * from contents limit 0,10
</p>
</td>
</tr>
<tr>
<td>
<p>
  2
</p>
</td>
<td>
<p>
  select * from contents limit 10,10
</p>
</td>
</tr>
<tr>
<td>
<p>
  3
</p>
</td>
<td>
<p>
  select * from contents limit 20,10
</p>
</td>
</tr>
</table>
<p>
  推导公式：$startno(起始位置)=($pageno-1)*$pagesize;
</p>
<h3>分析：总共有多少页</h3>
<table>
<tr>
<td>
<p>
  记录数($rowcount)
</p>
</td>
<td>
<p>
  页面总数($pagecount)
</p>
</td>
</tr>
<tr>
<td>
<p>
  30
</p>
</td>
<td>
<p>
  3
</p>
</td>
</tr>
<tr>
<td>
<p>
  31
</p>
</td>
<td>
<p>
  4
</p>
</td>
</tr>
<tr>
<td>
<p>
  1
</p>
</td>
<td>
<p>
  1
</p>
</td>
</tr>
</table>
<p>
  推导公式：$pagecount=ceil($rowcount/$pagesize)
</p>
<h3>实现第一步：输出页码</h3>
<p>
  点击页码——获取页码——通过页码获取页码的内容
</p>
<p><img loading="lazy" decoding="async" width="706" height="31" src="/wp-content/uploads/2018/05/word-image-1565.png" class="wp-image-1786" srcset="/wp-content/uploads/2018/05/word-image-1565.png 706w, /wp-content/uploads/2018/05/word-image-1565-300x13.png 300w" sizes="(max-width: 706px) 100vw, 706px" /></p>
<p>
  代码实现
</p>
<p>
  //第一步：获取总记录数
</p>
<p>
  $sql=&#8221;select count(*) from contents where title=$titleid&#8221;;
</p>
<p>
  $rs=mysql_query($sql);
</p>
<p>
  $rows=mysql_fetch_row($rs);
</p>
<p>
  $rowcount=$rows[0];	//获取到总记录数
</p>
<p>
  //第二步：求得总页数
</p>
<p>
  $pagesize=10;		//页码大小
</p>
<p>
  $pagecount=ceil($rowcount/$pagesize);	//求得总页数
</p>
<p>
  在页码底部循环输出页码
</p>
<p>
  &lt;tr&gt;
</p>
<p>
  	&lt;td colspan=&#8217;3&#8242;&gt;
</p>
<p>
  	&lt;?php for($i=1;$i&lt;=$pagecount;$i++):?&gt;
</p>
<p>
  		&lt;?php if($pageno==$i):?&gt;
</p>
<p>
  			&lt;span class=&#8221;pageno&#8221;&gt;&lt;?php echo $i?&gt;&lt;/span&gt; &amp;nbsp;
</p>
<p>
  		&lt;?php else:?&gt;
</p>
<p>
  			&lt;a href=&#8221;?pageno=&lt;?php echo $i?&gt;&amp;titleid=&lt;?php echo $titleid?&gt;&#8221;&gt;&lt;?php echo $i?&gt;&lt;/a&gt;&amp;nbsp;
</p>
<p>
  		&lt;?php endif;?&gt;
</p>
</p>
<p>
  	&lt;?php endfor;?&gt;
</p>
<p>
  	&lt;a href=&#8221;?pageno=1&amp;titleid=&lt;?php echo $titleid?&gt;&#8221;&gt;【首页】&lt;/a&gt;
</p>
<p>
  	&lt;a href=&#8221;?pageno=&lt;?php echo $pageno-1?&gt;&amp;titleid=&lt;?php echo $titleid?&gt;&#8221;&gt;【上一页】&lt;/a&gt;
</p>
<p>
  	&lt;a href=&#8221;?pageno=&lt;?php echo $pageno+1?&gt;&amp;titleid=&lt;?php echo $titleid?&gt;&#8221;&gt;【下一页】&lt;/a&gt;
</p>
<p>
  	&lt;a href=&#8221;?pageno=&lt;?php echo $pagecount?&gt;&amp;titleid=&lt;?php echo $titleid?&gt;&#8221;&gt;【末页】&lt;/a&gt;
</p>
<p>
  	&lt;/td&gt;
</p>
<p>
  &lt;/tr&gt;
</p>
<h3>实现第二步：获取页码，并取出当前页面中的内容</h3>
<p>
  代码
</p>
<p>
  //第三步：获取当前页的内容
</p>
<p>
  $pageno=isset($_GET[&#8216;pageno&#8217;])?$_GET[&#8216;pageno&#8217;]:1;		//获取当前页码
</p>
<p>
  $pageno=$pageno&lt;1?1:$pageno;		//如果页码小于1，定位到第一页
</p>
<p>
  $pageno=$pageno&gt;$pagecount?$pagecount:$pageno; //页码大于总页数，定位到最后一页
</p>
<p>
  $startno=($pageno-1)*$pagesize;	//计算当前页的起始位置
</p>
<p>
  $sql=&#8221;select * from contents where title=$titleid limit {$startno},{$pagesize}&#8221;;
</p>
<p>
  $rs=mysql_query($sql);
</p>
<h3>完整代码</h3>
<p>
  &lt;!doctype html&gt;
</p>
<p>
  &lt;html&gt;
</p>
<p>
  &lt;head&gt;
</p>
<p>
  &lt;meta charset=&#8221;utf-8&#8243;&gt;
</p>
<p>
  &lt;title&gt;无标题文档&lt;/title&gt;
</p>
<p>
  &lt;style type=&#8221;text/css&#8221;&gt;
</p>
<p>
  	table{
</p>
<p>
  		width:980px;
</p>
<p>
  	}
</p>
<p>
  	table,td,th{
</p>
<p>
  		border:solid 1px #000;
</p>
<p>
  		margin:auto;
</p>
<p>
  		font-size:14px;
</p>
<p>
  	}
</p>
<p>
  	.pageno{
</p>
<p>
  		font-size:24px;
</p>
<p>
  		color:#FF0000;
</p>
<p>
  	}
</p>
<p>
  &lt;/style&gt;
</p>
<p>
  &lt;/head&gt;
</p>
<p>
  &lt;body&gt;
</p>
<p>
  &lt;?php
</p>
<p>
  //连接数据库
</p>
<p>
  mysql_connect(&#8216;localhost&#8217;,&#8217;root&#8217;,&#8217;root&#8217;) or die(&#8216;数据库连接失败&#8217;);
</p>
<p>
  mysql_select_db(&#8216;jokedb&#8217;);
</p>
<p>
  mysql_query(&#8216;set names utf8&#8217;);
</p>
<p>
  ?&gt;
</p>
<p>
  &lt;!&#8211;显示分类&#8211;&gt;
</p>
<p>
  &lt;?php
</p>
<p>
  	$rs=mysql_query(&#8216;select * from title&#8217;);
</p>
<p>
  ?&gt;
</p>
<p>
  &lt;table&gt;
</p>
<p>
  	&lt;tr&gt;
</p>
<p>
  	&lt;?php
</p>
<p>
  	$n=0;
</p>
<p>
  	while($rows=mysql_fetch_assoc($rs)):
</p>
<p>
  	?&gt;
</p>
<p>
  		&lt;td&gt;&lt;a href=&#8221;?titleid=&lt;?php echo $rows[&#8216;Id&#8217;]?&gt;&#8221;&gt;&lt;?php echo $rows[&#8216;Title&#8217;]?&gt;&lt;/a&gt;&lt;/td&gt;
</p>
<p>
  	&lt;?php
</p>
<p>
  		if(++$n%9==0)
</p>
<p>
  			echo &#8216;&lt;/tr&gt;&lt;tr&gt;&#8217;;
</p>
<p>
  	endwhile;
</p>
<p>
  	?&gt;
</p>
<p>
  	&lt;/tr&gt;
</p>
<p>
  &lt;/table&gt;
</p>
<p>
  &lt;!&#8211;显示内容&#8211;&gt;
</p>
<p>
  &lt;?php
</p>
<p>
  	$titleid=isset($_GET[&#8216;titleid&#8217;])?$_GET[&#8216;titleid&#8217;]:1;
</p>
<p>
  	//第一步：获取总记录数
</p>
<p>
  	$sql=&#8221;select count(*) from contents where title=$titleid&#8221;;
</p>
<p>
  	$rs=mysql_query($sql);
</p>
<p>
  	$rows=mysql_fetch_row($rs);
</p>
<p>
  	$rowcount=$rows[0];	//获取到总记录数
</p>
<p>
  	//第二步：求得总页数
</p>
<p>
  	$pagesize=10;		//页码大小
</p>
<p>
  	$pagecount=ceil($rowcount/$pagesize);	//求得总页数
</p>
<p>
  	//第三步：获取当前页的内容
</p>
<p>
  	$pageno=isset($_GET[&#8216;pageno&#8217;])?$_GET[&#8216;pageno&#8217;]:1;		//获取当前页码
</p>
<p>
  	$pageno=$pageno&lt;1?1:$pageno;		//如果页码小于1，定位到第一页
</p>
<p>
  	$pageno=$pageno&gt;$pagecount?$pagecount:$pageno; //页码大于总页数，定位到最后一页
</p>
<p>
  	$startno=($pageno-1)*$pagesize;	//计算当前页的起始位置
</p>
<p>
  	$sql=&#8221;select * from contents where title=$titleid limit {$startno},{$pagesize}&#8221;;
</p>
<p>
  	$rs=mysql_query($sql);
</p>
<p>
  ?&gt;
</p>
<p>
  &lt;table&gt;
</p>
<p>
  	&lt;tr&gt;
</p>
<p>
  		&lt;th&gt;编号&lt;/th&gt; &lt;th&gt;内容&lt;/th&gt; &lt;th&gt;作者&lt;/th&gt;
</p>
<p>
  	&lt;/tr&gt;
</p>
<p>
  	&lt;?php while($rows=mysql_fetch_assoc($rs)):?&gt;
</p>
<p>
  	&lt;tr&gt;
</p>
<p>
  		&lt;td&gt;&lt;?php echo $rows[&#8216;Id&#8217;]?&gt;&lt;/td&gt;
</p>
<p>
  		&lt;td&gt;&lt;?php echo $rows[&#8216;Contents&#8217;]?&gt;&lt;/td&gt;
</p>
<p>
  		&lt;td&gt;&lt;?php echo $rows[&#8216;Author&#8217;]?&gt;&lt;/td&gt;
</p>
<p>
  	&lt;/tr&gt;
</p>
<p>
  	&lt;?php endwhile;?&gt;
</p>
<p>
  &lt;!&#8211;输出页码&#8211;&gt;
</p>
<p>
  	&lt;tr&gt;
</p>
<p>
  		&lt;td colspan=&#8217;3&#8242;&gt;
</p>
<p>
  		&lt;?php for($i=1;$i&lt;=$pagecount;$i++):?&gt;
</p>
<p>
  			&lt;?php if($pageno==$i):?&gt;
</p>
<p>
  				&lt;span class=&#8221;pageno&#8221;&gt;&lt;?php echo $i?&gt;&lt;/span&gt; &amp;nbsp;
</p>
<p>
  			&lt;?php else:?&gt;
</p>
<p>
  				&lt;a href=&#8221;?pageno=&lt;?php echo $i?&gt;&amp;titleid=&lt;?php echo $titleid?&gt;&#8221;&gt;&lt;?php echo $i?&gt;&lt;/a&gt;&amp;nbsp;
</p>
<p>
  			&lt;?php endif;?&gt;
</p>
</p>
<p>
  		&lt;?php endfor;?&gt;
</p>
<p>
  		&lt;a href=&#8221;?pageno=1&amp;titleid=&lt;?php echo $titleid?&gt;&#8221;&gt;【首页】&lt;/a&gt;
</p>
<p>
  		&lt;a href=&#8221;?pageno=&lt;?php echo $pageno-1?&gt;&amp;titleid=&lt;?php echo $titleid?&gt;&#8221;&gt;【上一页】&lt;/a&gt;
</p>
<p>
  		&lt;a href=&#8221;?pageno=&lt;?php echo $pageno+1?&gt;&amp;titleid=&lt;?php echo $titleid?&gt;&#8221;&gt;【下一页】&lt;/a&gt;
</p>
<p>
  		&lt;a href=&#8221;?pageno=&lt;?php echo $pagecount?&gt;&amp;titleid=&lt;?php echo $titleid?&gt;&#8221;&gt;【末页】&lt;/a&gt;
</p>
<p>
  		&lt;/td&gt;
</p>
<p>
  	&lt;/tr&gt;
</p>
<p>
  &lt;/table&gt;
</p>
<p>
  &lt;/body&gt;
</p>
<p>
  &lt;/html&gt;
</p>
<p><img loading="lazy" decoding="async" width="1023" height="423" src="/wp-content/uploads/2018/05/word-image-1566.png" class="wp-image-1787" srcset="/wp-content/uploads/2018/05/word-image-1566.png 1023w, /wp-content/uploads/2018/05/word-image-1566-300x124.png 300w, /wp-content/uploads/2018/05/word-image-1566-768x318.png 768w" sizes="(max-width: 1023px) 100vw, 1023px" /></p>
]]></content:encoded>
					
					<wfw:commentRss>/php/1759.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
