php基础-1

Posted 小萝卜特·唐尼的成长之路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php基础-1相关的知识,希望对你有一定的参考价值。


typora-copy-images-to: images


1.1 今日目标

  1. 掌握互联网的工作原理
  2. 掌握域名、DNS和IP地址之间的关系
  3. 理解hosts文件在互联网访问过程中的作用
  4. 理解静态网站和动态网站的区别
  5. 理解动态网站的服务器组成
  6. 了解php的工作过程
  7. 掌握PHP变量的使用方式
  8. 理解可变变量的概念
  9. 掌握可变变量的访问形式
  10. 理解变量的值传递和引用传递的区别

1.2 PHP简介

1.2.1 概述

PHP是Hypertext Preprocessor的缩写,(超文本预处理器)是一种在服务器端运行的开源的脚本语言。

LAMP组合(Linux,Apache,mysql,PHP),这四个产品都是公开源代码的产品

php是一门语言,用来做业务逻辑
apache为PHP提供了运行环境
linux为Apache的运行提供了平台
mysql数据库用来存储数据

多学一招:什么是wamp组合

windows+apche+mysql+php

1.2.2 五个基本概念

1、静态页面和动态页面

静态页面:服务器不执行的页面
动态页面:服务器执行的页面

问题:动态网站中是否可以存放静态页面

答:可以

2、客户端和服务器端

浏览者这段是客户端
服务器端:给浏览者提供服务

3、端口和端口号 端口号的范围: 0-65535,默认情况下apache所在端口为80

4、BS架构和CS架构

BS:通过浏览器去访问服务器

b:browser(浏览器)
s:sever(服务器)
优点:
1、只要有浏览器就可以访问
2、开发低
缺点:
2、开发的代码都放在服务器上    胖服务器-瘦客户端

所有的web都是BS架构的

CS:通过客户端软件去访问服务器

c:client(客户端)
s:server(服务器)
优点:
1、可以开发客户端和服务器端,这时候就可以实现负载的均衡
缺点:
1、必须要安装一个软件才能去访问
2、开发成本高

例如:QQ、炒股软件

5、前台和后台

前台:浏览器看到的界面
后台:管理员看到的界面

1.2.3 PHP的优点

  1. 跨平台,既能在windows上运行,也能在linux上运行
  2. 源码开放:不会涉及到版权问题
  3. 语法简单:PHP入门简单
  4. 运行在服务器端,只要在服务器部署环境就可以了。

1.3 Web介绍

1.3.1 web时代的变迁

从互联网开始崛起到现在,经历了从web1.0、2.0到web3.0的过程

Web1.0(信息共享)的主要特点在于用户单纯的获取信息
Web2.0(信息共建)更注重用户的交互作用,用户既是网站内容的浏览者,也是网站内容的制造者。
Web3.0(信息传承)通过第三方信息平台对多家网站的信息进行整合,用户在互联网上拥有自己的数据,并能在不同网站上使用

举例:

Web1.0:来到一个餐馆,老板给你上了一盘番茄炒蛋;
Web2.0:来到一个餐馆,你跟老板主动点了一份番茄炒蛋;
Web3.0:来到一个餐馆,老板见到你就问,老规矩,还要番茄炒蛋?

1.3.2 Web服务原理

静态网站原理(浏览器-服务器)

动态网站原理(浏览器-服务器-数据库)

智能网站原理(浏览器-服务器【分析推荐】-数据库)

1.4 搭建Web服务器

1.4.1 安装phpstudy

直接解压即可

1.4.2 目录结构

www虚拟目录是放站点的,即php做的项目放在这个文件夹

启动服务

1.4.3 访问服务器

在www目录下创建demo.php页面

<?php
   phpinfo();此函数打印php的版本信息

访问服务器

访问规则:http://服务器ip地址/php页面(php文件名称)
比如:本机的IP就是127.0.0.1,或者localhost
http://localhost/demo.php
http://127.0.0.1/demo.php

1.4.4 常用的命令

补充DOS命令

切换盘符	盘符+冒号
进入目录	cd 目录地址

Apache的命令

httpd -v   查看apache版本号   version
httpd -t   检测运行环境  test

PHP的命令 :进入php的文件夹,在有php.exe的文件目录里去执行命令

E:\\php_enviroment>cd PHPTutorial\\php\\php-7.0.12-nts
E:\\php_enviroment\\PHPTutorial\\php\\php-7.0.12-nts>php -v
	PHP 7.0.12 (cli) (built: Oct 13 2016 11:04:07) ( NTS )
	Copyright (c) 1997-2016 The PHP Group
	Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
命令:php -v  PHP版本号

1.4.5 互联网通讯原理

本质一台电脑访问另外一台电脑资源、寻址过程(IP地址、端口、域名、DNS)

在互联网上,IP地址是用来区分每台计算机的标识,但是IP记忆不友好,我们将IP地址取一个名字,一个IP对应一个名字,这个名字就称为域名。

访问过程:

步骤:

1、客户端输入域名(网址),在最近的机房做DNS解析(Domain Name Server),DNS解析就是将域名转化成IP地址

2、通过IP地址访问服务器

1.4.6 DNS解析

每台电脑本身就有充当机房来做DNS解析的文件:hosts,用这个文件来做DNS解析

目标:ip地址访问服务器不方便,通过域名来访问。

hosts文件

测试

小结:

hosts文件用来做DNS解析(通过域名找到对应IP的过程)

1.5 服务器配置

1.5.1 虚拟目录配置

1、更改虚拟目录

要更改虚拟目录的位置,需要到apache的配置文件中更改(conf/httpd.conf)

在phpstudy(集成环境)中,httpd.conf和vhost.conf都有配置虚拟目录的指令,并且两个配置文件中都有配置虚拟目录的指令,httpd.conf的配置文件修改是无效的, 需要修改vhost.conf里的Document内容才有效。如果用的不是集成环境,自己纯手工搭建出来的环境,httpd.conf的配置文件修改是有效的。为了测试,我们注释掉vhost.conf的引入。

当然也可以直接去修改vhost.conf文件里的DocumentRoot "E:\\php_enviroment\\PHPTutorial\\WWW"的内容

更改虚拟目录

提醒:项目上线以后,不可以显示目录结构

权限的练习

例题一:

Order allow,deny
Allow from all
# 允许所有请求访问

例题二:

Order allow,deny
Allow from all
Deny from all
# 拒绝所有请求访问

练习三:

Order allow,deny
Deny from all
Allow from all
#  拒绝所有请求访问

练习四:

<Directory "C:/PHP/Apache/htdocs">
   Order deny, allow
   Allow from 192.168.101.50
   Deny from 192.168
</Directory>
# 拒绝192.168开头,但除去(192.168.101.50)的IP的访问

练习五:

<Directory "C:/PHP/Apache/htdocs">
    Order deny, allow
    Allow from 192.168.101.50
   Deny from all
</Directory>
# 只允许192.168.101.50访问

练习六:

<Directory "C:/PHP/Apache/htdocs">
   Order allow,deny
   Allow from 192.168
   Deny from 192.168.101.50
</Directory>
# 只允许192.168开头的,但要去除192.168.101.50 的IP访问

2、更改默认首页

在httpd.conf配置文件中

默认首页的查找顺序,从前往后。

3、更改监听端口

在httpd.conf配置文件中设置

通过Listen指令设置监听的端口

可以设置多个监听端口

访问:

http://域名:端口号/demo.php

http://www.php.com:8068/aaa.php 注意到不是在文件后面添加:8086,而是在域名后面加上:端口号

也等价于:127.0.0.1:8068

补充:查看端口的占用情况

在命令行下使用 netstat -ano查看

在结果中查找字符串

1.5.3 虚拟主机配置

需求:

输入www.baidu.com	打开web1的网站
输入www.sina.com打开web2的网站

配置过程:

要配置虚拟主机,需要在httpd.conf中引入虚拟主机的培训文件(vhosts.conf)

vhosts.conf配置如下

<VirtualHost _default_:80>
  DocumentRoot "C:\\web1"       #指定虚拟目录路径
  ServerName www.baidu.com     # 虚拟目录绑定的域名
  DirectoryIndex aa.php        # 默认首页
  <Directory "C:\\web1">
    Options -Indexes -FollowSymLinks +ExecCGI
    AllowOverride All
    Order allow,deny
    Allow from all
    Require all granted
  </Directory>
</VirtualHost>


<VirtualHost _default_:80>
DocumentRoot "C:\\web2"
 ServerName www.sina.com
 DirectoryIndex bb.php
  <Directory "C:\\web2">
    Options -Indexes -FollowSymLinks +ExecCGI
    AllowOverride All
    Order allow,deny
    Allow from all
    Require all granted
  </Directory>
</VirtualHost>

以上实现了两个主机在同一台电脑上运行,其实两个主机是虚拟主机,不是真的主机

在host文件中做dns解析

访问结果

补充:站点、虚拟目录、虚拟主机的区别

站点:站点就是一个文件夹,用来保存与网站有关的所有素材(如aa.php)

虚拟目录:站点+权限

虚拟主机:虚拟目录+域名

1.6 PHP语法入门

1.6.1 PHP是编译型语言

编译语言和解释语言的区别在于是否保存最终的可执行程序。

php执行过程

1.6.2 PHP定界符

因为PHP是脚本语言,所以需要定界符

1、标准风格(推荐使用)

<?php

?>

例题

<?php
echo \'i am a boy!\';
?>

提醒,如果整个页面都是PHP代码,PHP结束符是可以省略的(推荐)

<?php
echo \'i am a boy!\';

2、短标记风格(默认情况下不支持,需要在php配置文件中开启支持段标记)

<?
?>

例题:

<?
echo \'锄禾日当午\';
?>

小结:

httpd.conf是apache的配置文件

php.ini是php的配置文件

1.6.3 注释

单行注释: //和#

多行注释: /* */

1.6.4 PHP输出语句

echo:可以输出一个或多个字符串
print:只允许输出一个字符串,返回值总为 1
// echo 输出的速度比 print 快, echo 没有返回值,print有返回值1。
print_r():输出数组
var_dump():输出数据的详细信息,带有数据类型和数据长度
echo PHP_EOL; // 换行符
-------------------------------------------------------------------------
<?php
var_dump(\'abc\');	//string(3) "abc" 
echo PHP_EOL; // 换行符
var_dump(1234);
?>
-------------------------------------------------------------------------
<?php
echo "<h2>PHP 很有趣!</h2>";
echo "Hello world!<br>";
echo "我要学 PHP!<br>";
echo "这是一个", "字符串,", "使用了", "多个", "参数。";
?>
// 输出结果会显示html标签效果,如本例子的<h2>, <br>标签,尽管是包含在输出的字符串里

<?php
	var_dump(\'abc\');	//string(3) "abc" 
?>
-------------------------------------------------------------------------------
1.echo
输出一个或者多个字符串。
2.print
和 echo 最主要的区别: print 仅支持一个参数,并总是返回 1。
3.print_r
打印关于变量的易于理解的信息,如果给出的是 string、integer 或 float,将打印变量值本身。如果给出的是 array,将会按照一定格式显示键和元素。object 与数组类似。 记住,print_r() 将把数组的指针移到最后边。使用 reset() 可让指针回到开始处。
4.var_dump
此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。
5.var_dump 和 print_r 的区别
var_dump 返回表达式的类型与值而 print_r 仅返回结果,相比调试代码使用 var_dump 更便于阅读。

1.7 变量

变量的本质就是内存中的一段空间

1.7.1 变量的命名规则

  1. 变量必须以\\(开头,\\)符不是变量的一部分,仅表示后面的标识符是变量名。
  2. 除了$以外,以字母、下划线开头,后面跟着数字、字母、下划线
  3. 变量名区分大小写,\\(aa和\\)Aa是两个空间

下列变量是否合法

$a		合法
$a1		合法
$1a		不合法,只能以字母和下划线开头
$_1a	合法

注意:PHP语句必须以分号结尾

<?php
$a=10;
$name=\'Tom\';
?>

1.7.2 可变变量

变量名可以变,将变量名存储在另外一个变量中

例题

<?php
$a=10;
$b=\'a\';
echo $$b;	//10

例题

<?php
$name1=\'tom\';
$name2=\'berry\';
if(rand(1,10)%2){       // rand(1,10):获取1-10的随机整数
   $name=\'name1\';	//将变量名存储在$name中
}else{
   $name=\'name2\';
}
echo $$name;            // echo $name;输出name1或者name2

1.7.3 变量传递

变量的传递有值传递和地址传递(引用传递)见理解:https://blog.csdn.net/daimatong/article/details/105932366

<?php
//值传递
$num1=10;	     // 将10付给$num1
$num2=$num1;	 // 将$num1的值付给$num2
echo $num2;      // 10
$num2=20;		// 更改$num2
echo $num1;		// 10

//地址传递
$num1=10;		//将10付给$num1
$num2=&$num1;	//将$num1的地址付给$num2,这时候$num1和$num2均指向了10
echo $num2;      //10
$num2=20;		//更改$num2,同时$num1的指向也变成了20
echo $num1;		//20

小结:

1、参数的传递有两种,值传递和地址传递

2、&表示获取变量的地址

3、值传递中,一个变量变了,另一个变量没有影响,因为是两个空间

4、地址传递中,一个变量变了,另一个也变了,因为两个变量指向同一个空间

1.7.4 销毁变量

用unset()来销毁变量,销毁的是变量名,变量值由PHP垃圾回收机制销毁

<?php
$num1=10;
$num2=&$num1;
unset($num1);	//销毁的是变量名
echo $num2;		//10

没有变量引用的值是垃圾。

以上是关于php基础-1的主要内容,如果未能解决你的问题,请参考以下文章

PHP 代码片段

PHP代码-psysh调试代码片段工具

超实用的php代码片段

比较有用的php代码片段

[vscode]--HTML代码片段(基础版,reactvuejquery)

php Yoast SEO规范输出的代码片段