PHP入门

第1章 PHP语言介绍

1.什么是PHP

1.外文名PHP:Hypertext Preprocessor,中文名:“超文本预处理器”是一种通用开源脚本语言。
2.语法吸收了C语言、java和Perl的特点,利于学习,使用广泛,主要适用于web开发领域。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
3.PHP入门简单,学习入门易入手。

2.什么是静态页面和动态页面

1.页面信息发布后内容固定不变,没有交互,常见以HTML结尾的就是静态页面,比如新闻发布网站。
2.页面有交互,需要去数据库里取数据再返回给用户的就是动态页面。

3.HTTP请求方法

4.HTTP常见状态码

4.用户访问网站的流程

1.用户输入域名->浏览器跳转->浏览器缓存->Hosts 文件->DNS 解析( 递归查询 | 迭代查询 )
客户端向服务端发起查询->递归查询
服务端向服务端发起查询->迭代查询
2.由浏览器向服务端发起 TCP 连接(三次握手)
客户端 -->请求包连接-syn=1 seq=x 服务端
服务端 -->向应客户端 syn=1 ack=x+1 seq=y 客户端
客户端 -->建立连接 ack=y+1 seq=x+1 服务端
3.客户端发起 http 请求:
1.请求的方法是什么: Get 获取
2.请求的 Host 主机是: www.oldboyedu.com
3.请求的资源是什么: /index.html
4.请求的端口是什么: 默认 http 是 80 https 443
5.请求携带的参数是: 属性(请求的类型、压缩、认证、浏览器信息、等等)
6.请求最后的空行
4.服务端响应的内容是
1.服务端响应使用的 WEB 服务软件
2.服务端响应请求文件的类型
3.服务端响应请求的文件是否进行压缩
4.服务端响应请求的主机是否进行长连接
5.客户端向服务端发起 TCP 断开(四次挥手)
客户端 --> 断开请求 fin=1 seq=x --> 服务端
服务端 --> 响应断开 fin=1 ack=x+1 seq=y --> 客户端
服务端 --> 断开连接 fin=1 ack=x+1 seq=z --> 客户端
客户端 --> 确认断开 fin=1 ack=z+1 seq=sj --> 服务端

第2章 PHP安装部署

1.集成环境phpstudy安装

官方网站:

http://www.phpstudy.net/

2.代码工具PHPstorm安装

安装参考网站:

https://www.jetbrains.com/phpstorm

破解:

https://www.bilibili.com/read/cv7319471/

第3章 PHP基本语法

1.PHP基本函数

编写info.php页面,代码如下

<?php
  phpinfo();
?>

在浏览器输入你的IP地址然后访问,如果出现以下页面则表示PHP工作正常。

代码解释:

1.phpinfo是一个函数(功能),这个函数会显示一个当前电脑(服务器)的详细的PHP信息。
2.电脑是一个很笨的东西,需要我们人为的告诉他,代码写完了。我们用分号(;)来告诉他代码写完了。因此只要写完一段代码,就需要在后面加分号。
3.而前后两行的回车空行,是为了让代码更加好看,避免叠在一起,看着不舒服。其实中间有多少个回车空行都没有关系的,保证好看就行了。PHP的语法解释器(PHP最核心部分)不会处理这些空行的。

代码编写注意:

1.PHP的代码信息全部要用半角的英文、很多人容易写成全角的英文/中文和符号造成PHP代码报错。
2.PHP代码的最后一行可以加也可不加分号。由于很多学习者特别是初学者经常犯一个毛病,写完一行代码不加分号,因此容易犯错,某些公司规定一行代码写完,就必须加分号。
3.我们在写文件test.php这个文件命名的时候,只要英文半角(a-z A-Z 0-9 _-)这些字符来命名文件,文件命名不要用中文,不要用特殊符号,不要中间加空格,严格区分大小。

2.PHP变量与常量

2.1 变量

创建test01.php并写入以下代码:

<?php
  $iphone12 = 5880;
  $iphone12mini = 6088;
  echo $iphone12 + $iphone12mini;  //echo是在PHP里面最常用的一个输出、显示功能的命令
?>

变量的命名注意:

1.必须要以$开始,如变量x必须要写成$x
2.变量的首字母不能以数字开始
3.变量的名字区分大小写
4.变量不要用特殊符号、中文,_不算特殊符号
5.变量命名要有意义(别写xxx,aaa,ccc)这种变量名

变量的分类:

可变变量
外部变量
环境变量

2.2 可变变量

<?php
  header('Content-type:text/html;charset=utf-8'); // 服务器读取的  编码设置
  $son_name = 'father_name'; //定义了一个变量"儿子的姓",值是"爸爸的姓"。
  $father_name = 'zhang';  //定义了一个变量"爸爸的姓",值是"zhang"。
  echo $$son_name; //输出儿子姓什么,儿子跟随爸爸的姓。
?>

2.3 外部变量

html代码:

<html>
<body>
<!-- 这一行method 对应的值改为post --->
<form action="bianliang.php" method="post">
    <input type="text" name="username"/>
    <input type="password" name="pwd"/>
    <input type="submit" name="提交"/>
</form>
</body>
</html>

php代码:

<?php
  header('Content-type:text/html;charset=utf-8');
  //$_POST[‘username’],将username作为字符串放在中括号里面,就得到了表单里面的<input type=”text”name=”username”/>的值
  $user = $_POST['username'];
  echo $u.'<br />';
  //$_POST[‘pwd’],将pwd作为字符串放在中括号里面,就得到了表单里面的<input type=”text”name=”pwd”/>的值
  $passwd = $_POST['pwd'];
  echo '用户名:'.$user.'<br>';
  echo '密码:'.$passwd.'<br>';
?>

2.4 环境变量

<?php
  echo '请求方法: '.$_SERVER["REQUEST_METHOD"].'<br>';
  echo '请求的URI: '.$_SERVER["REQUEST_URI"].'<br>';
  echo '服务程序: '.$_SERVER["SERVER_SOFTWARE"].'<br>';
  echo '客户端IP: '.$_SERVER["REMOTE_ADDR"].'<br>';
  echo '服务端IP: '.$_SERVER["SERVER_ADDR"].'<br>';
  echo '文件路径: '.$_SERVER["SCRIPT_FILENAME"].'<br>';
  echo '浏览器类型: '.$_SERVER["HTTP_USER_AGENT"].'<br>';
  echo '跳转页面: '.$_SERVER["HTTP_REFERER"].'<br>';
  echo '当前时间: '.$_SERVER["REQUEST_TIME"].'<br>';
?>

2.5 常量

格式说明:

常量就是长久不变的值,常量在代码中的定义,以及书写方式如下所示:
define(常量名, 常量值)

格式注意:

1.常量名可以小写,但是通常大写
2.常量名可以不加引号,但是通常加上引号
3.在字符串中调用常量的时候,必须在引号外面
4.常量名建议只用字母和下划线

实验代码:

<?php
define('MY_NAME','PHP中文网');
echo MY_NAME;
//下面是错误的调用方式
echo '我的名字是MY_NAME';
//下面是正确的调用方式
echo '我的名字是'.MY_NAME;

3.PHP注释信息

3.1 什么是注释

1.因为代码是英文的,并且代码很长,时间长了人会忘了代码的意思作用,所以可以加上注释进行说明提示。
2.对重点进行标注
3.可以让其他人更容易看懂配置信息
4.拥有注释、空行、回车之后的代码看起来更优美
5.注释可用来排错,不确定代码中哪一块写错了,可以将一大段注释掉,确定错误区域。
6.注释中的部分的内容,电脑不会执行它

3.2 单行注释

<?php
  //声明异步iphone12手机的价格变量
  $iphone12 = 6000;
  //显示输出收集价格
  echo $iphone12; 
?>

3.3 多行注释

<?php
  /*
  作者:PHP中文网
  时间:2020.01.01
  功能:这是一个多行注释例子
  */
?>

4.PHP数据类型

4.1 什么是数据类型

数据类型就是对数据分类的一种划分方式而已,例如以下举例说明:
哺乳动物:人、猫、马、鸭嘴兽…等等
蔬菜类型:西红柿、菠菜、茄子…等等
水果类型:西瓜、桃子、苹果…等等

4.2 PHP中的数据类型

序号 数据类型 数据类型描述
1 boolean(布尔类型) 布尔型是简单的数据类型,只有两个值false(假)和true(真)
2 string(字符串型) 字符串就是连续的字符序列,如echo“string”
3 integer(整形) 整形数据类型只能包含整数,这些数据类型可以是负数或者整数
4 float/double(浮点型) 浮点类型用于存储数字,和整形不同的是浮点型可以有小数点
5 array(数组类型) 一组相同类型的集合
6 object(对象类型) 对象是一个实例,使用new命令创建一个对象
7 resource(资源型) 资源是一种特殊的变量,保存在外部资源的一个应用,资源是通过函数来进行建立的
8 null(空白) 特殊的值,表示变量没有值,任何变量的初始值都是null

4.3 整数类型

整形表示即为整数,英文称之为integer,英文简写为int;
整形分为8进制、10进制、16进制,整形在计算机里面是有最大值和最小值范围的。
大家经常听说32位计算机,也就是32位计算机一次运算处理的最大范围是-2的32次方到2的32次方-1;
而64位计算机,就是一次运算处理的最大范围是-2的64次方到2的64次方-1。

4.4 布尔类型

布尔类型解释:

所谓布尔类型,汉语翻译过来之后,更好的解释是用道家中易经的语言进行解释,即为:阴/阳,男/女,真/假,对/错,存在/不存在,0/1等等。

举例说明:

<?php
  $buer=true;  //声明一个变量(拼音)为布尔类型
  $bool=false;  //声明一个变量(英文)为布尔类型
?>

4.5 字符串类型

字符串类型说明:

在PHP语言中声明字符串有三种方式:
1.用单引号声明
2.用双引号声明
3.用字界符声明

单引号举例:

<?php
  $zifu='万事开头难,然后中间难,最后结尾难';
  echo $zifu;
?>

双引号举例:

<?php
  $str="努力了这么久,但凡有点儿天赋,也该有些成功迹象了";
  echo $str;
?>

字界符举例:

<?php
$dingjie = <<<ABC
  那天班长说要和我<font size="20">试试!</font><br>
我说<small>可以。</small><br>
  我一说,<br>
他<font size="20" color="#ff7f50">啪</font>就站起来了,<font size="20" color="#6495ed"><i>很快啊!</i></font><br>
我大意了啊,没有闪。<br>
他忙说对不起对不起,我不懂规矩啊,他说他是<font size="8"><del>故意</del></font> 乱打的。<br>
他可不是乱打的啊,铮铮鞭腿左刺拳训练有素,后来他说他练过醉拳,看来是有备而来。<br>
这个年轻人,<font size="20">不讲武德!</font><br>
来偷袭!我这个<font size="18" color="#dc143c">29岁的老同志。</font>  <br>
这好吗?这不好。 <br>
我劝这位年轻人, <br>
<font size="10" color="#ff7f50">好自为之!好好反思! </font> <br>
以后不要再犯这样的小聪明。 <br>
ABC;
echo $dingjie
?>

单引号和双引号的区别

1.双引号解析变量,但是单引号不解析变量
2.在双引号里面插入变量,变量后面如果有英文或中文字符,会把这个字符和变量拼起来,视为一整个变量。一定要在变量后面接上特殊字符,例如空格等分开。
3.如果在双引号里面插变量的时候,后面不想有空格,可以拿大括号将变量包起来。
4.双引号解析转义字符,单引号不解析转义字符。但是单引号能解析\
5.单引号效率高于双引号,尽可能使用单引号
6.双引号和单引号可以互相嵌套,双引号中可以插入单引号,单引号当中插入变量,这个变量会被解析。
7.神奇的字符串拼接胶水——(.)点,用来拼接字符串。
8.一般将定界符声明字符串视为双引号一样的功能来看待。

4.6 浮点类型

<?php
  $fudian=12121.3232;
  echo $fudian;
?>

4.7 数据类型的查看

查看数据类型:

gettype(传入一个变量)输出变量的类型
var_dump(传入一个变量)输出变量类型和值

举例:

<?php
  $float = 88.8;
  $type = gettype($float);
  echo $type;

  $str = '你喜欢男人还是喜欢女人';
  $type = var_dump($str);
  echo $type;
?>

4.8 数据类型的判断

判断数据类型说明:

使用is_*系列函数,is_types这一系列的函数,来进行判断某个数据属于哪种类型,如果是这个类型返回真,不是这个类型返回假。
序号 判断函数 函数判断描述
1 is_int 判断是否为整数数据类型
2 is_bool 判断是否为布尔数据类型
3 is_float 判断是否是浮点数据类型
4 is_string 判断是否是字符串数据类型
5 is_array 判断是否是数组数据类型
6 is_object 判断是否是对象数据类型
7 is_null 判断数据信息是否为空
8 is_resource 判断是否为资源数据类型
9 is_scalar 判断是否为标量
10 is_numeric 判断是否为数值类型
11 is_callable 判断是否为函数

举例:

<?php
  //is_*系列函数有个特点,就是如果是这个类型的返回的值为真,不是这个数据类型就返回的是假
  //声明类型为假
  $fo = false;
  if (is_bool($fo)) {
      echo '执行真区间';
  }else{
      echo '执行假区间';
  }
  echo "<br />";
  
  //检查未声明的变量$p是否为空,为空就执行真区间
  if(is_null($p)) {
      echo '执行真区间';
  }else{
      echo '执行假区间';
  }
  echo "<br />";
  
  //字符串类型的数值,检查执行的真还是假
  $str = '18.8';
  if(is_numeric($str)) {
      echo '执行真区间';
  }else{
      echo '执行假区间';
  }
  echo "<br />";
  
  //把sca的值换为整数 浮点 布尔和字符串试试
  $sca = true;
  if(is_scalar($sca)) {
      echo '执行真区间';
  }else{
      echo '执行假区间';
  }
  echo "<br />";
  
  //换成echo,is_int试试,为什么echo执行假区间呢?
  if(is_callable('var_dump')) {
      echo '执行真区间';
  }else{
      echo '执行假区间';
  }
  echo "<br />";
?>

5.PHP算数运算

5.1 运算符号说明

符号信息 说明 举例说明
+ 表示相加符号 $x+$y
- 表示相减符号 $x-$y
* 表示相乘符号 $x*$y
/ 表示相除符号 $x/$y
% 表示取余或取模符号 $x%$y

举例:

<?php
  $x=5;
  $y=6;
  echo $x+$y;
?>

5.2 自加自减运算

符号信息 说明
$x++ 表示先赋值后累加运算
$x-- 表示先赋值后求差运算
++$x 表示先累加运算后赋值
--$x 表示先求差运算后赋值

举例:

<?php
  $x=10;
  echo ++$x; // 输出11
  echo $y;

  $y=10;
  echo $y++; // 输出10
  echo $y;
?>

5.3 比较运算符

符号信息 说明
> 表示大于符号
< 表示小于符号
>= 表示大于等于符号
<= 表示小于等于符号
== 表示等于符号
!= 表示不等于符号
=== 表示全等(判断类型等于)
!== 表示全不等(判断类型不等于)

举例:

<?php
  $x=5;
  $y=6;
  //因为5大于6不成立,所以为错的,即为false执行了假区间
  if($x > $y){
      echo '变量x大于变量y 成立';
  }else{
      echo '变量x大于变量y 不成立';
  }
?>

5.4 逻辑运算符

符号信息 说明 举例说明
逻辑与(并且关系) $x和$y都为真则返回为真 $x and $y $x && $y
逻辑或(或者关系) $x和$y均为false为真,其它情况全为真 $x or $y $x || $y
逻辑非 取反,即true变为false,false变为true !$x
逻辑异或 相同取false,相异为true

举例:

<?php
  $x=true;
  $y=false;
  //逻辑与(并且),要求两个都为true才能执行真区间,所以代码中执行假区间
  if($x && $y) {
      echo '执行了真区间';
  }else{
      echo '执行了假区间';
  }
?>

5.5 三元运算符

符号信息 说明
$x?真代码段:假代码段 判断是否为真假?真情况:假情况
``反引号 反引号中间插入代码,执行系统命令,等价于shell_exec函数
@ 表示抑制错误,把这一行的错误不让它显示出来了,效率低不建议用
=> 数组下标访问符
-> 对象访问符
instanceof 判断某个对象是否来自某个类,如果是的返回true,如果不是返回false

举例:

<?php
  $x=true;
  $x?$y=5:$y=6;
  //输出5
  echo $y;
?>
  
<?php
  echo '<pre>';
  echo `ipconfig`;
  echo '</pre>';
?>

6.PHP流程控制

6.1 if条件

语法:

if 语句用于在指定条件为 true 时执行代码。
if (条件) {
  当条件为 true 时执行的代码;
}

举例:

<?php
  $sex = 'boy';
  if($sex = 'boy' ){
      echo '男孩子在外面要保护好自己';
  }
?>

6.2 if-else

语法:

if (条件) {
  条件为 true 时执行的代码;
} else {
  条件为 false 时执行的代码;
}

说明:

<?php
  $sex = 'boy';
  if($sex = 'boy' ){
      echo '男孩子在外面要保护好自己';
  }else{
      echo '不要相信男人说的话';
  }
?>

6.3 if-elseif

语法:

if (条件) {
  条件为 true 时执行的代码;
} elseif (condition) {
  条件为 true 时执行的代码;
} else {
  条件为 false 时执行的代码;
}

举例:

<?php
  $dida = rand(0,23);
  echo "当前时间为 $dida 点\n";
  if($dida > 6 && $dida < 10 ){
      echo '豆浆油条';
  }elseif ($dida > 10 && $dida < 14){
      echo '吃兰州拉面';
  }elseif ($dida >= 14 && $dida < 22){
      echo '正规按摩';
  }elseif ($dida > 22 && $dida <=23){
      echo '打打游戏';
  }elseif ($dida >=1 && $dida <3){
      echo '吃吃夜宵';
  }else{
      echo '睡觉或者工作中';
  }
?>

6.3 switch选择

语法:

<?php
switch(变量){ 
   case 具体值1:
      执行代码1;
      break;
   case 具体值2:
      执行代码2;
      break;
   case 具体值3:
      执行代码3;
      break;
      defult:
}
?>

举例:

<?php
$tool=rand(1,6);
switch($tool){
    case 1:
        echo '司机开车';
        break;
    case 2:
        echo '民航';
        break;
    case 3:
        echo '自己家的专机';
        break;
    case 4:
        echo '火车动车';
        break;
    case 5:
        echo '骑马';
        break;
    case 6:
        echo '游轮';
        break;
}

6.4 while循环

语法:

while (条件为真) {
  要执行的代码;
}

举例:

<?php
//定义需要往返的次数,老外喜欢从0开始计数,所以系统也是从0开始
$count=0;
//while后面接布尔值判断,为真执行,为假停止
//$count小于100的时候执行,也就是$count为0至99的时候执行.
//如果$count不小于100了,循环停止执行后续的代码

//循环开始处
while($count < 100){
    echo "这是王总第 $count 次出差 <br />";
    //每次执行让$count+1,这样的话,就不会产生$count永远小于100的情况了
    $count++;
}
//循环结束
?>

6.5 for循环

语法:

<?php
  for(初始值;判断条件;循环增加){
    执行代码
  }
?>

举例:

<?php
  for($i=1;$i<=10;$i++){
    echo '分手后第'.$i.'年, 我全都忘了你的样子<br>';
  }
?>

6.6 HTML+PHP实现简易的计算器

HTML代码

<html>
<head><title></title></head>
<body>
<form action="test.php" target="iframe" method="post">
    <input type="text" name="first"/>
    <select name="s">
        <option value="+">+</option>
        <option value="-">-</option>
        <option value="*">*</option>
        <option value="/">/</option>
    </select>
    <input type="text" name="second" />
    <input type="submit" value="Let's GO!" />
</form>
<iframe src="test.php" name="iframe" ></iframe>
</body>
</html>

PHP代码

<?php
  $first=$_POST["first"];
  $v=$_POST["s"];
  $second=$_POST["second"];
  if($v=="+"){
  echo $first+$second;
  }elseif($v=="-"){
  echo $first-$second;
  }elseif($v=="*"){
  echo $first*$second;
  }elseif($v=="/"){
  echo $first/$second;
  }
?>

6.7 稍微不那么简易的简易计算器

html

<html>
<head><title>low jisuan</title></head>
<body>
<form action="index.php" target="iframe" method="post">
    <input type="text" name="num1"/>
    <select name="s">
        <option value="+">+</option>
        <option value="-">-</option>
        <option value="*">*</option>
        <option value="/">/</option>
    </select>
    <input type="text" name="num2" />
    <input type="submit" value="Let's GO!" />
</form>
  <iframe src="index.php" name="iframe" ></iframe>
</body>
</html>

php

<?php
$first=$_POST["num1"];
$v=$_POST["s"];
$second=$_POST["num2"];

if( is_numeric($first) == false ){
    exit("nono");}
elseif (is_numeric($second) == false){
    exit("nono");
}

switch ($v){
    case "+":
        echo $first+$second;
        break;
    case "-":
        echo $first-$second;
        break;
    case "*":
        echo $first*$second;
        break;
    case "/":
        echo $first/$second;
        break;
    default:
        echo "please input 2 num!";
}
?>

6.8 作业

自己完善并理解简易计算机

自学一下for和while

模拟用户登录,如果输入错误超过3次,就提示错误并退出。

posted @ 2021-02-02 09:42  #!/bin/bash  阅读(291)  评论(0编辑  收藏  举报