PHP经常容易记乱的知识
PHP基础知识点汇总

PHP基础知识点汇总⼀、PHP的基本语法PHP(Hypertext Preprocessor,超⽂本预处理器)是⼀种运⾏在服务器端的脚本语⾔。
1.PHP语⾔标记 <?php 标准风格标记,属于XML风格;?> <script lanauage="php">长风格标记</script> <? 短风格的标记 ?> <% ASP风格的标记 %>2.PHP指令分割符 PHP需要在每个语句(指令)后⽤分号结束!3.程序注释 // 单⾏注释 # 单⾏注释 /* 多⾏注释 */ /**多⾏⽂档注释 */4.变量 简⾔之,变量是⽤于临时存储值的容器。
(变量在任何语⾔中都处于核⼼地位) 变量的命名: PHP中声明变量必须是使⽤⼀个美元符号"$"加上后⾯的变量名来表⽰,使⽤赋值操作符(=)来给⼀个变量赋值。
变量的命名: ⼀个有效的变量名是由字母或下划线开头,后⾯跟上任意数量的字母、数字或者下划线。
要注意的是,变量名⼀定不能以数字开头,并且中间不可以使⽤空格,不能使⽤点分开 等! 按照正常的正则表达式,他将被表⽰成:'[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'。
可变变量: $str = 'hello'; $$str = 'world'; echo "$str $hello"; //输出hello world echo "$str $$str"; //输出hello world 变量的引⽤赋值: 简单的使⽤"&"加到将要赋值的变量前。
这意味着新的变量简单的引⽤了原始变量。
(换⾔之,“成为其别名”或者“指向”)。
$foo = 'Bob'; $bar = &$foo; $bar = '世界,你好!'; echo $bar; //输出世界,你好! echo $foo; //输出世界,你好! $foo = 'hello world'; echo $foo; //输出hello world echo $bar; //输出hello world 变量的类型: |-----boole布尔型 |-----integer整形 |-----四种标量类型---- |-----float浮点型,也称double | |-----string字符串 | 数据类型--| | |-----array数组 |-----两种复合类型---- | | |-----object对象 | |-----resource资源 |-----两种特殊类型---- | |-----NULL 布尔型(TRUE or FALSE): 布尔值FALSE 整型值0为假,其他⾮零值不论正负均为TRUE 浮点型0.0 空⽩字符串和字符串'0' 没有成员变量的数组 没有单元的对象(仅适⽤于PHP4) 特殊类型NULL 整型:如果给定数超出整型范围,将会被解释成float。
php 面试知识点整理归纳

php 面试知识点整理归纳PHP面试知识点整理归纳一、PHP基础知识1. PHP是什么2. PHP的优点和特点3. PHP的数据类型4. PHP的变量和常量5. PHP的运算符6. PHP的流程控制语句7. PHP的函数8. PHP的数组9. PHP的字符串操作10. PHP的日期和时间11. PHP的文件操作12. PHP的错误处理二、面向对象编程1. PHP面向对象的特点2. PHP面向对象的基本概念3. PHP类的定义和实例化4. PHP类的继承和多态5. PHP的访问控制修饰符6. PHP的抽象类和接口7. PHP的命名空间三、数据库操作1. PHP连接数据库的方式2. PHP对数据库的增删改查操作3. PHP的预处理语句和防止SQL注入4. PHP的事务处理四、常用扩展和框架1. PHP的常用扩展介绍(如GD、MySQLi、PDO等)2. PHP的常用框架介绍(如Laravel、Symfony、ThinkPHP等)五、性能优化和安全性1. PHP性能优化的方法和技巧2. PHP安全性的考虑因素和防护措施六、常见面试题1. 如何实现一个单例模式2. 如何处理PHP的内存泄漏3. 如何处理PHP的并发访问4. PHP中的魔术方法有哪些?分别用途是什么5. 如何实现文件上传和下载6. 如何处理PHP的异常7. PHP中的会话管理和Cookie8. 如何实现验证码9. 如何实现分页功能10. PHP的面试题目大全七、其他知识点1. PHP的命令行运行2. PHP的调试和日志记录3. PHP的缓存技术和机制4. PHP的异步编程5. PHP的设计模式6. PHP的国际化和本地化处理7. PHP的网络编程8. PHP的RESTful API设计9. PHP的微服务架构以上是PHP面试知识点的整理归纳,涵盖了PHP的基础知识、面向对象编程、数据库操作、常用扩展和框架、性能优化和安全性等方面的内容。
希望对准备PHP面试的同学有所帮助。
PHP中常见问题集结

?>
但许多程序员仅仅为显示一些变量值和函数返回值使用该函数。因为Printf()在显示数据前要先格式化该数据以速度较慢,因此,仅为了显示数据时应用print和echo,以提高速度。
二、语意检查
在php.ini中,有这样两个选项:
allow_url_fopen =on(表示可以通过url打开远程文件),
user_agent=”PHP”(表示通过哪种脚本访问网络,默认前面有个 ” ; ” 去掉即可。)
重启Apache服务即可。
6.如何预先获取auto_increment的值?
mysql_connect(’localhost’,'root’,'root’) or die(’不能连接到服务器‘);
PHP是一种弱类型语言,也就是说在使用一个变量前不用定义,这样给编程带来了很大的方便和灵活,但你自己必须知道该变量到底应该是哪种类型,因为该变量在运行时仍实际对应着某一种类型(各种类型
之间可以自由互相转换),没有类型的变量是不存在的。有可能PHP并不能检查出你的语意错误,但由于变量类型的变化,会导致一些潜在的问题的发生。另外一个值得注意的问题是变量的范围,它也可能会导致
4.print,echo,print_r什么区别?分别什么时侯用?
echo和print都可以做输出,不同的是,echo不是函数,没有返回值,而print是一个函数有返回值,所以相对而言如果只是输出 echo 会更快,而print_r通常用于打印变量的相关信息,通常在调试中使用
5.在PHP中有些时候需要打开远程文件
打开远程文件函数为:fopen(/a.php),fsockopen(/a.php) , file_get_contents(/a.php)等)
php乱码解决方案

PHP乱码解决方案
1. 什么是乱码
在开发和使用PHP时,经常会遇到乱码问题。
乱码通常是由于字符编码不一致或配置不正确而导致的。
乱码指的是在文本显示或传输过程中出现了无法正常解析的字符,显示为乱码符号,无法按照原本的字符显示。
2. 乱码的原因
2.1 字符编码不一致
字符编码是表示字符在计算机中的二进制表示方法。
常见的字符编码包括UTF-8、GBK、ISO-8859-1等。
当对一个已经编码的文本进行解码时,如果解码的字符编码与实际编码不一致,就会出现乱码。
2.2 字符编码和数据库存储不一致
在Web开发中,经常使用到数据库存储数据。
如果数据库的字符编码与PHP 脚本的字符编码不一致,就可能导致显示乱码。
2.3 响应头未设置字符编码
在Web开发中,服务器会通过响应头(Response Header)告诉客户端使用何种字符编码。
如果未设置字符编码或设置不正确,客户端接收到的数据就可能出现乱码。
3. 解决方案
3.1 设置PHP脚本字符编码
确保在PHP脚本文件开头处设置正确的字符编码,例如:
```php <?php header(。
第7章 PHP的错误和异常处理

+ 在运行PHP脚本的时候,PHP的解析器会尽 可能地报告它遇到的问题的。而这些错误 报告的行为都是与PHP的配置文件php.ini中 的配置指令相关的。这个文件我们可以通 过XAMPP的控制面板很容易的找到。
+ 我们使用notepad++打开这个文件。
+ 另外PHP还有多种错误级别,我们可以根据不同的报告采取不 同的调试方法。当然我们也是可以自己调整这些错误级别显示 与否。表中所示就是PHP中大多数的错误报告级别。
+ 如果需要将错误信息写入文本文件中我们就要在PHP配置文件中把log_errors开启。虽然在我们使用的集成 环境中是开启的。但是这里也展示一下log_errors开启后的形式。
+ 在我们的集成环境中,无需我们做任何改动就已经可以实现使用指定的文件记录错误日志的了。但是在默 认的PHP配置中,我们还需要知道一些地方需要做更改,如下所示就是应该修改的地方,虽然我们现在不 需要去修改,但是这里我们以备读者在以后自己配置环境的时候使用。如图所示。 控制PHP报告 所有错误
新的函数。
+ openlog()函数通过指定几个将在日志中文使用 的参数,为向系统系统日志插入消息做好准备。
它的语法如图所示。执行成功则返回TRUE, 失败则返回FALSE。
函数名
接受规定 的选项
openlog ( $ident , $option , $facility )
接受字符串
接受规定 的选项
}
+ 在PHP代码中的异常可以被throw语句抛出而被catch语句捕获。 throw是一个语句结构而不是一个函数,但必须给他传递一个对 象作为值。它的语法如图所示。
+ 在PHP中如果try代码块中出现了一个错误,我们就可以执行一 个抛出异常的操作。PHP中的异常必须手动抛出。最简单的情 况下我们可以
Php常见错误和解决方法

Php常见错误和解决⽅法Php常见错误和解决⽅法下⾯是php语⾔总结的⼀些常见错误,跟⼤家聊⼀下:php编程难免会遇到⼀些错误,调试错误虽然不是⼀门⾼深的学问但是有效的查找却很重要。
基本策略应遵循⼀下原则:1)出现错误,判断错误出现在那个环节。
2)判断出错原因,估计错误出现的位置3)查找错误根源4)对错误进⾏修改,⾸先要先备份,别弄的错误越改越多。
5)对修改后的代码进⾏测试。
⼿段:1)增加中间变量或者跟踪变量。
例如输出⼀⾏代码或者输出⼀些相关变量来发现错误根源;2)注释掉部分代码(排除法),当⽆法测试出错误根源的时候,就使⽤排除法,先注释掉⼀下代码,然后运⾏查看错误是否依然存在。
如果仍然存在则继续注释。
3)同过调试器来单步调试,这样可以跟踪整个程序的执⾏过程。
发现是否有些应该被执⾏的代码没有被执⾏。
或者变量赋值错误等各种导致错误的原因。
常见错误分享:1。
语法错误:1)缺少分号。
在编写代码的时候由于某个语句或者变量的结尾处没有使⽤“;”,从⽽导致程序出错;Parse error: syntax error, unexpected T_ECHO in D:\jworkServer\wwwroot\blog\login.php on line 42)缺少单引号或者双引号Parse error: syntax error, unexpected $end in D:\jworkServer\wwwroot\blog\login.php on line 73)缺少关键字或者逻辑结构例如没有写while条件Parse error: syntax error, unexpected ';', expecting T_WHILE inD:\jworkServer\wwwroot\blog\login.php on line 144)缺少括号出错在程序的最后⼀⾏⽽且其并没有错误,就很可能哪⾥缺少括号了Parse error: syntax error, unexpected ';' in D:\jworkServer\wwwroot\blog\login.php on line 155)缺少美元符号$;2.语义错误例如:$e=$a+$b+$c;⽽在php中的连接符是“。
PHP知识点(3)-正则
PHP知识点(3)-正则组成:定界符//原⼦元字符模式修正符⼀、原⼦每个模式中⾄少要包含⼀个原⼦普通的原⼦:0-9 a-z A-Z⼀些特殊符号和元字符作为原⼦:需要转义,如. * + ?等⼀些⾮打印字符:\n \f \r \t \v \cx通⽤字符类型:\d \D \s \S \w \W⾃字义原⼦表:[],从原⼦表中只能选择⼀个原⼦进⾏匹配⼆、元字符*+.|{n}{n,}{n,m}^或\A$或\Z\b单词的边界\B⾮单词边界[][^]()注意点:1、“.”通常可以使⽤“.*?”或“.+?”组合来匹配除换⾏符以外的任何字符串,取消贪婪模式2、后向引⽤,使⽤原字符()标记的开始和结束,存储匹配的缓冲区编号从1开始,连续编号直⾄99。
每个缓冲区都可以使⽤\n来访问,其中n 为⼀个标识特定缓冲区的⼀位或两位⼗进制数。
如\1,\2,\3等形式,在正则中使⽤还需要加上\转义,例如:\\1,\\2。
当需要使⽤模式单元,⽽⼜不想存储匹配结果时,可以使⽤⾮捕获元字符,“?:”,"?=","?!",来忽略对匹配结果的保存。
三、模式修正符i:不区分⼤⼩写m:将字符串视为多⾏s:如果加上此字符,模式中的原点”.“匹配所有字符,包括换⾏符\fx:模式中的空⽩忽略不计,除⾮它已经被转义e:只⽤在preg_replace 中,该函数在逆向引⽤做正常替换,将其作为PHP代码求值,并⽤其结果来替换所搜索的字符串,见细说PHP第307页例。
U:不要和.*?⼀起使⽤,否则会再次启⽤贪婪模式D:加上此修饰符后,模式中的$仅匹配结尾,如果加上m多⾏模式,则忽略此选项。
与Perl兼容的正则函数字符串的匹配与查找:1、int preg_match(pattern,subject[ ,array matchs])按指定的正则表达式,对字符串进⾏搜索和匹配⼀次,第⼀个参数是正则,第⼆个参数是字符串,第三个参数是匹配的结果放到这个数组中,最终返回结果是0或12、int preg_match_all(pattern,subject,array matchs[ ,int flags]),按照指定的正则匹配到字符串的末尾,可以获得所有的匹配结果,前三个参数同上,第四个参数有以下两个值:PREG_PATTERN_ORDER:默认,对结果排序使⽤$matchs[0]为全部模式匹配的数组,$matchs[1]为第⼀个括号中的⼦模式所匹配的字符串组成的数组。
php重要知识点总结(PHP网络开发必背)
PHP网站开发必用知识点总结,函数一览,开发必背魔术方法__construct()当实例化一个对象的时候,这个对象的这个方法首先被调用。
__destruct()当删除一个对象或对象操作终止的时候,调用该方法。
__get()当试图读取一个并不存在的属性的时候被调用。
__set() 当试图向一个并不存在的属性写入值的时候被调用。
__call() 当试图调用一个对象并不存在的方法时,调用该方法。
__toString() 当打印一个对象的时候被调用__clone()当对象被克隆时,被调用__isset()__unset()__autoload($classname)__sleep()__wakeup()系统常量__FILE__ 当前文件名__LINE__ 当前行数__FUNCTION__ 当前函数名__CLASS__ 当前类名__METHOD__ 当前对象的方法名PHP_OS 当前系统PHP_VERSION php版本DIRECTORY_SEPARATOR 根据系统决定目录的分隔符/\PATH_SEPARATOR 根据系统决定环境变量的目录列表分隔符; :E_ERROR 1E_W ARNING 2E_PARSE 4E_NOTICE 8M_PI 3.141592$_SERVER$_ENV 执行环境提交至脚本的变量$_GET$_POST$_REQUEST$_FILES$_COOKIE$_SESSION$_GLOBALS输出echo //Output one or more stringsprint //Output a stringprint_r()//打印关于变量的易于理解的信息。
var_dump()//打印变量的相关信息var_export()//输出或返回一个变量的字符串表示printf("%。
1f”,$num) //Output a formatted stringsprintf()//Return a formatted string编码转换string mb_convert_encoding (string $str , string $to_encoding [, mixed $from_encoding ] )iconv();时间date_default_timezone_set(”PRC”);date(”Y-m—d H:i:s");time();date("Y—m-d H:i:s”,time()+3600)ini_set(’date.timezone’, ’PRC');msec sec microtime()以秒返回时间戳explode(’', microtime())错误处理@1/0error_reporting(E_ALL) 显示所有错误error_reporting(0)trigger_error("Cannot divide by zero”, E_USER_ERROR);try{throw new Exception(”执行失败”);}catch (Exception $ex){echo $ex;}字符串处理string trim("eee ") trim (’ffffe','e') //ltrim rtrimarray explode(”.”,”fff.ff.f") 按指定字符切割string implode(".",$array)别名:join 把数组值数据按指定字符连接起来array str_split(”eeeeeeee”,4)按长度切割字符串array split("—”,"fff—ff-f”)按指定字符切割int strlen('ffffffff’)取字符长度string substr ( string $string , int $start [,int $length ] )substr($a,-2,2) 截取字符int substr_count($text,'is')字符串出现的次数string strstr($text,’h’) 第一次出现h后的字符串//别名:strchrint strpos($text,'h’)第一次出现h的位置strrpos();最后一次出现h的位置str_replace(’a', ’ttt',$t) 把$t里的'a'替换为'ttt'strtr($t,'is’,’ppp’) 把$t中’is'替换成’ppp'strtr("hi all,I said hello",array("hello" => "hi"))把’hello'转换成'hi’string md5_file(’1.txt',false) 文件数据md5加密int strcmp(string str1, string str2)字符串比较int strcasecmp(string str1,string str2) 忽略大小写string str_pad($i, 10,”-=”,STR_PAD_LEFT) 在原字符左边补'-=’,直到新字符串长度为10STR_PAD_RIGHTSTR_PAD_BOTHstring str_repeat(’1',5) 重复5个1void parse_str('id=11');echo $id;将字串符解析为变量array preg_grep(”/^(\d+)?\。
php程序员最容易出现的几个错误
php程序员最容易出现的几个错误php程序员最容易出现的几个错误每个人都会犯错,程序员的程序也不例外,下面是由店铺为大家整理的php程序员最容易出现的几个错误,喜欢的可以收藏一下!了解更多详情资讯,请关注店铺!1:不转意html entities一个基本的常识:所有不可信任的输入(特别是用户从form中提交的数据),输出之前都要转意。
echo $_GET['usename'] ;这个例子有可能输出:<script>/*更改admin密码的脚本或设置cookie的脚本*/</script>这是一个明显的安全隐患,除非你保证你的用户都正确的输入。
如何修复:我们需要将"< ",">","and" 等转换成正确的HTML表示(< , >', and "),函数htmlspecialchars 和 htmlentities()正是干这个活的。
正确的方法:echo htmlspecialchars($_GET['username'], ENT_QUOTES);2:语法错误语法错误包括所有的词法和语法错误,太常见了,以至于我不得不在这里列出。
解决办法就是认真学习PHP的语法,仔细一点不要漏掉一个括号,大括号,分号,引号。
还有就是换个好的编辑器,就不要用记事本了!3:很少使用或不用面向对象很多的.项目都没有使用PHP的面向对象技术,结果就是代码的维护变得非常耗时耗力。
PHP支持的面向对象技术越来越多,越来越好,我们没有理由不使用面向对象。
4:.使用旧版本的PHP很多程序员还在使用PHP4,在PHP4上开发不能充分发挥PHP的潜能,还存在一些安全的隐患。
转到PHP5上来吧,并不费很多功夫。
大部分PHP4程序只要改动很少的语句甚至无需改动就可以迁移到PHP5上来。
php学习干货知识点-提高PHP代码的质量
php学习干货知识点-提升PHP代码的质量1、不要应用绝对门路遴选是应用绝对门路:define("ROOT" , "/var/www/project/");require_once(ROOT 。
"。
/。
/lib/some_class。
php");我们界说了一个绝对门路,值被写死了。
我们还能够或许改良它。
门路 /var/www/project 也大概会篡改,那末我们每次都要篡改它吗? 不是的,我们能够或许应用__FILE__常量,如:define("ROOT" , pathinfo(__FILE__, PATHINFO_DIRNAME));require_once(ROOT 。
"。
/。
/lib/some_class。
php");2、不要间接应用 require, include, include_once,required_once能够或许在剧本头部引进多个文件,像类库,对象文件和副手函数等,如:require_once("lib/Database。
php");require_once("lib/Mail。
php");require_once("helpers/utitlity_functions。
php");3、为应用保留调试代码在开辟情况中,我们打印数据库查问语句,转存有疑难的变量值,而一旦疑难处置,我们正文或删去它们。
然则异常好的做法是保留调试代码。
define("ENVIRONMENT" , "development");if(! $db->query( $query ){if(ENVIRONMENT == "development"){echo "$query failed";}else{echo "Database error。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PHP经常容易记乱的知识
1.echo和print的区别
PHP中echo和print的功能基本相同(输出),但是两者之间还是有细微差别的。
echo输出后没有返回值,但print有返回值,当其执行失败时返回flase。
因此可以作为一个普通函数来使用,例如执行下面的代码后变量$r的值将为1。
$r = print "Hello World";
这意味着print可用在一些复杂的表达式中,而echo则不行。
但是,因为echo 语句不要求返回任何数值,所已在代码中echo语句的运行效率要略微快于print 语句。
2.include与require的区别
include()与require()的功能也基本相同(包含),但在用法上也有一些不同,include()是有条件包含函数,而require()则是无条件包含函数。
例如在下面代码中,如果变量$a为真,则将包含文件a.php:
if($a){
include("a.php");
}
而require()则和include()不同,不管$a取何值,下面的代码将把文件a.php 包含进文件里:
if($a){
require("a.php");
}
在错误处理方面,使用include语句,如果发生包含错误,程序将跳过include 语句,虽然会显示错误信息但是程序还是会继续执行!但requre却会给你来个致命错误。
当然,从字面意思上我们也可以理解七分:requre是很强硬的请求、要求的意思。
3.require_once()和include_once()语句
题外话了,因为长的像,简单require_once()和include_once()语句分别对应于require()和include()语句。
require_once() 和include_once()语句主要用于需要包含多个文件时,可以有效地避免把同一段代码包含进去而出现函数或变量重复定义的错误。
4.空字符串('')和NULL的区别
PHP中空字符串和NULL都是以值为0存储的,但是他们的类型并不一样,你可以试一下echo gettype('');和echo gettype(NULL);你会发现他们打印出来的分别是string和NULL,当然还有0也容易混淆,你可以试试echo gettype(0);打印一下类型,会发现0的类型是integer(整型),可见字符串('')、NULL和0是“等值”但不等类型。
5.isset和 empty的区别
从字面意思上我们就可以明白:empty是判断一个变量是否为“空”,而isset 则是判断一个变量是否已经设置。
但是这里有一点绝对要注意起来:当一个变量值为0,empty 认为这个变量同等于空,即相当于没有设置。
比如当我们检测$id 变量的时候,当$id=0 ,用empty和isset来检测变量$id是否已经配置,两都将返回不同的值:empty 认为没有配置,isset 则能够取得$id 的值,看下边例子:
$id=0;
empty($id)?print "我是空的":print "我是$id ."; //结果:我是空的
!isset($id)?print "我是空的":print "我是$id .";//结果:我是0
6.==(等)和===(恒等)的区别
回顾上面第四条空字符串("")和NULL的区别,再来看一个例子:
'' == NULL;
'' === NULL;
运行之后你会发现第一个为true,而第二个则为false!可见==只是比较值是否相等,而===则不但比较值,还会比较类型,更为严格。
7.self :: 和 this-> 的区别
在访问PHP类中的成员变量或方法时,如果被引用的变量或者方法被声明成
const(定义常量)或者static(声明静态),那么就必须使用操作符::,反之如果被引用的变量或者方法没有被声明成const或者static,那么就必须使用操作符->。
另外,如果从类的内部访问const或者static变量或者方法,那么就必须使用自引用的self,反之如果从类的内部访问不为const或者static变量或者方法,那么就必须使用自引用的$this。
8.strstr() 与 strpos() 的区别
stristr() 不区分大小写 strstr() 区分大小写
函数查找字符串在另一个字符串中第一次出现的位置。
如果成功,则返回字符串的其余部分(从匹配点)。
如果没有找到该字符串,则返回 false。
stripos() 不区分大小写 strpos() 区分大小写
函数返回字符串在另一个字符串中第一次出现的位置。
如果没有找到该字符串,则返回 false。
经测试证明如果只是单纯查找判断是否存在则strpos()的执行效率要大于strstr()
9.PHP中 HTTP_HOST 和 SERVER_NAME
相同点:
当满足以下三个条件时,两者会输出相同信息。
1. 服务器为80端口
2. apache的conf中ServerName设置正确
3. HTTP/1.1协议规范
不同点:
1. 通常情况:
_SERVER["HTTP_HOST"] 在HTTP/1.1协议规范下,会根据客户端的HTTP请求输出信息。
_SERVER["SERVER_NAME"] 默认情况下直接输出apache的配置文件httpd.conf中的ServerName值。
2. 当服务器为非80端口时:
_SERVER["HTTP_HOST"] 会输出端口号,例如::8080
_SERVER["SERVER_NAME"] 会直接输出ServerName值
因此在这种情况下,可以理解为:HTTP_HOST = SERVER_NAME : SERVER_PORT
3. 当配置文件httpd.conf中的ServerName与HTTP/1.0请求的域名不一致时:
httpd.conf配置如下:
ServerName
ServerAlias
客户端访问域名
_SERVER["HTTP_HOST"] 输出
_SERVER["SERVER_NAME"] 输出
所以,在实际程序中,应尽量使用_SERVER["HTTP_HOST"] ,比较保险和可靠。
如果在端口映射的情况下,并且在内网访问,用“$_SERVER['HTTP_X_FORWARDED_HOST']”比较好。
(ps:本文章由北大青鸟广安门校区搜集自互联网)。