网站建设(一)PHP深入学习
为什么有些PHP脚本里没有?>作为结束符呢?
这个问题太经典了,简单说来,这是为了避免包含php文件时带来额外字符导致的错误,PHP规定如下:
1. 所有PHP文件必须使用Unix LF (linefeed)作为行的结束符。
2. 所有PHP文件必须以一个空白行作为结束。
3. 纯PHP代码文件必须省略最后的?>结束标签。
为啥这样规定咧,举个例子:
a.php:
<?php// some code 注意最末尾 ?> 之后有空白字符
?>
b.php:
<?php
require "a.php";header('xxxx');
?>
a.php末尾的空白字符也会被输出,然后就报错了,然而不带?>
就不会出现这个问题。
__DIR__ :当前内容写在哪个文件就显示这个文件目录
__FILE__ : 当前内容写在哪个文件就显示这个文件目录+文件名
define() 函数定义一个常量。
常量类似变量,不同之处在于:
- 在设定以后,常量的值无法更改
- 常量名不需要开头的美元符号($)
- 作用域不影响对常量的访问
- 常量值只能是字符串和数字
语法
define(name,value,case_insensitive)
参数 | 描述 |
---|---|
name | 必需。规定常量的名称。 |
value |
必需。规定常量的值。PHP7 支持数组,实例如下:
<?php // PHP7+ 支持 define('ANIMALS', ['dog','cat','bird' ]);echo ANIMALS[1]; // 输出 "cat" ?> |
case_insensitive |
可选。规定常量的名称是否对大小写敏感。可能值:
|
技术细节
返回值: | 如果成功则返回 TRUE,如果失败则返回 FALSE。 |
---|
实例
定义一个大小写不敏感的常量:
<?php
define("GREETING","Hello you! How are you today?",TRUE);
echo constant("greeting");
?>
HTTP报头主要是用来相互传递信息的。
include (或 require)语句会获取指定文件中存在的所有文本/代码/标记,并复制到使用 include 语句的文件中。
包含文件很有用,如果您需要在网站的多张页面上引用相同的 PHP、HTML 或文本的话。
PHP include 和 require 语句
通过 include 或 require 语句,可以将 PHP 文件的内容插入另一个 PHP 文件(在服务器执行它之前)。
include 和 require 语句是相同的,除了错误处理方面:
- require 会生成致命错误(E_COMPILE_ERROR)并停止脚本
- include 只生成警告(E_WARNING),并且脚本会继续
::的用法
双冒号操作符即作用域限定操作符Scope Resolution Operator可以访问静态、const和类中重写的属性与方法。
好了,学完了,下面进入system.php里面,看看里面有什么?
at符号(@)在PHP中用作错误控制操作符。当表达式附加@符号时,将忽略该表达式可能生成的错误消息。如果启用了track_errors功能,则表达式生成的错误消息将保存在变量$ php_errormsg中。每个错误都会覆盖此变量。
注意:使用@是非常糟糕的编程习惯,因为它不会使错误消失,它只是隐藏它们,并且它使调试变得更糟,因为我们无法看到我们的代码实际上有什么问题。
php中的ini_set函数是php自带的用来修改设置php.ini配置文件的函数,用这个函数很方便,不用去手动修改php.ini文件,有时候我们也没有权限去修改php.ini文件,这时就用这个函数。
语法:ini_set("选项","值");该函数用时最好放到php的脚本最头部
比如:ini_set("max_execution_time", "180");//设置php的脚本超时时间为180秒
具体php选项可参考phpinfo文件的 Configuration PHP Core 部分
ini_get正好和ini_set相反,用来取php.ini文件里的环境变量的值.
语法:string ini_get (string varname );返回选项的值,如果选项的值为布尔型则返回为0或1
比如:echo ini_get('max_execution_time');//输出 30
如果想获取整个php.ini里的变量值,我们可以用ini_get的加强函数 ini_get_all()它以数组的形式返回整个php的环境变量。
isset查看一个变量是否已经被设置并且不为空(Determine if a variable is set and is not NULL)
empty查看一个变量是否为空 ""、0、"0"、NULL、FALSE、array()、$var($var是一个没有赋值的变量)
另外需要注意的是从PHP5.5开始,empty()只能支持变量,其他任何东西传递进来都将会导致介解析错误。
$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目。
- $_SERVER['HTTP_HOST'] 请求头信息中的Host内容,获取当前域名。
- $_SERVER["SERVER_NAME"] 输出配置文件httpd.conf中的ServerName,一般情况下与HTTP_HOST值相同,但如果服务器端口不是默认的80端口,或者协议规范不是HTTP/1.1时,HTTP_HOST会包含这些信息,而SERVER_NAME不一定包含。(主要看配置文件的设置)。
- $_SERVER["HTTP_USER_AGENT"] 获取用户相关信息,包括用户浏览器、操作系统等信息。
- $_SERVER['HTTP_ACCEPT'] 当前请求的ACCEPT头部信息。
- $_SERVER["HTTP_ACCEPT_LANGUAGE"] 这个值是由浏览器发送,表明用户默认的语言设置,后面的q值表示用户对该语言的喜好程度。
- $_SERVER["HTTP_ACCEPT_ENCODING"] 大部分的现代浏览器都支持gzip压缩,并会把这一信息报告给服务器。这时服务器就会压缩过的HTML发送给浏览器。这可以减少近80%的文件大小,以节省下载时间和带宽。
- $_SERVER["HTTP_COOKIE"] 浏览器的cookie信息。
- $_SERVER["HTTP_CONNECTION"] 当前请求的连接情况。
- $_SERVER["HTTP_UPGRADE_INSECURE_REQUESTS"] 表示浏览器可读懂服务器发过来的请求,
- $_SERVER["HTTP_CACHE_CONTROL"] 表示浏览器是否会缓存这个页面信息。
- $_SERVER["PATH"] 当前脚本所在文件系统。
- 等等
strpos() f函数查找字符串在另一字符串中第一次出现的位置(区分大小写)。
注释:strpos() 函数是区分大小写的。
注释:该函数是二进制安全的。
相关函数:
- strrpos() - 查找字符串在另一字符串中最后一次出现的位置(区分大小写)
- stripos() - 查找字符串在另一字符串中第一次出现的位置(不区分大小写)
- strripos() -查找字符串在另一字符串中最后一次出现的位置(不区分大小写)
php ob_start 与 ob_end_flush() 是 php 的缓冲输出函数。
ob_start([string output_callback])- 打开输出缓冲区,所有的输出信息不在直接发送到浏览器,而是保存在输出缓冲区里面,可选得回调函数用于处理输出结果信息。
ob_end_flush - 结束(发送)输出缓冲区的内容,关闭输出缓冲区。
php 输出东西,会保存在一个 php 维护的内存里,称为 buffer 也行,缓存也行,都是一个意思。然后当这个 buffer 满了,php 会自动往 web server 发送这些数据。
也就是说每次 echo,并不一定会输出东西,而是保存在 buffer 里。
ob_start() 的意思,可以理解为(但是实际上和我下面的说法有区别),这个 buffer 由
ob_ 系列函数来来控制,也就是,PHP 不会维护自己的 buffer,不会自动把buffer 的内容自动发送到 web server,直到你
ob_end() 或者类似的 ob 操作。
ob_函数一般用来捕获当前的输出,跟效率是没什么关系的。至于为什么捕获输出,原因很多,例如我捕捉输出,缓存到一个文件里,下次请求就可以直接读这个 cache 文件的内容作为输出了。
ob_gzhandler()目的是用在ob_start()中作回调函数,以方便将gz 编码的数据发送到支持压缩页面的浏览器.
在php.ini中修改output_handler指令为:
output_handler = "ob_gzhandler"
那么在数据返回给浏览器之前都会经过压缩,所有支持HTTP/1.1 的主流浏览器都支持。
require_once语句和require语句完全相同,唯一区别是 PHP 会检查该文件是否已经被包含过,如果是则不会再次包含。
这时候进入init.php,看看里面有什么,注意system是包括在index中的,所以现在都是在index.php中执行的操作
HHVM (HipHop Virtual Machine)会将PHP代码转换成高级别的字节码(通常称为中间语言)。然后在运行时通过即时(JIT)编译器将这些字节码转换为x64的机器码。在这些方面,HHVM十分类似于C#的CLR和Java的JVM,一个 加快运行速度的编译器类型的。
die() 函数输出一条消息,并退出当前脚本。
该函数是 exit() 函数的别名。
microtime() 函数返回当前 Unix 时间戳的微秒数。
time() 函数返回自 Unix 纪元(January 1 1970 00:00:00 GMT)起的当前时间的秒数。
function_exists()
PHP function_exists() 函数用于检测函数是否被定义,检测的函数可以是 PHP 的内置函数,也可以是用户的自定义函数。如果被检测的函数存在则返回 TRUE ,否则返回 FALSE 。
PHP内置函数memory_get_usage()能返回当前分配给PHP脚本的内存量,单位是字节(byte)。在WEB实际开发中,这些函数非常有用,我们可以使用它来调试PHP代码性能。
memory_get_usage()函数返回内存使用量,memory_get_peak_usage()函数返回内存使用峰值,getrusage()返回CUP使用情况。但有一点请注意,在这些函数需要在Linux上运行。
定义和用法
rtrim() 函数移除字符串右侧的空白字符或其他预定义字符。
相关函数:
- ltrim() - 移除字符串左侧的空白字符或其他预定义字符
- trim() - 移除字符串两侧的空白字符或其他预定义字符
进入enterprise.php里面看看有什么。。。
可惜没有这段脚本。
get_magic_quotes_gpc函数介绍
取得 PHP 环境变数 magic_quotes_gpc 的值,属于 PHP 系统功能。
语法: long get_magic_quotes_gpc(void);
返回值: 长整数
get_magic_quotes_gpc函数是一个用来判断是否为用户提供的数据增加斜线了,这个在php.ini配置文件中哦
当 magic_quotes_gpc 打开时,所有的 ‘ (单引号), ” (双引号), (反斜线) and 空字符会自动转为含有反斜线的溢出字符。
magic_quotes_gpc设置是否自动为GPC(get,post,cookie)传来的数据中的'”加上反斜线。可以用get_magic_quotes_gpc()检测系统设置。
定义和用法
array_walk_recursive() 函数对数组中的每个元素应用用户自定义函数。在函数中,数组的键名和键值是参数。该函数与 array_walk() 函数的不同在于可以操作更深的数组(一个数组中包含另一个数组)。
看看version.php里面的东西,今天把init里面的看完吧?
version没有,都没有。
SEO(Search Engine Optimization):汉译为搜索引擎优化。
date_default_timezone_set() 函数设置脚本中所有日期/时间函数使用的默认时区。
CMS是Content Management System的缩写,意为"内容管理系统"。
好,接下来看
网站建设(一)PHP深入学习相关推荐
- 帝国CMS网站建设仿站在线学习培训高清教学课程视频
一.适合人群: 帝国CMS初学者,帝国cms爱好者,SEO从业人员,个人创业者,IT行业从业者,网站编辑等 二.为什么学习帝国CMS 1.作为一个帝国CMS初学者或者是爱好者,对帝国CMS还不是够熟悉 ...
- 网站推广专员浅析网站建设实用技巧助力网站推广优化
通常企业网站建设大多是为了工作需求满足商务活动效益提升,企业网站的建设可向目标用户群体提前展示相关活动信息,通过互联网技术进行宣传预热以达到期望目标.然而在企业网站建设过程中对于站长来说,想要满足企业 ...
- 营销型网站建设-传智-专题视频课程
营销型网站建设-26225人已学习 课程介绍 营销型网站就是为实现某种特定的营销目标,能将营销的思想.方法和技巧融入到网站策划.设计与制作中的网站. 一个好的营销型网站就像一个业务员一 ...
- 【学习总结】Apsara Clouder云计算技能认证:网站建设:简单动态网站搭建+思维导图
[学习总结]Apsara Clouder云计算技能认证:网站建设:简单动态网站搭建 网站搭建的类型 网站的主要分类 静态网站 动态网站 动态网站的实现方式 动态网站搭建涉及的内容: 动态网站的常见实现 ...
- 【学习总结】Apsara Clouder云计算技能认证:网站建设:部署与发布
[学习总结]Apsara Clouder云计算技能认证:网站建设:部署与发布 建站的基本步骤 用户访问网站的过程 建设一个网站的基本步骤 注册域名 域名的分类 域名注册的的操作步骤 开通云服务器 开通 ...
- 【干货】零基础如何学习网站建设
相信很多朋友第一次接触到网络,接触到建站,会被域名.空间.解析.建站程序等各种问题困扰,甚至都不清楚网站制作流程,也不知该如何下手开始做自己的第一个网站. 那么下面学做网站论坛就来给各位朋友来分析一下 ...
- 零基础怎么学习网站建设? ?
零基础学习网站是一件很繁琐的东西,就算目前网站建设已经很成熟,也一样是需要很多东西进行搭配和组合,才能够完成一个网站建设,我给你列一下搭建一个网站建设所需要的东西,或者对于你学习网站建设会有更好的帮助 ...
- 《高性能网站建设指南》学习笔记
无意中看到同事有本<高性能网站建设指南>,趁着有时间借来读读. 简单的讲这是一本前端优化网站的书,作者总结了14条性能规则,我这里只记录下方便实用的方法. 规则一:减少HTTP请求 1.C ...
- flash h5录音_博乐h5网站建设案例-AI优网络
沈阳滑翔网站建设/设计沈阳荷兰村网站建设/设计沈阳和泰新城网站建设/设计沈阳黑山网站建设/设计沈阳红旗台网站建设/设计沈阳浑河堡网站建设/设计沈阳浑南中路网站建设/设计沈阳浑河站西网站建设/设计沈阳浑 ...
- 浅析日常网站建设中运营与优化的工作重点
在日常的网站建设过程中有时候需要我们针对网站内容进行改版工作时,我们可以根据网站的需要添加一些插件,以此来增强网站的体验性和可操作性.当然了,这些都不是什么简单的事儿,需要我们通过实际工作经验以及不断 ...
最新文章
- 从微博的改版谈网页重构——bigpipe中的页面构建优化
- 通过反射来创建对象?getConstructor()和getDeclaredConstructor()区别?
- python函数入参和返回值
- aix oracle查看字符集,AIX下oracle 10g 修改字符集为ZHS16GBK
- Asp.NET Core 如何使用ElasticSearch和Kibana创建仪表板
- 写给运营同学和初学者的SQL入门教程
- 这是一段关乎你的代码:你的未来 我们正在参与
- Python数据分析学习笔记02:Python语言基础、IPython与Jupyter笔记本
- AI(3)--- 机器学习常见的七个步骤
- 瑞典ENEA参展IIC,奏起OSE/Linux混合途径乐章【ZZ】
- Appium 常用操作
- java excel转pdf linux_docker安装libreoffice并实现把Excel转为pdf
- 神经网络应用论文题目,神经网络应用论文选题
- 微信小程序开发资源汇总 awesome-wechat-weapp
- 23种设计模式--桥接模式(Bridge)
- 软件测试培训三个月骗局,三个月能学会吗?可以做测试工作吗?
- BFS宽度优先搜索(新冠病毒的传播)
- 微信图文美化编辑器试试构思编辑器
- 京东API item_search - 按关键字搜索商品
- vue kepp-alive实践总结
热门文章
- html拖拽手势,h5实现手势操作放大缩小拖动等
- [Practical.Vim(2012.9)].Drew.Neil.Tip51 学习摘要
- 百度研究院发布2022科技趋势预测,涵盖三大层面、十大领域
- 测网速时抖动_宝马730Li轿车冷车时发动机抖检修
- 编程php计算行李托运费_飞机行李箱怎么算托运费?
- (三)jenkins+bonobo git server+windows系统自动化部署springboot项目(远程windows自动化部署)
- TP-Link wr886n 路由器插上光纤后网速变慢问题
- 前端做微信好友分享_web端实现微信分享功能
- 【MySQL】Spring Boot项目基于Sharding-JDBC和MySQL主从复制实现读写分离(8千字详细教程)
- 数字孪生系统有哪些意义?