PHP-基础

php基础

文件以.php后缀结尾,所有程序包含在 <?php ** 这里是代码 ** ?>

避免使用中文目录和中文文件名,php页面无法直接打开需要运行在服务器环境当中。

配置 php 文件,访问 https 加密网站

如何找到配置文件:

在后缀名 .php 的文件中加上:

  • phpinfo();
  • exit;

浏览器下访问:.php 后缀的文件

找到:Loaded Configuration File的路径,php.ini

找到 openssl,把 ‘;’ 去掉就可以访问 https

简单的php程序

1
2
3
4
5
6
<?php
// 用来指定编码集
header('Content-Type:text/html; charset=utf-8');
/*这是一个最简单的php程序*/
echo 'hello world!';
?>

JSONP 原理:浏览器的 XMLHTTPRequest 有域的限制,imgsrclinkhrefscriptsrc 没有域的限制,浏览器的安全机制。

在传统里没有标准的技术,利用了技术上的特性绕过了安全性的限制,就巧妙的使用 script ,就会得到请求资源返回的内容。

1
2
<script src="xx.php?callback=fn"></script>
<!-- 相当于返回了 fn(),变向的实现了跨域 -->

JSONP 突破了域的限制,没有突破安全限制。不能实现 post 跨域。跨域 JSONP 是主流。

变量

  1. 变量以$开头 字母/数字/下划线 不能以数字开头
  2. 大小写敏感(区分大小写)

(1)、声明一个变量$a并赋值为10

1
$a = 10;

(2)、输出一个变量$a

1
echo $a;

(3)、声明一个变量$b并赋值为10

1
$b = 10;

(4)、输出一个变量$b

1
echo $b;

输出顺序是自上向下的,相当于 js dcoument.write()

数据类型

字符型

1
$str = 'hello world!';

整型

1
$num = 10;

浮点型

1
$float = 10.5;

布尔型

1
$bool = true;

数组

JavaScript 数组定义方式 var arr = [1, 2, 3]。arr[0]、arr[1]、arr[1] 等;

PHP 是这样定义数组的

1
2
3
4
5
6
7
8
9
10
$arr = array(1, 2, 3); // 这种方式叫做**索引数组**
// echo $arr[0];
// echo $arr[2];
// 定义方式和Javascript有区别,但是访问方式是一样的
// var obj = {name: Hiraku, age: 10}
// PHP另一种定定数组的方式,所表达的意义和Javascript一样,
// 只是语法格式不一样
// 这种方式叫做**关联数组**
$arr1 = array('name'=>'Hiraku', 'age'=>10);
// echo $arr1['name'];

对象

1
2
3
4
5
6
7
8
9
10
// Javascript var obj = {name: Hirkau, age: 10}
// PHP需要先创建一个类,下面就是创建过程
class Person {
public $name = 'Hiraku';
public $age = 10;
}
$person = new Person;
// PHP访问一个对象属性的语法是不一样的
echo $person->name;
// obj['name']; obj.name 不行

NULL

PHP 中一种特殊的数据类型,表示空值,即表示没有为该变量设置任何值 null (空值)不区分大小写,nullNULL 是一样的。

单引号&双引号区别:

单引号内部的变量不会执行双引号会执行

1
2
3
4
$name = '小明';
echo 'name is $name'; //输出 name is $name
echo '<br>';
echo "name is $name"; //输出 name is 小明

索引数组、关联数组

运算符&内容输出

运算符

基本与Javascript语法一致,. 号表示字符串拼接符,JavaScript中为 +

内容输出

  • echo:输出简单数据类型,如字符串、数值
  • print_r():输出复杂数据类型,如数组
  • var_dump():输出详细信息,如对象、数组(了解)

函数

1
2
3
4
5
//函数名对大小写不敏感 默认参数(了解即可)
function sayHello($name='web developer') {
echo $name . '你好!';
}
sayHello();

分支,循环语句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/**
* 分支控制语句、循环语句 与Javascript一样
* foreach 数组遍历函数,类似Javascript中的 for in
*/
$name = 'Hiraku';
if($name == 'Hiraku') {
echo '我已经在' . $name . '学习';
} else {
echo '我还没有学习过编程';
}
$arr = array('Hiraku', '今年', '10岁了');// 索引数组
$length = count($arr);// PHP函数,计算数组的长度
for($i=0; $i<$length; $i++) { // 和Javascript是一样的
echo $arr[$i];
}
foreach($arr as $k=>$v) {
echo $k . '~~~' . $v;
};
$arr1 = array('name'=>'Hiraku', 'age'=>'10');// 关联数组
echo $arr1[0];// 验证关联数组不可以按索引下标来访问
foreach($arr1 as $key=>$val) {//PHP遍历一个关联数组
echo $key . '~~~' . $val;
}// 实际开发都是用foreach来遍历数组的

表单处理

  1. 表单 name 属性的是用来提供给服务端接收所传递数据而设置的
  2. 表单 action 属性设置接收数据的处理程序
  3. 表单 method 属性设置发送数据的方式
  4. 当上传文件是需要设置 enctype="multipart/form-data",且只能 post 方式!!!!
  5. $_GET接收 get 传值
  6. $_POST接收 post 传值
  7. $_FILES 接收文件上传

文件导入&&常用php函数

1
2
include '07.form.html'; // 第一种方法
require '07.form.php'; // 第二种方法
1
2
3
4
5
6
7
8
9
10
$array = array(
'username'=>'Hirkau',
'password'=>'123456'
);
echo '获取数组的长度:'.count($array);
echo '<br>';
echo '判断是否在数组中:'.in_array('Hirkau',$array);
echo '<br>';
echo '检测数组中是否存在key:'.array_key_exists('username',$array);
echo '<br>';

数据描述和例子

  • 必须有一个根元素
  • 不可有空格、不可以数字或.开头、大小写敏感
  • 不可交叉嵌套
  • 属性双引号(浏览器自动修正成双引号了)
  • 注释和HTML一样

虽然可以描述和传输复杂数据,但是其解析过于复杂并且体积较大,所以实现开发已经很少使用了。

xml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="UTF-8"?>
<root>
<arrayList>
<array>
<src>images/banner.jpg</src>
<newPirce>12.00</newPirce>
<oldPrice>30.00</oldPrice>
</array>
<array>
<src>images/banner.jpg</src>
<newPirce>12.00</newPirce>
<oldPrice>30.00</oldPrice>
</array>
</arrayList>
</root>

php 文件

1
2
3
4
5
6
7
8
<?php
header('Content-Type:text/xml;charset=utf-8');
/*以xml格式传输数据的时候要求响应内容格式是 text/xml*/
/*file_get_contents 获取文件内容*/
$xml = file_get_contents('01.xml');
/*输出xml内容*/
echo $xml;
?>

ajax 请求

1
2
3
4
5
6
7
8
9
10
11
var xhr = new XMLHttpRequest;
xhr.open('get','01.php');
xhr.send(null);
xhr.onreadystatechange = function(){
if(xhr.status == 200 && xhr.readyState == 4){
/*获取到XML格式内容 放回的是DOM对象 document*/
var xml = xhr.responseXML;
/*通过选着器可以获取到xml的数据*/
console.log(xml.querySelectorAll('array')[0].querySelector('src').innerHTML);
}
}

JSON

即JavaScript Object Notation,另一种轻量级的文本数据交换格式,独立于语言。

  • 数据在名称/值对中
  • 数据由逗号分隔(最后一个健/值对不能带逗号)
  • 花括号保存对象方括号保存数组
  • 使用双引号
1
2
3
4
[
{"src":"images/detail01.jpg","oldPrice":"10.12","newPrice":"130.00"},
{"src":"images/detail02.jpg","oldPrice":"1.00","newPrice":"11.00"},
]

JSON数据在不同语言进行传输时,类型为字符串,不同的语言各自也都对应有解析方法,需要解析完成后才能读取;

PHP解析方法

json_encode()、json_decode()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
header('Content-Type:text/html;charset=utf-8');
/*以json格式传输数据的时候要求响应内容格式是 application/json*/
/*注意也可以不设置 但是这遵循的一个规范*/
/*file_get_contents 获取文件内容*/
$json = file_get_contents('01.json');
/*输出json内容*/
echo $json;
echo '<br><br>';
$array = array(
array('src'=>'images/detail01.jpg','newPrice'=>'12.00','oldPrice'=>'455.00'),
array('src'=>'images/detail02.jpg','newPrice'=>'65.00','oldPrice'=>'878.00'),
array( 'src'=>'images/detail01.jpg','newPrice'=>'100.00','oldPrice'=>'1000.00')
);
/*将php数组转化成json字符*/
$json_array = json_encode($array);
echo $json_array;
echo '<br><br>';
/*将json字符转化成php数组*/
$array_json = json_decode($json_array);
echo $array_json;
echo '<br><br>';
?>

2、Javascript 解析方法

  • JSON对象 JSON.parse()、JSON.stringify();
  • JSON兼容处理json2.js
  • 总结:JSON体积小、解析方便且高效,在实际开发成为首选。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var xhr = new XMLHttpRequest;
xhr.open('get','01.php');
xhr.send(null);
xhr.onreadystatechange = function(){
if(xhr.status == 200 && xhr.readyState == 4){
/*获取仅仅是字符串*/
var text = xhr.responseText;
/*需要把字符串转化成JSON对象*/
var json_obj = JSON.parse(text);
console.log(json_obj);
/*我们也可以把JSON对象转化成字符串*/
var json_str = JSON.stringify(json_obj);
console.log(json_str);
}
}
感谢您的支持!