一、环境
windows下安装wampserver 3.0.6
1、更改www目录
1.1 修改 httpd.conf(实现更改默认网站路径,即将Http://localhost定向到自己的默认目录:E:/www/)
1.2 修改 httpd-vhosts.conf 很多教程上都没说这一步,然后我改了不成功,不知道这是不是3.0.6的新特性?
13 修改wampmanager.ini和wampmanager.tpl(改菜单中的“www 目录”指向)
二、语法
1、变量以 $ 符号开始,后面跟着变量的名称
<?php
$x=5;
$y=6;
$z=$x+$y;
echo $z;
?>
1.1 变量名是区分大小写的($y 和 $Y 是两个不同的变量)。
1.2 PHP 没有声明变量的命令。
1.3 在所有函数外部定义的变量,拥有全局作用域。除了函数外,全局变量可以被脚本中的任何部分访问,要在一个函数中访问一个全局变量,需要使用 global 关键字。
<?php
$x=5; // 全局变量
function myTest()
{
$y=10; // 局部变量
echo "<p>测试函数内变量:<p>";
echo "变量 x 为: $x";
echo "<br>";
echo "变量 y 为: $y";
}
myTest();
echo "<p>测试函数外变量:<p>";
echo "变量 x 为: $x";
echo "<br>";
echo "变量 y 为: $y";
?>
结果:
测试函数内变量:
变量 x 为:
变量 y 为: 10
测试函数外变量:
变量 x 为: 5
变量 y 为:
1.4 在函数内调用函数外定义的全局变量,我们需要在函数中的变量前加上 global 关键字
<?php
$x=5;
$y=10;
function myTest()
{
global $x,$y;
$y=$x+$y;
}
myTest();
echo $y; // 输出 15
?>
1.5 PHP 将所有全局变量存储在一个名为 $GLOBALS[index] 的数组中。 index 保存变量的名称。这个数组可以在函数内部访问,也可以直接用来更新全局变量。
上面的实例可以写成这样:
2、函数
1.1 用户定义的函数声明以关单 "function" 开头:
语法
function functionName() {
被执行的代码;
}
函数名能够以字母或下划线开头(而非数字)。
函数名对大小写不敏感。
1.2 默认参数值
下面的例子展示了如何使用默认参数。如果我们调用没有参数的函数,它的参数会取默认值:
实例
<?php
function setHeight($minheight=50) {
echo "The height is : $minheight <br>";
}
setHeight(); // 将使用默认值 50
?>
3、超全局变量
$GLOBALS 这种全局变量用于在 PHP 脚本中的任意位置访问全局变量(从函数或方法中均可)。
PHP 在名为 $GLOBALS[index] 的数组中存储了所有全局变量。变量的名字就是数组的键。
实例
<?php
$x = 75;
$y = 25;
function addition() {
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}
addition();
echo $z;
?>
三、安全性
1、如果避免 $_SERVER["PHP_SELF"] 被利用?
$_SERVER["PHP_SELF"] 是一种超全局变量,它返回当前执行脚本的文件名。
因此,$_SERVER["PHP_SELF"] 将表单数据发送到页面本身,而不是跳转到另一张页面。这样,用户就能够在表单页面获得错误提示信息。
通过使用 htmlspecialchars() 函数能够避免 $_SERVER["PHP_SELF"] 被利用。
表单代码是这样的:
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
htmlspecialchars() 函数把特殊字符转换为 HTML 实体。现在,如果用户试图利用 PHP_SELF 变量,会导致如下输出:
<form method="post" action="test_form.php/"><script>alert('hacked')</script>">
无法利用,没有危害!
四、其他
1、PHP json_encode中文乱码解决方法
2、URL映射
(1)现在服务器的httpd.conf文件中开启重写.htaccess的权限,将下列代码添加到httpd.conf文件中
<Directory ".htaccess文件所在绝对路径">
AllowOverride All
</Directory>
(2)关于.htaccess文件的存放位置:假如你之前的访问路径为:域名/car_project/index.php
明显,这个路径访问的是car_project文件夹中的index.php文件,所以你要是想重写该路径,你就应该将.htaccess文件放到car_project文件夹中。
建立.htaccess 文件方法:
如 果是在windows平台下,刚开始还真不知道怎么建立”.htaccess”文件,因为这个文件实际上没有文件名,仅仅只有扩展名,通过普通方式是无法 建立这个文件的,先建立一个htaccess.txt的文本文件(当然,这个文本文件的名字你可以随便取),然 后进入cmd命令 窗口,通过cd切换当刚建立htaccess.txt文件的文件夹,然后输入命令:rename htaccess.txt .htaccess ,然后点击键盘Enter键即可。
(3)之后再将.htaccess文件将里面的重写引擎开启,在. htaccess文件中加入下列代码
<IfModule mod_rewrite.c>
RewriteEngine on
</IfModule>
(4)之后我们需要在IfModule标签中设定“重定向匹配需要应用的URL基本地址”,指令为RewriteBase,例子如下:
RewriteBase /demo/
而我们现在正在使用的地址是:http://localhost/demo/
(5)在IfModule标签里写入RewriteRule指令后,就可以对url进行重写了,比如可以在标签中加入下列代码:
RewriteRule somepage.php otherpage.php
这代表任何人访问somepage.php页面,实际显示的是otherpage.php页面
同理,我们还可以使用正则表达式来对输入URL参数的方式进行重写,比如:
RewriteRule ([a-zA-Z]{1,})/([a-zA-Z]{1,}).do$ $1/index.php?action=$2
([a-zA-Z]{1,})-([0-9]{1,}).html$是规则,index.php?action=$1&id=$2是要替换的格式,$1代表第一个括号匹配的值,$2代表第二个,如此类推!!
(6)如此,现在httpd.conf文件和.htaccess文件中应该有如下实例代码:
httpd.conf文件中:
<Directory ".htaccess文件所在绝对路径">
AllowOverride All
</Directory>
.htaccess文件中:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /demo/
RewriteRule ([a-zA-Z]{1,})/([a-zA-Z]{1,}).do$ $1/index.php?action=$2
</IfModule>
我在浏览器中输入url:
http://localhost:90/pi/home/firstPage.do
实际访问的是:
http://localhost:90/demo/home/index.php?action=firstPage
这样就访问了index.php中的firstPage的action。
3、服务器离线,2/3服务运行中
右击计算机->管理->服务和应用程序->服务
然后查找wamp开头的,我这次发现wampApache没有启动,看来是Apache的问题。
点击启动,发现弹出框报错“Windows不能在本地计算机启动Apache”,在运行中切换到你的apache的bin目录下,执行httpd.exe,看有什么提示:
根据提示,找到报错的文件,原来是我AllowOverride前面多了几个空格,删掉,重新运行wamp解决问题。
参考:Apache系列—Windows不能在本地计算机启动Apache
参考:
http://www.jb51.net/article/70614.htm