本帖最后由 09927306 于 2010-11-28 22:03 编辑
PS:文中代码均出自<Web开发入门经典>---使用PHP5 Apache和MySQL (这本书怎么写的是PHP6呢? 明明是PHP5啊可能是我知道的太少了)(2009版作者2个美国人 薛炎译)第一种:通过URL传送变量例如:http://www.xxx.com/news/list.php?id=123&;lang=enid=123就是新闻的参数,而lang=en就表示语言是英文,那么我们可以通过PHP的$_GET来取得id和lang的值比如说要检索id的值 只需要$_GET['id'] 就能取到id的值 同理 lang也一样通过URL传值的缺点:1.每个人都能看到变量的值,所以用这种方式传输敏感数据并不是安全的.2.用户可以随意修改URL中的值,并可以尝试不同的组合,使打开网站后显示出我们不希望显示出来的信息.3.用户还可能使用保存已久的URL和内嵌其中的旧变量提取不正确的或陈旧信息.第二种:通过会话中传送变量如果说信息不那么敏感,或者信息是静态的,完全可以使用URL传值,但如果用户要传送用户名,密码等信息或者传送地址和电话号码等个人信息,那最好要在传送的时候保持私密性.例如可以使用COOKIE 或者SESSION.(个人想法,因为是重头重新学习~先说说SESSION).会话是仅存在浏览器关闭前的一组临时变量.会话信息包括会话ID,被授权的个人是否登陆到站点上等.这些信息都是为PHP临时存储的以便在需要时使用.如果强制用户使用COOKIE传送变量, 可以在PHP.ini里边设置 session.use_only_cookies=1另外,在使用会话前应确保php.ini文件已经做好修改,即为:session.save_path显示有效路径.接着只需要调用session_start()函数(写在本页的所有的输出语句前),在PHP中开始一个会话.例如:文件1 test_1.php
- <?php
- session_start();
- $_SESSION['username']='van';
- $_SESSION['authuser']=1;
- ?>
- <html>
- <head>
- <title>test1</title>
- </head>
- <body>
- <?php
- $myfavmovie=urlencode('Life of brian');
- echo "<a href="test2.php?favmovie=$myfavmovie">";
- echo "Click here to see information about my favorite movie!";
- echo "</a>";
- ?></body>
- </html>
复制代码
test2.php文件:
- <?php
- session_start();
- if($_SESSION['authuser']!=1)
- {
- echo "sorry,but you don't have permission to view this page!";
- exit();
- }
- ?>
- <html>
- <head>
- <title>
- My Movie Site -<?php echo $_GET['favmovie'];?></title>
- <body>
- <?php
- echo 'welcome to our site,';
- echo $_SESSION['username'];
- echo '!<br/>';
- ?>
- </html>
复制代码
第三种:用cookie传送变量使用cookie存在潜在的安全风险,黑客可以通过cookie来获取你在这个web上所留下来的信息,加以利用,所以最好不要把私人信息存储在计算机上由于访客可能选择关闭cookie功能,或者选择删除计算机中的cookie,所以从开发的角度来看,使用cookie信息并不是最佳的方法那么,为什么开发人员还要使用cookie? 于会话相比,在cookie中存储信息的优点是持久性.会话的存储时间不会超过浏览器窗口打开的时间.会话也会在浏览器关闭时丢失其全部信息.而cookie可以在个人计算机上保存很长时间,这个时间可以由开发人员来设定.之后就会自动过期.正是因为cookie可以把访客的用户名或语言喜好等信息持久性的存储,所以用户每次访问站点,才不需要再次输入这些信息.即使由于某些原因有人截获了这些信息,也不会是世界末日(编者说的,个人觉得不太可能不是世界末日.现在伪造cookie的这么多)使用COOKIE传送变量 可以使用php.ini文件中的session.cookie_lifetime进行配置,把cookie的寿命设置为长于浏览器的寿命即可(不太明白).要设置cookie可以使用setcookie()函数格式如下(取自w3school):
地址:http://www.w3school.com.cn/php/func_http_setcookie.asp例子就不写了,有需要的可以去上边的地址看看
第四种传送:用窗体传送信息
窗体是在HTML中编码,并保存在HTML中.窗体由4个部分组成:
- 开标记行:用<form>表示.这个标记行必须包含action属性和method属性,action属性是给窗体提供另一个程序的URL或路径(可以是当前文件),使该程序可以从窗体中提取并带走数据.method属性(GET或POST)则告诉窗体如何带走数据(POST首选,因为它比较安全,因为它不在URL中传送信息).
- 窗体的内容,包括输入字段:输入字段是用户输入信息的区域,就是<input>表单,<textarea>这些东西.输入的字段必须包含type和name属性,不过其他的属性也可以有,但不是必须的.输入字段的类型最常见的有:text,check box,radio,select,password等.
- 动作按钮或图像,一般用于提交/清理信息.用户定义的按钮在技术上也认为是输入类型:包括:submit,reset,image(经常作为图片按钮).
- 闭标记行:</form>
|