1.超全局变量$_GET, $_POST 。另外还有$_REQUEST但不要经常用这个,这个综合了post和get的概念,可能会有用,但明确点更好。
1.推荐网站存储路径:/home/USER/project/0/html //用于存放公开在网上供别人访问的内容
/lib //用于存放网站本身所需要调用的一些函数
/etc //用于存放网站的相关配置
如果要在/html目录中的index.php中引用/etc目录的helper.php中的某个函数,则可以用语句require("../etc/helper.php"),在php代码中..这个可以用,但apache服务器不允许,这样URL地址就不能用..了,这样可以安全的保证网络访问者无法访问他们不该访问的其他目录去。
利用document root 指令可以设置html为网络上其他用户能访问的目录。这样避免一些敏感信息被泄露。
2.为了安全起见,最好把头文件显示的如PHP和apache版本号,关掉,。
3. <?php session_start(); ?> 告诉网络服务器记住此用户。这在每个需要用到session的页面开头都要调用,但是更好的解决办法是在config.php中使用,然后其他页面调用config.php。
4.$_SESSION,他和其他超全局变量一样,也是关联数组或哈希表,不过不同在于成都网站建设公司的上一讲的两个超全局变量是通过用户表单提交得到的数 据。而$_SESSION才是编程者自己的数据表,你可以往里面存入任何需要的键值对。只要程序开头执行了session_start()函数,当用户走开回来再点击另一个页面时,编程者会得到相同的变量和内容。笼统的讲这个变量里面可能包含了购物车内的产品编号以及购买数量
student问题回答:对于像亚马逊这样的网站,不断的去读取获得SESSION值,确实对效率有影响,但没办法这就是HTTP所构建的世界,这在 Ajax中逐渐成为一个问题,我们需要不断刷新页面,但HTTP不会像SSH这种有状态连接这样持续更新
5. if($_SESSION["authenticated"]) //如果SESSION中存在一个叫authenticated的键值。
6.为了方便演示,临时定义了:USER和PASS,本来应该在数据库中的
[php] view plaincopy
<EMBED id=ZeroClipboardMovie_1 height=18 name=ZeroClipboardMovie_1 type=application/x-shockwave-flash align=middle pluginspage=http://www.macromedia.com/go/getflashplayer width=18 src=http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf wmode="transparent" flashvars="id=1&width=18&height=18" allowfullscreen="false" allowscriptaccess="always" bgcolor="#ffffff" quality="best" menu="false" loop="false">
login1.php:
define("USER","jack"); //定义常量USER,其值为jack
define("PASS","qwe123"); //定义常量PASS,其值为qwe123
if(isset($_POST["user"]) && isset($_POST["pass"])) //检验用户提交信息中是否有这两项
{
if($_POST[""user] == USER && $_POST["pass"] == PASS)
{
$_SESSION["authenticated"] = TRUE; //在login1.php中把这个设置为true之后,而在其他页面文件开头都有session_start()函数因此都可以获得该值
$host = $_SERVER["HTTP_HOST"];
$path = rtrim(dirname($_SERVER["PHP_SELF"]),"/\\");
header("Location: http://$host$path/home.php"); //登录成功后重定向回homepage
exit; //表示登录成功后跳转并且不再执行后面的程序了,这在把两个文件合并为一个文件时非常好。
}
}
7.上一讲用了两个文件,其中一个是表单页面google.php和另一个是后台处理页面proc.php。由表单页面把信息提交给处理页面进行处理。。这样做其实没必要,因为这两个文件会造成更多的工作量而且还有个问题:如果我在提交表单后发现有一个地方填错了,于是重新再回到表单页面时就得把整个表单重填一次。所以最好的办法就是把两个文件合为一体,然后用编程语言来判断如上面第六条的第一个if语句表示user和pass同时设置了并且还进行了提交
8.<? if($_SESSION["aut"]) ?> //这样写会给出notice提示,如果代码是自己用那可以用@屏蔽掉提示:if(@$_SESSION["aut"]),而规范的应是 if(isset($_SESSION["aut"]))
9.$_SERVER 包含了服务器IP,服务器主机名,SSL是否开启以及当前文件名等,如$_SERVER["PHP_SELF"]表示的就是当前文件名,可以用在标签中,这种非硬编码的方式当编程者改变文件名的时候就不用再去文件中修改相应的代码了如:<form action="<? echo $_SERVER["PHP_SELF"]; ?>" method="post">
10.目前讲的这中登录表单还有个小不足,也就是:当打错用户名或密码时,通常网站会记录用户名而让用户重新输入密码的功能。
在输入用户名的输入栏的标签中设置value值为用户的输入<input name="user" type="text" value="<? echo htmlspecialchars($_POST["user"]); ?>" />
其中的htmlspecialchars函数是为了防止用户在输入栏中输入html代码或者javascript代码,虽然输入了也只是他们自己看到效果,但这也说明这是编程者的马虎。该函数能把html中的特殊字符如&之类的转化成字符实体,这样用户输入什么就正常显示出这个字符