随笔分类 - PHP技术
摘要:在使用 php 编写页面程序时,我经常使用变量处理函数判断 php 页面尾部参数的某个变量值是否为空,开始的时候我习惯了使用 empty() 函数,却发现了一些问题,因此改用 isset() 函数,问题不再。顾名思义,empty() 判断一个变量是否为“空”,isset() 判断一个变量是否已经设置。正是这种所谓的“顾名思义”,令我开始时走了些弯路:当一个变量值等于0时,empty()也会成立(True),因而会发生 一些意外。原来,empty() 和 isset() 虽然都是变量处理函数,它们都用来判断变量是否已经配置,它们却是有一定的区别:empty还会检测变量是否为空、为零。当一个变量值
阅读全文
摘要:[php] view plaincopyprint?清单1.安全无暇的代码$myUsername=‘tmyer’;$arrayarrayUsers=array(‘tmyer’,‘tom’,‘tommy’);define(“GREETING”,‘Hellothere’.$myUsername);?> 但是,下面的数据元素都是有瑕疵的。清单2.不安全、有瑕疵的代码$myUsername=$_POST['username'];//tainted! $arrayarrayUsers=array($myUsername,‘tom’,‘tommy’);//tainted! defin
阅读全文
摘要:这个陷阱在PHP里存在很久了,先看代码: <?php $array = array(1, 2, 3); foreach ($array as &$v) {} foreach ($array as $v) {} print_r($array); ?> 运行代码,得到的结果却是: Array ( [0] => 1 [1] => 2 [2] => 2 )可以发现,经过两次foreach后,最后一个元素由3变成了2。 为什么会这样呢?这是因为第一次foreach的时候$v成为了一个引用变量($array[2]),如此,当第二次foreach的时候,实际上只是在对这
阅读全文
摘要:Web应用程序完整的URL管理包括两个方面。首先, 当用户请求约定的URL,应用程序需要解析它变成可以理解的参数。第二,应用程序需求提供一种创造URL的方法,以便创建的URL应用程序可以理解的。对于Yii应用程序,这些通过CUrlManager辅助完成。Creating URLs(创建网址)虽然URL可被硬编码在控制器的视图(view)文件,但往往可以很灵活地动态创建它们:$url=$this->createUrl($route,$params);$this指的是控制器实例;$route指定请求的route 的要求;$params列出了附加在网址中的GET参数。默认情况下,URL以get
阅读全文
摘要:一,在Yii中使用session 1,CHttpSession 与原生态php5的session使用差别是,php5使用session_start();$_session['key'] = $value; 在yii中,session已经被封装。 To start the session, call open(); To complete and send out session data, call close(); To destroy the session, call destroy(). If autoStart is set true, the session wil
阅读全文
摘要:1. % YiiRoot/framework/yiic webapp WebRoot/testdrive2.默认Yii框架的URL规则是 http://hostname/index.php?r=controllerName/actionName&id=13. $this->render('index',array('a'=>"123"));4. $hostname=Yii::app()->request->userHost; $status=$_REQUEST['status'];5. '
阅读全文
摘要:一句话,转发是服务器行为,重定向是客户端行为。为什么这样说呢,这就要看两个动作的工作流程: 转发过程:客户浏览器发送http请求----》web服务器接受此请求--》调用内部的一个方法在容器内部完成请求处理和转发动作----》将目标资源发送给客户;在这里,转发的路径必须是同一个web容器下的url,其不能转向到其他的web路径上去,中间传递的是自己的容器内的request。在客户浏览器路径栏显示的仍然是其第一次访问的路径,也就是说客户是感觉不到服务器做了转发的。转发行为是浏览器只做了一次访问请求。重定向过程:客户浏览器发送http请求----》web服务器接受后发送302状态码响应及对应新的l
阅读全文
摘要:什么是索引?索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存。如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录。表里面的记录数量越多,这个操作的代价就越高。如果作为搜索条件的列上已经创建了索引,MySQL无需扫描任何记录即可迅速得到目标记录所在的位置。如果表有1000个记录,通过索引查找记录至少要比顺序扫描记录快100倍。假设我们创建了一个名为people的表:CREATE TABLE people ( peopleid SMALLINT NOT NULL, name CHAR(50) NOT NULL ); 然后
阅读全文
摘要:至少需要3个字段第一个是主键(ID),第二个是父级分类ID(parentid),第三个是分类的名称(classname)。可能的一种效果是:ID PARENTID CLASSNAME1 0 一级分类A2 0 一级分类B3 1 二级分类A4 1 二级分类B主要思路:首先看第三行和第四行,父类ID(PARENTID)的值是1,表示属于id=1这个类的子类,而,一,二两行因为是一级分类,没有上级分类,所以父类ID(PARENTID)的值是0,表示初级分类,依次类推便实现了无限级分类。最终的效果是:├一级分类A├─┴二级分类A├─┴二级分类B├一级分类B然后就是程序,这里以PHP作为描述语言,可以很方
阅读全文
摘要:select id1,name1,sex2from 表2left join 表1 on 表1.name1=表2.name2 where 表2.sex2='女'--主表 表2 全部显示 副表 表1 满足条件则显示以主表表2为主,根据where查询所有的记录集,与此同时链接与副表表1,调出与主表表2相关联的存在于副表表1中的相关记录.
阅读全文
摘要:PHP代码如下: (把FORM放在HTML文件与PHP分离开也可以!)<?$dir = getcwd();//获取当前目录if($_POST["sub"]){//判断点击了提交按钮$nname = $_FILES["upfiles"]["name"];//获取上传的文件名称$tname = $_FILES["upfiles"]["tmp_name"];//获取上传文件的临时文件名move_uploaded_file($tname,$nname);//移动上传文件,在这之前其实文件已经上传成
阅读全文
摘要:web应用开发中经常出现中文乱码情况!今天主要整理下思路:出现乱码的大多数情况是我们进行AJAX时所遇到的!因为直接数据库读取是不会有任何编码上的问题的~1.从前台JS提交数据到后台的情况下AJAX数据时,不管是直接用底层xmlHttprequest还是用jQuery的ajax进行数据传递时!ajax都会使用utf-8进行编码后发送!如果我们的页面是UTF-8那没有问题!传递过去的中文数据不会乱码!如果是GB2312的话~问题就来了!GBK被UTF-8转换后发送到后台,这时后台直接接收到的已经乱码了!(解决方法:后台语言为PHP的情况下,iconv('utf-8','g
阅读全文

浙公网安备 33010602011771号