搜索

要求:

将知识点整理到博客园 每个知识点要配上代码测试,并且代码是自己独自敲出来的。 对于安装配置操作整理成文档,对代码进行整理。

 

韩顺平推荐

研究linux内核

研究算法

研究网络技术(网管,网络安全)

研究数据库

  PHP笔记 .php目前由zend公司管理,mysql(mysql->sun->oracle)  (LAMP) 跨平台,同时支持多种数据库;效率比较高,具有良好的安全性。免费使用;开放源代码(学习别人的代码); Php4,php5开始支持面向对象 弱数据类型 Web站点:WEB站点是多个web资源的集合。简单点说,可以把web应用理解为硬盘上的一个目录,这个目录用于管理多个web资源。Web站点通常称之为web网站或web项目/工程。

 

PHP的基本概念 php是personla homepage 目前由zend公司管理 php嵌入到html代码,php脚本运行在服务端 1994(php1.0),1995(php2.0),1997(php3.0),2000(php4.0),2008(php5.0) Php6.0增加:更好的支持web2.0,支持更加好的Unicode支持,面向对象编程支持力度增加,对XMl编程支持,soap(简单对象协议)

 

l  软件开发中有个非常重要的原则:编译环境和运行环境要一致。

l  资料先在官网上找,多上英文网站

B/S和C/S的比较 开发成本低,管理维护简单,产品升级便利,对用户的培训费用低,用户使用方便,出现故障的概率小;安全性不足;客户端不能随心变化,受到浏览器的限制。 了解发送和接受到的内容。工具:httpwatch Lighttpd服务器,nginx服务器 Apache手册 管理apache,通过命令行来管理:httpd ?k start[shutdown|restart] Httpd.conf Apache目录结构 Apache服务器

bin:该目录用于存放apache常用的命令,比如httpd,apachemonitor

cgi-bin:该目录存放Linux下的常用命令.sh

conf:存放配置文件httpd.conf

error:错误记录

htdocs:存放我们的站点的文件夹(默认情况下),如果有多个站点,可以通过文件夹来分类

icons:存放图标

logs:记录apache的相关日志

manual:手册

modules:apahche模块

Apache启动时会对读httpd.conf,加载相关模块

运行机制图

 

Mpm:mutil processing module 多重处理模块

Apr:可移植运行库

Apache的生命周期 配置虚拟目录

我们把web应用放在apache默认的hdocs目录下,apache就会自动的管理。

l  添加虚拟目录节点

#欢迎页面

DirectoryIndex index.html index.htm,index.php

#站点别名

Alias /myblog “D:/myblog”

#访问权限设置

Order allow,deny

      Allow from all

l  注释DocumentRoot "D:/phpenv/apache/htdocs"

10. 访问权限设置

#表示对d盘下面的myblog文件设置权限设置

#表示先许可所有的ip访问,deny表示拒绝所有ip访问,先看allow后看deny

Order allow,deny

#先看看allow

Allow from all

案例

#先看deny再看allow,allow中的设置会覆盖deny

Order deny,allow

Allow from 218.20.253.2

#218.20开头的ip被拒绝

Deny from 218.20

11. 虚拟主机的设置

l  启用httpd-vhosts.conf:在httpd.conf文件中添加

Include

l  在\extra\httpd-vhosts.conf配置虚拟主机

#这里配置欢迎首页面

DirectoryIndex index.html index.htm index.php

options FollowSymLinks

#不许可别人修改我们的页面

AllowOverride None

#设置访问权限

Order allow,deny

Allow  from  all

l  修改hosts文件,讲www.sohu.com重定向到本地的页面

练习:

在Httpd.conf文件中配置一台www.sohu.cn的虚拟主机(一个网站,站点),然后在window系统中注册www.sohu.cn这台主机

在httpd.conf文件中启用httpd-vhosts.conf,即把#注销掉,

Include  conf/extra/httpd-vhosts.conf

假设我们的虚拟主机在c:\myweb(即一个网站)

设置http-vhosts.conf文件

在hosts文件中添加我们的ip和主机映射关系:c:/windows/system32/drivers/etc/hosts

(想想hosts的域名配置公网Ip和内网ip)

在虚拟主机的根目录中创建一个名称为itcast站点,并在该应用下创建一个index.html页面,然后把web应用映射到缺省web应用,index.html页面设置为web应用的首页

 

 

l  访问网页的流程

例如:访问http://www.sohu.com/news.html

1)     解析主机www.sohu.com

2)     查询本地hosts文件:windows/sys32/drivers/../hosts(ip127.0.0.1对应域名)

3)     如果本地Hosts文件没找到ip,到dns(域名服务器)ip 域名

4)     找到ip

5)     发送http请求包

6)     Apache解析http请求包:解析主机,解析站点名称,解析资源名称

7)     取得资源

12. 配置Apache支持php(apache在默认情况下是不会处理php)

套件软件:appserver或者wmap。该软件把我们需要环境打包安装

Php和apache的整合(即让apache可以处理php):

#让apache载入php处理模块

LoadModule php5_module ~php安装路径/php5apache2_2.dll

#phpinidir这个用于指定php的ini文件,

PHPIniDir ”~php模块安装路径”

#这个配置表示,当有一个资源是*.php的时候就由php来处理

AddType application/x-httpd-php  .php .phtml

将php.ini-devlopment文件改成php.ini。因为我们的php的设置有需要在php.ini修改。启动开发模式。

在php.ini中指定扩展模块路径extension_dir=~php安装路径/ext(里面有很多功能库,如图形库,数据库库等),指定php的扩展库路径

让php支持mysql功能:在php.ini中启用php_mysql

如果没有启动,会报错找不到相关函数。

安装mysql

安装phpmyadmin(phpmyadmin是一个站点,所以直接解压到网站根目录下面)

安装并配置discuz论坛

1)     准备一个discuz论坛代码

2)     将其解压到 网站根目录下

3)     把discuz的upload文件拷贝到discuz文件夹下

4)     修改config.inc.php.数据库配置,以及一个管理员$forumfounders=’admin

5)     访问http://localhost/discuz’

完成配置:一台服务器上有多个站点,让每个站点配置一个域名

解决方案1:

1)     通过端口来区分不同的站点:按照绑定一个站点的方法做好准备

修改httpd.conf启用虚拟主机配置Virtual hosts;配置httpd-vhosts.conf文件;在hosts文件中添加ip和域名的对应关系;

同样添加一个新的域名与该ip绑定

在httpd-vhosts.conf中添加虚拟主机127.0.0.1:81

让apache监听81端口:加一个Listen 81

在hosts文件中再添加新的域名127.0.0.1  www.***.com

浏览器访问www.***.com:81

解决方案2:

通过ServerName端口区分不同的域名

在httpd-vhosts.conf文件中添加配置:

ServerName www.***.com

DirectoryIndex news.html

PHP变量(注意数据和变量概念的不一样) php变量是以$打头定义的,php变量的数据类型是变化的,php变量的数据类型是由运行时的上下文来决定的。 php是弱数据类型编程语言(数据类型不要转来转去) php基本数据类型:整形integer,小数(浮点型)float/double(php不区分单精度和双精度),布尔类型boolean,字符串型

php复合类型:数组array,对象(object)

php特殊数据类型:null,资源类型(resource):$conn=mysql_connect(“localhost”,”root”,”root”);

      $a=890;

      Var_dump($a);

      $a=1.1;

      Var_dump($a);

?>

整型的细节讨论

a)     八进制:$a=0123;,十六进制$a=0xAH;

b)   Php不支持无符号整数,即php的整数都是有符号数。一般占4个字节。可以通过PHP_INT_SIZE可以显示我们自己的机器,一个整数用几个字节表示。Echo PHP_INT_SIZE;最大整数echo PHP_INT_MAX,如果超过了,整形会自动转换为float;(需要整理最大最小值)

c)    如果给定一个数超出了integer的范围,将会被解释为float

思考实践题:

$a;

//如果只写了$a,但是没有赋值

Var_dump($a);//NULL,表示没有分配内存空间

Echo $a;

?>

 

代码考量:健壮性,扩展性,安全性,代码的效率(并发,效率) 布尔类型的细节讨论

a)    True,false都不区分大小写

b)   下面的值会被当做false对待:

布尔值FALSE自身

整型值0

浮点型值0.0

空字符串,以及字符串“0”

不包括任何元素的数组

不包括任何成员变量的对象

特殊类型NULL(包括尚未设定的变量)

浮点型细节

a)    浮点数(也叫双精度或实数),浮点数的精度是14(从左边开始就是,第一个非0数就是精度开始;$a=0.23456789022222988;$b=0.00002222233334444;

b)   浮点数的字长和平台相关,通常最大值是1.8e308并具有14位十进制数字的精度(这个限制很重要)

字符串细节

a)    一个字符占用一个字节;$a=”hello”;占5个字节

b)   理论上,我们对字符串大小没有限制,即只有不超过内存就可

c)    我们定义字符串的时候,可以用单引号,也可以使用双引号,区别如下:双引号会解释变量的值。如果字符串包含在单引号中,除了来处理\”时,会输出\”外,其它规则都一样。

当一个变量包含在“”号中时,会输出它的值,而包含在’’号中是输出其字符本身。

Php字符类型的自动转换

变量的类型不由程序员设定的,确切地说,是由PHP根据该变量使用的上下文在运行时决定的,可以通过var_dump($变量1,$变量2…)方式来显示其类型。(PHP是不需要编译就能运行的)

10. php常量

a)    常量前面没有美元符号$

b)   常量用define()函数定义或者const,而不能通过赋值语句,在定义的时候就需要赋初值;常量的名称,一般全部大写,然后用下划线间隔;

define(“TAX_RATE”,0.08);在程序中我们不希望某个值变化,则考虑使用常量,比如圆周率,税率….

const  TAX_RATE=0.08;

c)    常量可以不用理会变量的作用域而在任何地方定义和访问;

d)    常量一旦定义就不能被重新定义或者取消定义;

e)    常量的值是标量【基本数据类型:】

11. 表达式

表达式是PHP最重要的基石。在PHP中,几乎所写的任何东西都是一个表达式。

所谓表达式,就是任何有值的东西。$a=7/3;如何将小数位数保存到2位(函数处理)

比较运算符:$a===$b全等$a!==$b非全等(值相等,并且类型也相同)

$a!=$b只有值不相等,则为true

$a!==$b只要值不相等,或者类型不相等,则为true

字符串运算符(.):当两个基本数据类型用.连接的时候,就表示把他们的内容当做字符串拼接起来。

类型运算符:instanceof用于确定一个PHP变量是否属于某一类class的实例。不能去判断是否属于基本数据类型。

12. Switch可以使用的数据类型可以是:整形,小数,字符串,布尔型,null。从我们学习if和switch分支来看,if往往是对某一个范围的判读,而switch是对一个点的判断。

PHP函数 基本概念:为完成一功能的程序指令(语句)的集合。在php中,函数分为:自定义函数,系统函数(php语句本身提供,可以直接使用的函数,php设计者认为,在项目开发的过程,很多人都会用的一些功能)。函数的基本结构:

Function 函数名(参数…){

//函数体

return  返回值;(可以没有)

}

函数的参数可以是多个,并且数据类型是php语言支持的任意类型;函数的命名跟自定义变量一样,首字母只能是_,A-Z,a-z开头,不要用数字或者特殊字符开头。

Php中页面相互调用

a)    require()和require_once()

一般放在php页面的最前面,php执行前,就先读入require所包含的页面,一旦出现错误,则退出程序(报错)。

这两个区别为,前面遇到即包含文件,后者会判断是否已经包含过了,如果包含过了,则不再包含文件。一可以节省资源,而可以避免重新定义的错误。

b)   include()和include_once()

可以放在php页面的调用函数前,当php执行到时,才会读入include所引入的php页面,如果出现错误,程序不会退出,会继续执行。

区别:前者Include遇到即包含文件,后者include_once()

 

c)    include和require区别(同时include_once和require_once区别)

相同的地方:都是可以引入别的页面

区别:include如果出现错误,程序继续运行;require出现错误,则会终止程序。

d)    使用哪个:做项目的时候,基本上使用的是require_once()

php执行时,一旦遇到函数的调用,就会开辟一个新栈 函数只是一个定义,函数执行的规则是只要一看到函数,则php就会开辟一个新栈 各个栈间的变量是相互独立的。(搞懂全局变量,局部变量)

PHP中有三种提示:

Notice:注意   waring:警告  error:错误

如果在函数中,我们不希望使用某个变量,或者是希望彻底的不再使用某个变量,则可以使用unset(变量名)来销毁变量。 在php函数中,我们可以给某个参数,赋一个默认的值。 Php默认是值传递,如果需要引用(地址)传递,使用&变量名。       $a=1>>2;

      $b=-1>>2;

      $c=1

      $d=-1

     

      Echo “a=”.a;

?>

二进制:逢二进一。使用二进制只有0,1两个数,简单易于电子方式实现。同时,通过0,1的组合可以表示任意一个数。

原码,反码,补码:

1-->  原码   00000000 00000000 00000000 00000001

 

a)    二进制的最高位是符号位:0表示整数,1表示负数

b)   整数的原码,反码,补码都一样

c)    负数的反码=它的原码的符号位不变,其他位取反

-1  -->原码:10000000 00000000 00000000 00000001

          反码:11111111 11111111 11111111 11111110

  补码:11111111 11111111 11111111 11111111

d)    负数的补码=它的反码+1

e)    0的反码,补码都是0

f)     Php没有无符号数之说,即:php中的输都是有符号的

g)    在计算机运算的时候,都是以补码的方式来运算的。意思就是不管一个数是正数还是负数,都要转成补码,然后进行运算。

Php中有4个位运算,分别是“按位与&”,“按位或|”,“按位异或^”,”按位取反~”,运算规则如下:

按位与&:两位全为1,结果为1

按位或|:两位有一个为1,结果为1

按位异或^:两位一个为0,一个为1,结果为1

按位取反~:0->1,1->0

步骤:求出补码(因为所有的运算都是以补码的方式进行的)

~2=?   -3

补码:00000000 00000000 00000000 00000010

          11111111 11111111 11111111 11111101(结果是补码)->原码

反码:11111111 11111111  11111111  11111100(先减1)

原码:10000000 0000000 0000000 000000011(-3)

2&3:首先找到2和3的补码   =2

2的补码:00000000 00000000 00000000 00000010

3的补码:00000000 00000000 00000000 00000011

2&3        :00000000 00000000 00000000 00000010

位移运算:对二进制数进行左右移动,运算规则是:

>>算数右移:低位溢出,符号位不变,并用符号位补溢出的高位

$a=1>>2;  $a=0

1的补码:00000000  00000000  00000000  00000001

1>>2     :  0000000  000000000 00000000 00000000   (0)

 

$b=-1>>2;    -1

-1的原码:10000000 00000000 00000000 00000001

-1的反码:   11111111 1111111 1111111 11111110

-1的补码: 1111111 11111111 11111111 11111111

-1

-1>>2     :  1111111 11111111 11111111 11111111 (结果为反码)

      反码:    1111111 11111111 11111111 11111110

     原码:      1000000 0000000 000000000 00000001(-1)

数组  排序  查找 为什么要数组:可以用于存放多个数据的数据类型,我们称为数组。 概念

$array[0]=123;

[0]--> 下标,关键字

$array[0]-->数组的一个元素

123  -->元素对应的值

$array--->数组名

 

在php数组中,元素存放的值可以是任意数据类型的。

$arr[true]=”hello”; ==>$arr[1]

$arr[false]=”world”;==>$arr[0];

$arr[null]=”北京”;==>$arr[null]或者$arr[“”];

如果用小数做键值,会自动截断小数部分。

我们可以使用print_r来显示数组的情况。

PHP的数组是可以动态增长的。

$a = array(2,3);

$a[2]=56;

Echo $a[2];

 

一维数组引用陷阱:$arr[bar]=”hello,world”;

Echo$arr[bar];(会把bar当做常量)

 

      $a[0]=1;$a[1]=2;$a[2]=5;

           Count($a);     =3

      $a[0]=1;$a[5]=2;$a[10]=5;

Count($a);     =3

$arr=array();

Echo count($arr);  =0

 

Unset()函数允许销毁数组中的某个元素,也可以删除某个变量,但要注意数组的关键字不会重新索引。

 

?>

数组默认传递的是值,不是地址。对象默认传递的是地址。

排序,选择排序法,插入排序法 排序是将一组数据,依指定的顺序进行排列的过程。排序是一个程序员基本功。 分类:a. 内部排序法:将需要处理的所有数据都加载到内部存储器中进行排序。包括交换式排序法(冒泡法,快速排序法),选择式排序法和插入式排序法

b.外部排序法:数据量过大,无法全部加载到内存中,需要借助外部存储器 进行排序。包括合并排序和直接合并排序法。

 

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
超越炒作:评估当今PHP的角色超越炒作:评估当今PHP的角色Apr 12, 2025 am 12:17 AM

PHP在现代编程中仍然是一个强大且广泛使用的工具,尤其在web开发领域。1)PHP易用且与数据库集成无缝,是许多开发者的首选。2)它支持动态内容生成和面向对象编程,适合快速创建和维护网站。3)PHP的性能可以通过缓存和优化数据库查询来提升,其广泛的社区和丰富生态系统使其在当今技术栈中仍具重要地位。

PHP中的弱参考是什么?什么时候有用?PHP中的弱参考是什么?什么时候有用?Apr 12, 2025 am 12:13 AM

在PHP中,弱引用是通过WeakReference类实现的,不会阻止垃圾回收器回收对象。弱引用适用于缓存系统和事件监听器等场景,需注意其不能保证对象存活,且垃圾回收可能延迟。

解释PHP中的__ Invoke Magic方法。解释PHP中的__ Invoke Magic方法。Apr 12, 2025 am 12:07 AM

\_\_invoke方法允许对象像函数一样被调用。1.定义\_\_invoke方法使对象可被调用。2.使用$obj(...)语法时,PHP会执行\_\_invoke方法。3.适用于日志记录和计算器等场景,提高代码灵活性和可读性。

解释PHP 8.1中的纤维以进行并发。解释PHP 8.1中的纤维以进行并发。Apr 12, 2025 am 12:05 AM

Fibers在PHP8.1中引入,提升了并发处理能力。1)Fibers是一种轻量级的并发模型,类似于协程。2)它们允许开发者手动控制任务的执行流,适合处理I/O密集型任务。3)使用Fibers可以编写更高效、响应性更强的代码。

PHP社区:资源,支持和发展PHP社区:资源,支持和发展Apr 12, 2025 am 12:04 AM

PHP社区提供了丰富的资源和支持,帮助开发者成长。1)资源包括官方文档、教程、博客和开源项目如Laravel和Symfony。2)支持可以通过StackOverflow、Reddit和Slack频道获得。3)开发动态可以通过关注RFC了解。4)融入社区可以通过积极参与、贡献代码和学习分享来实现。

PHP与Python:了解差异PHP与Python:了解差异Apr 11, 2025 am 12:15 AM

PHP和Python各有优势,选择应基于项目需求。1.PHP适合web开发,语法简单,执行效率高。2.Python适用于数据科学和机器学习,语法简洁,库丰富。

php:死亡还是简单地适应?php:死亡还是简单地适应?Apr 11, 2025 am 12:13 AM

PHP不是在消亡,而是在不断适应和进化。1)PHP从1994年起经历多次版本迭代,适应新技术趋势。2)目前广泛应用于电子商务、内容管理系统等领域。3)PHP8引入JIT编译器等功能,提升性能和现代化。4)使用OPcache和遵循PSR-12标准可优化性能和代码质量。

PHP的未来:改编和创新PHP的未来:改编和创新Apr 11, 2025 am 12:01 AM

PHP的未来将通过适应新技术趋势和引入创新特性来实现:1)适应云计算、容器化和微服务架构,支持Docker和Kubernetes;2)引入JIT编译器和枚举类型,提升性能和数据处理效率;3)持续优化性能和推广最佳实践。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。