随笔分类 -  PHP

摘要:定义和用法 set_error_handler() 函数设置用户自定义的错误处理函数该函数用于创建运行时期间的用户自己的错误处理方法。该函数会返回旧的错误处理程序,若失败,则返回 null。语法 set_error_handler(error_function,error_types)参数 描述 error_function 必需,规定发生错误时运行的函数。error_types 可选。规定在哪个错误报告级别会显示用户定义的错误。默认是 "E_ALL"。提示和注释提示:如果使用了该函数,会完全绕过标准的 PHP 错误处理函数,如果必要,用户定义的错误处理程序必须终止 (di 阅读全文
posted @ 2012-06-10 16:46 曾是土木人 阅读(232) 评论(0) 推荐(0)
摘要:]转载自:http://www.cnblogs.com/cnbeir/archive/2012/05/05/2484635.html在编写php程序时,错误处理是一个重要的部分。如果程序中缺少错误检测代码,那么看上去很不专业,也为安全风险敞开了大门例:<?php $a = fopen('test.txt','r'); //这里并没有对文件进行判断就打开了,如果文件不存在就会报错?> 那么正确的写法应该如下:<?php if(file_exists('test.txt')){ $f=fopen('test.txt' 阅读全文
posted @ 2012-06-10 16:09 曾是土木人 阅读(1606) 评论(0) 推荐(2)
摘要:ZendFramework是基于PHP5的一个开源,面向对象的Web应用框架。当前最新的的版本是ZendFramework1.7,其中MVC组件已经相当成熟。到底什么是MVC?MVC是Model-View-Controller的缩写,即模型-视图-控制器。它是XeroxPARC在20世纪80年代为编... 阅读全文
posted @ 2012-06-09 21:56 曾是土木人 阅读(655) 评论(0) 推荐(0)
摘要:本文来自:http://gonefish.info/blog/?page_id=461在该系列的第一部分中,简要介绍了Zend_Controller的相关组件,在第二部分的我们将详细介绍相关组件是怎样工作的,并结合源代码进行一些讲解。讲解源代码的版本是ZendFramework1.7,但由于Zend... 阅读全文
posted @ 2012-06-09 21:53 曾是土木人 阅读(308) 评论(0) 推荐(0)
摘要:分页思路:只需要得到两个变量就成功了一半:每页要显示的记录数$pageSize表中总的数据量 $rowCount有了以上两个变量,我们就可以得出 共有几页了$pageCount然后通过for循环,比如总共有13个页面,那么很容易就能通过for循环输出页数$nav='';//用来保存页数的一个变量for ($i=1;$i<=13;$i++){ $nav.="<a href='index.php?page=".$i."'>第".$i."页</a> "; } 以上的for循环将输 阅读全文
posted @ 2012-05-30 17:59 曾是土木人 阅读(1111) 评论(2) 推荐(0)
摘要:【1】页面之间无法传递变量 get,post,session在最新的php版本中自动全局变量是关闭的,所以要从上一页面取得提交过来得变量要使用$_GET['foo'],$_POST['foo'],$_SESSION['foo']来得到。当然也可以修改自动全局变量为开(php.ini改为register_globals = On);考虑到兼容性,还是强迫自己熟悉新的写法比较好。【2】Win32下apache2 用get方法传递中文参数会出错:test.php?a=你好&b=你也好传递参数是会导致一个内部错误解决办法:"test.p 阅读全文
posted @ 2012-05-15 10:51 曾是土木人 阅读(437) 评论(0) 推荐(0)
摘要:今天,总监跟我说,由于客户需要,让我针对zencart进行些简单的二次开发。 大体功能如下:当商品的库存为0的时候,在前台显示一个提示信息(由于这个功能,zencart默认就已经有了,所以就没去修改)在后台也应该提示相关信息,以提醒网站运营人员最终的效果如下:Code:<!-----------------库存警告 start--><?php $sql="SELECT products_id,products_name,(SELECT count('products_id') FROM ".TABLE_PRODUCTS." WHE 阅读全文
posted @ 2012-04-25 22:31 曾是土木人 阅读(900) 评论(0) 推荐(0)
摘要:从这里免积分下载插件:zencart二次开发之改进zencart批量上传插件,支持批量上传细节图zencart批量上传插件easypopulate是对products数据表进行操作的,我们只需在easypopulate.php文件中进行一些修改即可让其支持批量上传细节图的功能最终效果截图:注意:这个新增功能主要是考虑到每次产品采集回来后,都得按照规则修改产品细节图的名称,比如:产品大图名称:test.jpg,则要让zencart系统自动帮我们识别产品细节图的话,需要我们手动更改产品名称,比如产品细节图的名称:test_01.jpg,test_02.jpg,如此即可。但是按照系统的默认做法将带来 阅读全文
posted @ 2012-03-29 13:54 曾是土木人 阅读(3518) 评论(4) 推荐(1)
摘要:从这里免积分下载zencart二次开发之自动查找产品细节图通过以下代码,可以在打开zencart产品信息页面的时候,让系统自动根据信息页面的产品id号,找到相对应的产品细节图,比系统默认的方法查找效率更高 1 $sql='SELECT `products_additional_image` FROM '.TABLE_PRODUCTS.' WHERE products_id='.$_GET['products_id']; 2 $small_pic = $db->Execute($sql); 3 $small_pic_path=explode( 阅读全文
posted @ 2012-03-29 13:46 曾是土木人 阅读(2228) 评论(0) 推荐(0)
摘要:方法一:密码比对思路:首先通过用户输入的用户名去查询数据库,得到该用户名在数据库中对应的密码,再将从数据库中查询到的密码和用户提交过来的密码进行比对。代码: $sql="select password from users where username='$name'"; $res=mysql_query($sql,$conn); if ($arr=mysql_fetch_assoc($res)){//如果用户名存在 if ($arr['password']==$pwd) {//密码比对 ec... 阅读全文
posted @ 2012-01-15 16:02 曾是土木人 阅读(545) 评论(0) 推荐(0)
摘要:通过启用php.ini配置文件中的相关选项,就可以将大部分想利用SQL注入漏洞的骇客拒绝于门外。 开启magic_quote_gpc=on之后,能实现addslshes()和stripslashes()这两个函数的功能。在PHP4.0及以上的版本中,该选项默认情况下是开启的,所以在PHP4.0及以上的版本中,就算PHP程序中的参数没有进行过滤,PHP系统也会对每一个通过GET、POST、COOKIE方式传递的变量自动转换,换句话说,输入的注入攻击代码将会全部被转换,将给攻击者带来非常大的困难。 虽然如此,攻击者仍然有机会进行SQL注入攻击。。。。。。前提是,当参数为数字型的时候,且未经过I.. 阅读全文
posted @ 2012-01-14 12:54 曾是土木人 阅读(4273) 评论(4) 推荐(0)
摘要:想在本地测试的话,可以在此免积分下载:利用SQL注入漏洞拖库同上一篇文章(利用SQL注入漏洞登录后台)一样,我们需要创建数据表,并在表中出入几条数据以备测试之用。在数据库中建立一张表:CREATE TABLE `article` ( `articleid` int(11) NOT NULL AUTO_INCREMENT, `title` varchar(100) CHARACTER SET utf8 NOT NULL DEFAULT '', `content` text CHARACTER SET utf8 NOT NULL, PRIMARY KEY (`articleid`) 阅读全文
posted @ 2012-01-12 21:24 曾是土木人 阅读(9664) 评论(2) 推荐(1)
摘要:最近CSDN数据库泄露事件闹得沸沸扬扬,处于安全隐患考虑,就从网上下载了273M的sql文件,想查看下自己在csdn的注册信息是否遭到泄露。另外,处于学习的目的,自己做了写了一个可以查询用户信息的小模块。自己是个小菜鸟,写的过程中,遇到了很多问题,在此列出,希望大家帮忙指点迷津。。。。。。FAQS:①直接对sql文件进行操作的话,查找效率似乎很慢,如何提高呢?②我是将数据写入数据库再对数据库操作的,但,每次要查询的时候,需要从头到尾遍历一遍,几十万条的数据量,也得花费很长时间,后面,对数据表进行索引,速度是提高了不少,但是还是有点差强人意,不知道还有什么优化的办法?③php程序的默认的最长执行 阅读全文
posted @ 2011-12-28 19:09 曾是土木人 阅读(1067) 评论(2) 推荐(0)
摘要:$tpl=new Smarty();//新建一个smarty对象,我使用的是Smarty-3.1.6版本1.设置smarty模板路径$tpl->setTemplateDir();默认情况下是templates2.设置smarty模板编译路径$tpl->setCompileDir();默认情况下是templates_c3.设置smarty模板引擎的左右 分隔符, $tpl->left_delimiter="<{"; $tpl->right_delimiter="}>"; 默认情况下:public $left_delimi 阅读全文
posted @ 2011-12-19 11:32 曾是土木人 阅读(3818) 评论(1) 推荐(2)
摘要:深入浅出Smarty模板引擎工作机制,我们将对比使用smarty模板引擎和没使用smarty模板引擎的两种开发方式的区别,并动手开发一个自己的模板引擎,以便加深对smarty模板引擎工作机制的理解。在没有使用Smarty模板引擎的情况下,我们都是将PHP程序和网页模板合在一起编辑的,好比下面的源代码:<?php$title="深处浅出之Smarty模板引擎工作机制";$content="Smarty模板引擎原理流程图";$auth="MarcoFly";$website="www.MarcoFly.com"; 阅读全文
posted @ 2011-12-10 22:19 曾是土木人 阅读(7981) 评论(4) 推荐(5)
摘要:源代码下载地址:深入浅出之Smarty模板引擎工作机制接下来根据以下的Smarty模板引擎原理流程图开发一个自己的模板引擎用于学习,以便加深理解。 Smarty模板引擎的原理,其实是这么一个过程: 把模板文件编译成php文件,然后每次都去读取下模板的修改时间,没有修改就不编译。然后include这个“编译”后的PHP文件。 所谓编译也就是模板用正则替换成含PHP代码的过程。 实际上并不会每次请求都编译,所以性能尚可。 模板文件和php程序文件经过模板引擎的编译后合成为一个文件,即编译后的文件。接下来,我们根据该原理流程写一个简单的模板引擎。。。。。。 先贴上核心代码: Smart... 阅读全文
posted @ 2011-12-10 22:18 曾是土木人 阅读(8144) 评论(7) 推荐(10)
摘要:smarty模板引擎的foreach循环语句结构中的iteration和total的区别:total 显示的是循环执行的总次数iteration 显示的是当前循环的执行次数故在循环中,如果你想打印出每个循环的当前序列号,可以使用<{$smarty.foreach.foreachname.iteration}>比如:<{foreach from=$article item=val key=key name=whf}> <{$smarty.foreach.whf.iteration}>---<{$key}>--><{$val}>&l 阅读全文
posted @ 2011-12-09 16:35 曾是土木人 阅读(6591) 评论(0) 推荐(0)
摘要:PHP中提供的超全局数组 Smarty中对应的请求变量 $_GET <{$smarty.get}> $_POST <{$smarty.post}> $_COOKIE <{$smarty.cookie}> $_SESSION <{$smarty.session}> $_FILES 无(因为前台用不到) $_SERVER <{$smarty.server}> $_REQUEST <{$smarty.request}> $_ENV <{$smarty.env}> $GLOBALS 无使用Smarty模板引擎中的请求变 阅读全文
posted @ 2011-12-08 22:07 曾是土木人 阅读(2107) 评论(0) 推荐(1)
摘要:代码免费下载地址:Ajax实时验证"用户名/邮箱等"是否已经存在(含有数据库sql文件) 一个网站采用Ajax技术,不仅可以改善网站的用户体验性,而且大大节约了宝贵的带宽,减轻了服务器负荷(不再需要交互整个网页内容,而是局部)。 今天分享一个“利用Ajax技术来检测用户名是否存在”的例子。利用Ajax技术来检测用户名是否存在的原理流程图:最终结果截图:index.html 1 2 3 4 5 Ajax检测用户名 6 7 8 9 10 用户名:11 12 13 14 代码解释:①实现该功能的核心代码在ajax.js,需要另外引进②给form命名,因为后面我们需要利用JS来取得 阅读全文
posted @ 2011-11-30 21:15 曾是土木人 阅读(4812) 评论(0) 推荐(4)