三、 抛出异常
你可能已经从上面的代码中注意到,你捕获的是一个称为QueryException(我们将在后面实现这个对象)的异常。一个异常类似于一个错误,然而却更具有一般性。描述一个异常的最好的方法是使用emergency。尽管一个emergency可以不会是“致命的”,但是还是必须处理它。当在PHP中抛出一个异常时,执行的当前范围很快地被终止,不管它是一个函数,try..catch块还是脚本本身。然后,该异常遍历调用栈—终止每个执行范围,直到或者在一个try..catch块中捕获它或者它到达调用栈的顶部—此时它将生成一个致命错误。
异常处理是PHP 5中的另外一个新特征,当与OOP联用时,它能够实现良好地控制错误处理和报告。一...
一、 DBQuery对象
现在,我们的DBQuery对象简单地模仿一个存储过程—一旦被执行,即返回一个必须进行保存的结果资源;并且如果你想使用该结果集上的函数(例如num_rows()或fetch_row())的话,你必须传递MySqlDB对象。那么,如果由DBQuery对象来实现MySqlDB对象(其设计目的是对一个执行查询的结果进行操作)实现的函数,效果如何呢?让我们继续使用上一篇示例中的代码;并且让我们假定,现在由DBQuery对象管理我们的结果资源。DBQuery类的源码如列表1所示。
列表1.使用DBQuery类。
require 'mysql_db.php';
require_once 'query.php';
$db = new MySqlDb;
$db->connect('host', 'username', 'pass'...
最近对google的PageRank比较感兴趣,一直想知道如何不用google toolbar来获取pr值。用嗅探工具获得google toolbar发出请求的url为:http://toolbarqueries.google.com//search?client=navclient-auto&ch=64170410360&ie=UTF-8&oe=UTF-8&features=Rank:FVN&q=info:http%3A//www.ugia.cn,其中的关键部分为ch=64170410360,即CheckSum,不知道这个是用的什么算法得出来的。
苦苦搜索之后,找到如下代码:
<?php/** This code is released unto the public domain*///header("Content-Type: text/plain; charset=utf-8");define(...
在很多时候,我们需要跟踪浏览者在整个网站的活动,对他们身份进行自动或半自动的识别(也就是平时常说的网站登陆之类的功能),这时候,我们常采用一组变量来"追随"访客。实现变量"追随"有很多种方法,比较用得多的是cookie和session。下面我们用时下很流行的PHP为大家讲解一下它们的使用。 一.Cookie的使用 Cookie是网站保存在浏览器客户端的信息,也就是说保存在访客的机器里的变量,一般随着HTTP 头发送到客户端。在Cookie生效之后及失效之前,客户每次发出页面请求的时候,都会把Cookie一块发送到服务器,只要我们针对它进行相应的处理,就可以实现变量"追随"。 1. 设置一个Cookie变量 设置一个Cookie变量,...
美国东部时间3月1日,雅虎公司联合创始人之一的杨致远将宣布公司的搜索网络将进入Web服务。雅虎公司在www.developer.yahoo.com网站建立了Yahoo Search Developer Network,公司计划在此纽约举行的搜索引擎战略大会(Search Engine Strategies Conference)上推出这一计划。该网络将允许开发者在雅虎搜索之上建立新的应用程序,其中包括图像、视频、新闻以及地区搜索等内容。想要使用这项服务的会员必须先去http://api.search.yahoo.com/webservices/register_application 申请一个自已的ID号,注:每个ID号每天只能搜索5000次。
下面我们看一下,如何用PHP脚本调用Yahoo! Search API实现搜索的效果...
Cookie真是一个伟大的发明,它允许web开发者保留他们的用户的登录状态。然而,当你的站点或网络有一个以上的域名时就会出现问题了。 在Cookie规范上说,一个cookie只能用于一个域名,不能够发给其它的域名。因此,如果在浏览器中对一个域名设置了一个cookie,这个cookie对于其它的域名将无效。如果你想让你的用户从你的站点中的其中一个进行登录,同时也可以在其它域名上进行登录,这可真是一个大难题。 我的解决方案将使用下面的一般框架: 一个预置的脚本将用来接受通过GET或COOKIE方式传递过来的sessionid号。它将比COOKIE优先选择GET变量。所以,无论何时需要引用交叉的域名时,我们把sessionid做为一个URL参...
好久没发技术性文章了,今天在21PHP里看到有位兄弟发了这贴子,转了过来.对加强OOP的学习有些用 ---------------------------------------------------------- 避免OOP的形式,POP的思想 随着PHP对OOP(面向对象编程)支持的增强以及程序设计思想的发展,越来越多的PHP程序员走进了OOP的世界.通过简单的学习,大多数程序员都能 快速的掌握OOP编程的基本技能.程序员们所写的代码里class,new等字符串也越来越多.但是作为程序员的你,是否陷入了一种OO形式,PO思想的 编程陷阱呢? 作为POP时代的程序员,为了实现计算一件房子的所有门的价格,他们会写这样一个函数. 代码: /****************************************** 函数:...
一、 DBQuery对象 现在,我们的DBQuery对象简单地模仿一个存储过程—一旦被执行,即返回一个必须进行保存的结果资源;并且如果你想使用该结果集上的函数(例如num_rows()或fetch_row())的话,你必须传递MySqlDB对象。那么,如果由DBQuery对象来实现MySqlDB对象(其设计目的是对一个执行查询的结果进行操作)实现的函数,效果如何呢?让我们继续使用上一篇示例中的代码;并且让我们假定,现在由DBQuery对象管理我们的结果资源。DBQuery类的源码如列表1所示。 列表1.使用DBQuery类。 require 'mysql_db.php'; require_once 'query.php'; $db&nb...
在PHP 4中,声明变量通常使用var,而在PHP 5中,可使用面向对象编程(OOP)的特性来自定义数据的可见性--即可访问性,可见性在此与变量作用域非常类似,但提供了更好的控制机制,有以下三种类型的可见性修饰符: Public(默认)--变量可在全局范围内访问或修改。 Protected--变量只能在类本身及直接派生(使用extends语句)类内访问或修改。 Private--变量只能在类内部访问或修改。 与接口实现类似,在程序中违反这些规则将会导致严重的错误;且与接口类似的是,它们的存在纯粹是为了方便程序员。但这并不意味着可以忽略它们,指定某个类成员变量的可见性,可保护对象内...
1、首先停止正在运行的MySQL进程
Linux下,运行 killall -TERM mysqld
Windows下,如果写成服务的 可以运行:net stop mysql,如未加载为服务,可直接在进程管理器中进行关闭。
2、以安全模式启动MySQL
Linux下,运行 /usr/local/mysql/bin/mysqld_safe --skip-grant-tables &
Windows下,在命令行下运行 X:/MySQL/bin/mysqld-nt.exe --skip-grant-tables
3、完成以后就可以不用密码进入MySQL了
Linux下,运行 /usr/local/mysql/bin/mysql -u root -p 进入
Windows下,运行 X:/MySQL/bin/mysql -u root -p 进入
4、更改密码
>use mysql
>update user set password=passwor...
方法1: 用SET PASSWORD命令
mysql -u root
mysql> SET PASSWORD FOR ‘root’@’localhost’ = PASSWORD(’newpass’);
方法2:用mysqladmin
mysqladmin -u root password “newpass”
如果root已经设置过密码,采用如下方法
mysqladmin -u root password oldpass “newpass”
方法3: 用UPDATE直接编辑user表
mysql -u root
mysql> use mysql;
mysql> UPDATE user SET Password = PASSWORD(’newpass’) WHERE user = ‘root’;
mysql> FLUSH PRIVILEGES;
...
1.停止MySQL的服务。
2.进入命令窗口,然后进入MySQL的安装目录,比如我的安装目录是d:mysql,进入d:mysqlbin
3.跳过权限检查启动MySQL,
mysqld --skip-grant-tables
4. 然后,重新打开一个窗口,用空密码方式使用root用户登录 MySQL;
mysql -h localhost -u root
5. 修改root用户的密码;
mysql> update mysql.user set passWord=PASSWORD('新密码') where User='root';
mysql> flush privileges;
mysql> quit...
需要一个用来注入的dll(inject.dll)及一个调用程序(caller.exe) 流程: caller.exe procedure TestHook; var pwnd,hChild, hwndInject hwnd; msgtmsg; begin 通过窗口标题用FindWindow找到要注入的程序的主窗口句柄pwnd pwnd = findwindow('Progman',nil); 用FindwindowEx(hMain,0,nil,nil)找到要处理的子窗口句柄hChild hChild = findWindowEx(pwnd,0,nil,nil); 用getwindowThreadProcessid(hChild,nil)找到要注入的线程 dwThreadID = getwindowThreadProcessid(hChild,nil); 调用 inject.dll的SetInjectHook方法 SetInjectHook(dwThreadID); 等待消息返回 getmessage(msg,0,0,0); 找到注入的窗口 hwndInjec...
Hibernate的reference的副标题叫做:符合java惯例的O/R 持久化,这揭示了目前三层结构的重大问题,就是三层的不统一。到目前为止,仍然难于在web界面上实现C/S模式中"master-detail","lookup"的快捷的用户交互。 目前常见的web application的结构,包含web browser/application server/database。database占据主流的仍然是经典的E/R模型,这个模型是基于行集的,因此在vb/delphi/power builder的实践中,data source/table set都是基于行集的,odbc/jdbc driver也都是基于行集的。view层的DbGrid也是基于行集的,和Entity模型对应得非常好,开发简易直观,相信这是C/S模式得到迅速推广的重点原因之一。&...
1.设置Cookie Cookie cookie = new Cookie("key", "value"); cookie.setMaxAge(60); 设置60秒生存期,如果设置为负值的话,则为浏览器进程Cookie(内存中保存),关闭浏览器就失效。 cookie.setPath("/test/test2"); 设置Cookie路径,不设置的话为当前路径(对于Servlet来说为request.getContextPath() + web.xml里配置的该Servlet的url-pattern路径部分) response.addCookie(cookie); 2.读取Cookie 该方法可以读取当前路径以及“直接父路径”的所有Cookie对象,如果没有任何Cookie的话,则返回null Cookie[] cookies = request.getCookies(); 3.删除C...
Cookie cookie = new Cookie("name", "aotori"); //(key,value) cookie.setPath("/");// 这个要设置 // cookie.setDomain(".aotori.com");//这样设置,能实现两个网站共用 cookie.setMaxAge(365 * 24 * 60 * 60);// 不设置的话,则cookies不写入硬盘,而是写在内存,只在当前页面有用,以秒为单位 response.addCookie(cookie); //添加第一个Cookie cookie = new Cookie("nick", URLEncoder.encode("陈强", "UTF-8")); cookie.setPath("/"); // cookie.setDomain(".aotori.com"); cookie.setMaxAge(365 * 24 * 60 * 60); response.a...