PHP编程从入门到实践 PDF 超清版

  • 更新时间:
  • 2178人关注
  • 点击下载

PHP编程从入门到实践》是一本关于PHP编程相关的电子书资源,介绍了关于PHP编程、PHP入门、PHP方面的内容,本书是由人民邮电出版社出版,格式为PDF,资源大小114 MB,于广编写,目前豆瓣、亚马逊、当当、京东等综合评分为:9.1分,一起来看下具体内容。

本书循序渐进、由浅入深地详细讲解了PHP语言开发的技术,并通过具体实例的实现过程演练了各个知识点的具体应用。全书共25章,分别为PHP开发初步、PHP基本语法、流程控制语句、函数是*神秘的武器、数组、操作字符串、使用PHP操作Web网页、使用会话管理技术、文件操作、实现图形图像处理、面向对象、正则表达式、程序错误调试、数据加密、MySQL数据库基础、使用PHP操作MySQL、操作其他数据库、PDO数据库抽象层、操作XML文件、使用Ajax技术、使用Smarty模板、使用ThinkPHP框架、使用PHP开发Android应用程序、信息管理项目—图书管理系统、网页游戏项目—开心斗地主。书中以“技术讲解”“范例演练”“技术解惑”贯穿全书,引领读者全面掌握PHP语言开发技术的精髓。

本书不但适用于PHP语言的初学者,也适用于有一定PHP基础的读者阅读,还可以作为大专院校相关专业或培训学校的教材。

编辑推荐

一本书包含3大板块的内容:基础、范例、综合实战。以“技术讲解”-“范例演练”-“技术解惑”-“课后练习”贯穿全书,帮助读者全面掌握PHP语言开发!

1.技术讲解:通过256个正文实例,循序渐进地讲解了PHP开发的多个知识点;

2.范例演练:通过学习512个拓展范例和2个综合实例,读者可以真正具备项目实战能力;

3.视频讲解:书中每一章有配套的教学视频,降低学习的难度,引导初学者快速入门;

4.技术解惑:破解学习难点,把容易混淆的概念单独讲解和剖析,帮助读者绕过学习中的陷阱;

5.QQ群 网站论坛实现答疑服务,形成互帮互学的朋友圈

网站论坛:读者答疑、学习辅导、PPT资源下载

目录

  • 第 1章 PHP开发初步 1
  • 第 2章 PHP基本语法 9
  • 第3章 流程控制语句 32
  • 第4章 函数是最神秘的武器 44
  • 默认参数 47
  • 第5章 数组 57
  • 数组 61
  • 整个数组 62
  • 进行求和 68
  • 多个数组 69
  • 一个元素 71
  • 第6章 操作字符串 73
  • 大写形式 78
  • 第7章 使用PHP操作Web网页 88
  • 表单程序 92
  • 编码与解码 102
  • 进行编码 102
  • 进行解码 103
  • 解码 103
  • 第8章 使用会话管理技术 105
  • 第9章 文件操作 119
  • 存在 120
  • 删除 131
  • 第 10章 实现图形图像处理 138
  • 椭圆形的填充 146
  • 第 11章 面向对象 153
  • 方法 158
  • 第 12章 正则表达式 169
  • 替换匹配 176
  • 函数eregi() 176
  • 函数preg match_all() 179
  • callback() 181
  • 第 13章 程序错误调试 184
  • 第 14章 数据加密 191
  • 第 15章 MySQL数据库基础 201
  • 数据库 205
  • 一个表 216
  • 备份和还原 218
  • 第 16章 使用PHP操作MySQL 220
  • 基本步骤 221
  • 数据库 222
  • 获取记录 225
  • mysql_fetch_object() 227
  • mysql_num_rows() 229
  • 数据 230
  • 记录 237
  • 第 17章 操作其他数据库 240
  • 数据库 241
  • 信息 242
  • 信息 244
  • SQL Server数据库 249
  • 第 18章 PDO数据库抽象层 257
  • 集中的下一行数据 259
  • 结果集中的所有行 260
  • 方法 262
  • prepare()和方法
  • execute() 265
  • 语句错误 267
  • 语句错误 268
  • 处理错误 270
  • 处理错误 271
  • 方法 272
  • 事务处理 273
  • 第 19章 操作XML文件 275
  • XML文件 276
  • XML文档 285
  • 属性 289
  • 第 20章 使用Ajax技术 293
  • 对象 298
  • 第 21章 使用Smarty模板 305
  • 带来什么 307
  • 第 22章 使用ThinkPHP框架 324
  • 第 23章 使用PHP开发Android
  • 应用程序 342
  • 第 24章 信息管理项目——
  • 图书管理系统 359
  • 第 25章 网页游戏项目——
  • 开心斗地主 372
     
展开阅读
精选笔记1:PHP编程 SSO详细介绍及简单实例

2小时49分钟前回答

PHP SSO详解

SSO有三种模式:①跨子域单点登陆②完全跨单点域登陆③站群共享身份认证

第一种模式很简单,只需要将Cookie的域设置成多个应用的根域即可

第二种方式,也很简单,就是将所以应用的认证地址更换成同一个认证地址,每次查看是否在认证中心登陆,如果登陆了,给调用应用发放一个加密令牌即可

第三种跨域,就是来回跳转来回验证token略有麻烦

配置目录结构

在服务器根目录下,新建三个项目目录:

|–/网站根目录/
|–|–/oa/
|–|–/bbs/
|–|–/blog/

在根目录下新建functions.PHP脚本文件,具体内容如下:

<?php

/**
 * 获取登陆token
 * @param string $url 获取token的地址
 * 2017-01-03T13:08:43+0800
 */
function getToken($url)
{
  $bool = isLogin();
  if ($bool) {
    // 如果登陆了跳转到本站首页
    header('location: index.php');
    exit();
  }

  // 否则没有登陆,去另一个站点看是否登陆
  header('location: '.$url);
}

// 校验令牌是否正确
function yzToken($domain)
{
  $url = isset($_GET['url']) ? $_GET['url'] : '';
  $username = isset($_GET['username']) ? $_GET['username'] : '';
  $token = isset($_GET['token']) ? $_GET['token'] : '';


  if (!empty($username) && !empty($token)) {
    $salt = 'taoip';
    $_token = md5($salt.$username);
    // 校验第三方站点过来时的token是否正确
    if ($_token == $token) {
      // 设置跳转过来的网站的Cookie
      setCook($username, $_token, $domain);
      header('location: index.php');
    }
  }

}

// 设置cookie
function setCook($username, $_password, $domain)
{
  // 校验成功,开始登陆
  setcookie('username', $username, time()+3600, '/', $domain);
  setcookie('token', $_password, time()+3600, '/', $domain);
  header('location: index.php');
}

// 判断是否登陆
function isLogin()
{
  $username = isset($_COOKIE['username']) ? $_COOKIE['username'] : '';
  $token = isset($_COOKIE['token']) ? $_COOKIE['token'] : '';
  $salt = 'taoip';

  $_token = md5($salt.$username);

  if ($token == $_token) {
    return true;
  } else {
    return false;
  }
}

?>

在oa项目目录下,新建index.php和login.php两个脚本文件

编辑index.php文件

<?php

// OA站点

// (1)开启Session会话
session_name('taoip');
session_start();
// (2)获取用户名和token进行校验
$username = isset($_COOKIE['username']) ? $_COOKIE['username'] : '';
$token = isset($_COOKIE['token']) ? $_COOKIE['token'] : '';

$salt = 'taoip';

$_token = md5($salt.$username);

if ($token != $_token) {
  header('location: login.php');
  exit();
}

echo "欢迎{$username}用户,访问OA站点";

?>

编辑login.php文件

<?php

// OA站点登陆系统
require '../functions.php';

// (2)验证
yzToken('taoip.cn');

// (1)判断是否登陆,登陆则跳转首页,未登录则去其他站点获取token
$url = isset($_GET['url']) ? $_GET['url'] : '';
if (empty($url)) {
  getToken('http://dengpeng.cc/login.php?url=http://oa.taoip.cn/login.php');
}

// (1)判断用户是否登陆
$bool = isLogin();
$url = isset($_GET['url']) ? $_GET['url'] : '';
if ($bool) {
  if (empty($url)) {
    header('location: index.php');
  } else {
    $username = isset($_COOKIE['username']) ? $_COOKIE['username'] : '';
    $token = isset($_COOKIE['token']) ? $_COOKIE['token'] : '';
    $lurl = $url.'?username='.$username.'&token='.$token;
    header('location: '.$lurl);
  }
}


if (!empty($_POST)) {
  $username = isset($_POST['username']) ? $_POST['username'] : '';
  $password = isset($_POST['password']) ? $_POST['password'] : '';

  // 从库中查询用户密码
  @$link = mysql_connect('localhost', 'root', '');
  mysql_query('use sso', $link);
  mysql_query('set names utf8', $link);
  $sql = "select * from users where username = '".$username."'";
  $user = mysql_fetch_assoc(mysql_query($sql, $link));

  // 校验
  $salt = 'taoip';
  $_password = md5($salt.$username);

  // var_dump($user['password'] == $_password);
  // print_r($user);exit();

  if ($user['password'] == $_password) {
    // 校验成功,开始登陆
    setcookie('username', $username, time()+3600, '/', 'taoip.cn');
    setcookie('token', $_password, time()+3600, '/', 'taoip.cn');
    // 如果URL没有值重定向到首页,否则重定向到URL页面
    if (empty($url)) {
      header('location: index.php');
    } else {
      header('location: '.$lurl);
    }
  }
}

?>

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="generator" content="Sublime Text 3114">
  <meta name="author" content="3@dengpeng.cc">
  <meta name="keywords" content="">
  <meta name="description" content="">
  <title>OA站点登陆系统</title>
</head>
<body>
  <div class="container">
    <h2>oa.taoip.cn站点登陆系统</h2>
    <form action="" method="post">
      <label for="">用户名</label>
      <input type="text" name="username">
      <br>
      <label for="">密码</label>
      <input type="text" name="password">
      <hr>
      <button type="submit">提交</button>
    </form>
  </div>
</body>
</html>

在bbs项目目录下,新建index.php和login.php两个脚本文件

编辑index.php文件

<?php
/**
 * @author DengPeng <3@dengpeng.cc>
 * @since 2017/01/03
 * @copyright copyright (c) 2017 zixue.it GPL
 * @license http://www.zixue.it/
 */

// BBS站点

// (1)开启Session会话
session_name('taoip');
session_start();
// (2)获取用户名和token进行校验
$username = isset($_COOKIE['username']) ? $_COOKIE['username'] : '';
$token = isset($_COOKIE['token']) ? $_COOKIE['token'] : '';

$salt = 'taoip';

$_token = md5($salt.$username);

if ($token != $_token) {
  header('location: login.php');
  exit();
}

echo "欢迎{$username}用户,访问BBS站点";

?>

编辑login.php文件

<?php
/**
 * @author DengPeng <3@dengpeng.cc>
 * @since 2017/01/03
 * @copyright copyright (c) 2017 zixue.it GPL
 * @license http://www.zixue.it/
 */

// BBS站点登陆系统
require '../functions.php';

// (2)验证
yzToken('taoip.cn');

// (1)判断是否登陆,登陆则跳转首页,未登录则去其他站点获取token
$url = isset($_GET['url']) ? $_GET['url'] : '';
if (empty($url)) {
  getToken('http://dengpeng.cc/login.php?url=http://bbs.taoip.cn/login.php');
}

// (1)判断用户是否登陆
$bool = isLogin();
$url = isset($_GET['url']) ? $_GET['url'] : '';
if ($bool) {
  if (empty($url)) {
    header('location: index.php');
  } else {
    $username = isset($_COOKIE['username']) ? $_COOKIE['username'] : '';
    $token = isset($_COOKIE['token']) ? $_COOKIE['token'] : '';
    $lurl = $url.'?username='.$username.'&token='.$token;
    header('location: '.$lurl);
  }
}


if (!empty($_POST)) {
  $username = isset($_POST['username']) ? $_POST['username'] : '';
  $password = isset($_POST['password']) ? $_POST['password'] : '';

  // 从库中查询用户密码
  @$link = mysql_connect('localhost', 'root', '');
  mysql_query('use sso', $link);
  mysql_query('set names utf8', $link);
  $sql = "select * from users where username = '".$username."'";
  $user = mysql_fetch_assoc(mysql_query($sql, $link));

  // 校验
  $salt = 'taoip';
  $_password = md5($salt.$username);

  // var_dump($user['password'] == $_password);
  // print_r($user);exit();

  if ($user['password'] == $_password) {
    // 校验成功,开始登陆
    setcookie('username', $username, time()+3600, '/', 'taoip.cn');
    setcookie('token', $_password, time()+3600, '/', 'taoip.cn');
    // 如果URL没有值重定向到首页,否则重定向到URL页面
    if (empty($url)) {
      header('location: index.php');
    } else {
      header('location: '.$lurl);
    }
  }
}

?>

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="generator" content="Sublime Text 3114">
  <meta name="author" content="3@dengpeng.cc">
  <meta name="keywords" content="">
  <meta name="description" content="">
  <title>BBS站点登陆系统</title>
</head>
<body>
  <div class="container">
    <h2>bbs.taoip.cn站点登陆系统</h2>
    <form action="" method="post">
      <label for="">用户名</label>
      <input type="text" name="username">
      <br>
      <label for="">密码</label>
      <input type="text" name="password">
      <hr>
      <button type="submit">提交</button>
    </form>
  </div>
</body>
</html>

在blog项目目录下,新建index.php和login.php两个脚本文件

编辑index.php文件

<?php
/**
 * @author DengPeng <3@dengpeng.cc>
 * @since 2017/01/03
 * @copyright copyright (c) 2017 zixue.it GPL
 * @license http://www.zixue.it/
 */

// blog站点

// (1)开启Session会话
session_name('taoip');
session_start();
// (2)获取用户名和token进行校验
$username = isset($_COOKIE['username']) ? $_COOKIE['username'] : '';
$token = isset($_COOKIE['token']) ? $_COOKIE['token'] : '';

$salt = 'taoip';

$_token = md5($salt.$username);

if ($token != $_token) {
  header('location: login.php');
  exit();
}

echo "欢迎{$username}用户,访问blog站点";

?>

<?php
/**
 * @author DengPeng <3@dengpeng.cc>
 * @since 2017/01/03
 * @copyright copyright (c) 2017 zixue.it GPL
 * @license http://www.zixue.it/
 */

// blog站点

// (1)开启Session会话
session_name('taoip');
session_start();
// (2)获取用户名和token进行校验
$username = isset($_COOKIE['username']) ? $_COOKIE['username'] : '';
$token = isset($_COOKIE['token']) ? $_COOKIE['token'] : '';

$salt = 'taoip';

$_token = md5($salt.$username);

if ($token != $_token) {
  header('location: login.php');
  exit();
}

echo "欢迎{$username}用户,访问blog站点";

?>

编辑login.php文件

<?php
/**
 * @author DengPeng <3@dengpeng.cc>
 * @since 2017/01/03
 * @copyright copyright (c) 2017 zixue.it GPL
 * @license http://www.zixue.it/
 */

// blog站点登陆系统
require '../functions.php';

// (2)验证
yzToken('dengpeng.cc');

// (1)判断是否登陆,登陆则跳转首页,未登录则去其他站点获取token
$url = isset($_GET['url']) ? $_GET['url'] : '';
if (empty($url)) {
  getToken('http://oa.taoip.cn/login.php?url=http://dengpeng.cc/login.php');
}


// (1)判断用户是否登陆
$bool = isLogin();
$url = isset($_GET['url']) ? $_GET['url'] : '';
if ($bool) {
  if (empty($url)) {
    header('location: index.php');
  } else {
    $username = isset($_COOKIE['username']) ? $_COOKIE['username'] : '';
    $token = isset($_COOKIE['token']) ? $_COOKIE['token'] : '';
    $lurl = $url.'?username='.$username.'&token='.$token;
    header('location: '.$lurl);
  }
}


// (3)判断用户是否提交数据
if (!empty($_POST)) {
  $username = isset($_POST['username']) ? $_POST['username'] : '';
  $password = isset($_POST['password']) ? $_POST['password'] : '';

  // 从库中查询用户密码
  @$link = mysql_connect('localhost', 'root', '');
  mysql_query('use sso', $link);
  mysql_query('set names utf8', $link);
  $sql = "select * from users where username = '".$username."'";
  $user = mysql_fetch_assoc(mysql_query($sql, $link));

  // 校验
  $salt = 'taoip';
  $_password = md5($salt.$username);

  // var_dump($user['password'] == $_password);
  // print_r($user);exit();

  if ($user['password'] == $_password) {
    setCook($username, $_password, 'dengpeng.cc');
    if (empty($url)) {
      header('location: index.php');
    } else {
      header('location: '.$lurl);
    }
  }
}

?>

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="generator" content="Sublime Text 3114">
  <meta name="author" content="3@dengpeng.cc">
  <meta name="keywords" content="">
  <meta name="description" content="">
  <title>blog站点登陆系统</title>
</head>
<body>
  <div class="container">
    <h2>dengpeng.cc站点登陆系统</h2>
    <form action="" method="post">
      <label for="">用户名</label>
      <input type="text" name="username">
      <br>
      <label for="">密码</label>
      <input type="text" name="password">
      <hr>
      <button type="submit">提交</button>
    </form>
  </div>
</body>
</html>

配置本地虚拟主机

具体配置步骤,我想大家应该都会了,不需要我一一赘述.你只需要按照我给的参照,配置和不同域名对应目录的映射即可.

域名 /项目目录/
oa.taoip.cn /oa/
bbs.taoip.cn /bbs/
dengpeng.cc /blog/

恭喜您,已经完成了一个简单的SSO系统

配置完成后,记得重启Web服务器.然后你只需要访问这三个不同的站点,即可实现一个站点登陆,其他站点不再发送登陆请求.

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

展开阅读

PHP编程相关资源

  • PHP核心技术与最佳实践

    PHP核心技术与最佳实践

    《PHP核心技术与最佳实践》系统归纳和深刻解读PHP开发中的编程思想、底层原理、核心技术、开发技巧、编码规范和**实践,为PHP程序员进阶修炼提供全面而高效的指导!

    大小:197.3 MBPHP编程

    立即下载
  • PHP7.0+MySQL网站开发全程实例

    PHP7.0+MySQL网站开发全程实例

    《 PHP7.0MySQL网站开发全程实例 》在XAMPP集成化自然环境下,应用Dreamweaver对PHP动态网站开发。《PHP7.0MySQL网站开发全程实例》以全程实例课堂教学为设计方案总体目标,从网站开发自然环境的配

    大小:165.8 MB网站设计

    立即下载
  • 深入理解php:高级技巧、面向对象与核心技术(第3版)

    深入理解php:高级技巧、面向对象与核心技术(第3版)

    本书是一本帮助中初级PHP程序员修炼成为高级PHP程序员的书,也是一本让PHP程序员能更快、更好地进行应用开发的书,是PHP领域经典,PHPer修炼必读书,包含大量实用案例,极具可操作性,欢迎下载阅读

    大小:76 MBphp

    立即下载
  • PHP5权威编程

    PHP5权威编程

    《PHP5权威编程》一书为大家全面介绍了PHP 5中的新功能、面向对象编程方法及设计模式,还分析阐述了PHP 5中新的数据库连接处理、错误处理和XML处理等机制。希望能够帮助读者系统了解、熟练掌握PHP,大程度地挖掘PHP的潜力,以更低的成本搭建更加稳健、高效的PHP应用。

    大小:25.3 MBPHP5

    立即下载
  • PHP开发实例大全:提高卷

    PHP开发实例大全:提高卷

    《PHP开发实例大全(提高卷)》600经典实例及源码分析 25个应用方向 两卷共1225例 40个方向 分门别类实例一应俱全 供学习、速查、实践练习的超全参考手册 php开发实战1200例 php范例大全 之全新

    大小:241.1 MBPHP开发

    立即下载

学习笔记

14小时54分钟前回答

php编程每天必学之验证码

本文为大家分享了php图片验证码的实现代码,分享给大家供大家参考,具体内容如下 1.验证码图片生成 captcha.php //1.生成100*30大小的图片,默认为黑色$image = imagecreatetruecolor(100,30);//创建白色底图$bgcolor = imagecolorallocate($image,255,255,255);//用白色填充黑色imagefill ($image,0,0,$bgcolor);//2.随机显示数字或字母$captch_code = "";for($i=0;$i4;$i++){ $fontsize=6; $fontcolor=imagecolorallocate($image,rand(0,120),rand(0,120),rand(0,120)); $data = "abcdefghijkmnpqrstuvwxy3456789"; $fontcontent =substr($data,rand(0,strlen($data)),1); $captch_code .=$fontcontent; $x = ($i*100/4)+rand(5,10); $y = rand(5,10); imagestring($image, $fontsize, $x, $y, $fontcontent,$fontcolor);}$_SESSION["authcode"] = $captch_code;//3.增加干扰……

19小时14分钟前回答

php函数式编程简单示例

本文实例讲述了php函数式编程。分享给大家供大家参考,具体如下: // 函数式编程$users = array( array('id' = 1, 'name' = 'abc1', 'age' = 29, '性别' = '男'), array('id' = 2, 'name' = 'abc2', 'age' = 21, '性别' = '女'), array('id' = 3, 'name' = 'abc3', 'age' = 23, '性别' = '男'), array('id' = 4, 'name' = 'abc4', 'age' = 25, '性别' = '女'), array('id' = 5, 'name' = 'abc5', 'age' = 20, '性别' = '女'), array('id' = 6, 'name' = 'abc6', 'age' = 24, '性别' = '男'), array('id' = 7, 'name' = 'abc7', 'age' = 28, '性别' = '女'), array('id' = 8, 'name' = 'abc8', 'age' = 27, '性别' = '男'),);//获取性别为女的用户$arrayFilter = array_filter($users, function($item){ return $item['性别'] == '女' ;});// 不影响原数组,返回一个新数组……