当前位置: 编程技术>php
本页文章导读:
▪Php注入点构造代码
把下面保存成 Test.asp 代码如下:<? $mysql_server_name = "localhost"; $mysql_username = "root"; $mysql_password = "password"; $mysql_database = "phpzr"; //??ݿ?? .........
▪介绍php设计模式中的工厂模式
问题 你如何能轻松方便地建立这么" 复杂 " 的对象即操作中不需要粘贴复制呢? 解决方法 建立一个工厂(一个函数或一个类方法)来制造新的对象。为了理解工厂的用处, 试想以下的不同.........
▪php mysql索引问题
显然这是一个凡是使用MySQL的朋友都会遇到的问题。 回忆一下当初在配置环境时提到的MySQL GUI工具,对了,就是它,大家可以到http://www.mysql.com中找到它。因为sunec也只是一名.........
[1]Php注入点构造代码
来源: 互联网 发布时间: 2013-11-30
把下面保存成 Test.asp
<?
$mysql_server_name = "localhost";
$mysql_username = "root";
$mysql_password = "password";
$mysql_database = "phpzr"; //??ݿ??
$conn=mysql_connect( $mysql_server_name, $mysql_username, $mysql_password );
mysql_select_db($mysql_database,$conn);
$id=$_GET['id'];
$sql = "select username,password from admin where id=$id";
$result=mysql_db_query( $mysql_database, $sql,$conn );
$row=mysql_fetch_row($result);
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Php Sql Injection Test </title>
</head>
<body>
<p align="center"><b><font color="#FF0000" size="5" face="华文行楷"> </font><font color="#FF0000" size="5" face="华文新魏">PHP
注入测试专用</font></b></p>
<table width="100%" height="25%" border="1" align="center" cellpadding="0" cellspacing="0">
<tr>
<td><?=$row[0]?></td>
</tr>
<tr>
<td><?=$row[1]?></td>
</tr>
</table>
<p><u><font color="#0000FF">BY:孤狐浪子 QQ:393214425 </font></u></p>
<p><font color="#0000FF">Blog: Http://itpro.blog.163.com</font></p>
<p> </p>
</body>
</html>
创建数据库代码:保存成test.sql 使用phpmyadmin执行就ok了
CREATE DATABASE `phpzr` ; //创建数据库名称
CREATE TABLE admin (
id int(10) unsigned NOT NULL auto_increment,
username char(10) NOT NULL default '',
password char(10) NOT NULL default '',
useremail char(20) NOT NULL default '',
groupid int(11) NOT NULL default '0',
PRIMARY KEY (id)
) TYPE=MyISAM;
INSERT INTO admin VALUES (1, 'admin', 'itpro.blog.163.com','itpro@163.com', 1);
INSERT INTO admin VALUES (2, 'admin1', 'itpro.blog.163.com','itpro@163.com', 2);
INSERT INTO admin VALUES (3, 'admin2', 'itpro.blog.163.com','itpro@163.com', 3);
INSERT INTO admin VALUES (4, 'admin3', 'itpro.blog.163.com','itpro@163.com', 4);
INSERT INTO admin VALUES (5, 'admin4', 'itpro.blog.163.com','itpro@163.com', 5);
CREATE TABLE admin1 (
id int(10) unsigned NOT NULL auto_increment,
username char(10) NOT NULL default '',
password char(10) NOT NULL default '',
useremail char(20) NOT NULL default '',
groupid int(11) NOT NULL default '0',
PRIMARY KEY (id)
) TYPE=MyISAM;
INSERT INTO admin1 VALUES (1, 'admin', 'itpro.blog.163.com','itpro@163.com', 1);
INSERT INTO admin1 VALUES (2, 'admin1', 'itpro.blog.163.com','itpro@163.com', 2);
INSERT INTO admin1 VALUES (3, 'admin2', 'itpro.blog.163.com','itpro@163.com', 3);
INSERT INTO admin1 VALUES (4, 'admin3', 'itpro.blog.163.com','itpro@163.com', 4);
INSERT INTO admin1 VALUES (5, 'admin4', 'itpro.blog.163.com','itpro@163.com', 5);
代码如下:
<?
$mysql_server_name = "localhost";
$mysql_username = "root";
$mysql_password = "password";
$mysql_database = "phpzr"; //??ݿ??
$conn=mysql_connect( $mysql_server_name, $mysql_username, $mysql_password );
mysql_select_db($mysql_database,$conn);
$id=$_GET['id'];
$sql = "select username,password from admin where id=$id";
$result=mysql_db_query( $mysql_database, $sql,$conn );
$row=mysql_fetch_row($result);
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Php Sql Injection Test </title>
</head>
<body>
<p align="center"><b><font color="#FF0000" size="5" face="华文行楷"> </font><font color="#FF0000" size="5" face="华文新魏">PHP
注入测试专用</font></b></p>
<table width="100%" height="25%" border="1" align="center" cellpadding="0" cellspacing="0">
<tr>
<td><?=$row[0]?></td>
</tr>
<tr>
<td><?=$row[1]?></td>
</tr>
</table>
<p><u><font color="#0000FF">BY:孤狐浪子 QQ:393214425 </font></u></p>
<p><font color="#0000FF">Blog: Http://itpro.blog.163.com</font></p>
<p> </p>
</body>
</html>
创建数据库代码:保存成test.sql 使用phpmyadmin执行就ok了
代码如下:
CREATE DATABASE `phpzr` ; //创建数据库名称
CREATE TABLE admin (
id int(10) unsigned NOT NULL auto_increment,
username char(10) NOT NULL default '',
password char(10) NOT NULL default '',
useremail char(20) NOT NULL default '',
groupid int(11) NOT NULL default '0',
PRIMARY KEY (id)
) TYPE=MyISAM;
INSERT INTO admin VALUES (1, 'admin', 'itpro.blog.163.com','itpro@163.com', 1);
INSERT INTO admin VALUES (2, 'admin1', 'itpro.blog.163.com','itpro@163.com', 2);
INSERT INTO admin VALUES (3, 'admin2', 'itpro.blog.163.com','itpro@163.com', 3);
INSERT INTO admin VALUES (4, 'admin3', 'itpro.blog.163.com','itpro@163.com', 4);
INSERT INTO admin VALUES (5, 'admin4', 'itpro.blog.163.com','itpro@163.com', 5);
CREATE TABLE admin1 (
id int(10) unsigned NOT NULL auto_increment,
username char(10) NOT NULL default '',
password char(10) NOT NULL default '',
useremail char(20) NOT NULL default '',
groupid int(11) NOT NULL default '0',
PRIMARY KEY (id)
) TYPE=MyISAM;
INSERT INTO admin1 VALUES (1, 'admin', 'itpro.blog.163.com','itpro@163.com', 1);
INSERT INTO admin1 VALUES (2, 'admin1', 'itpro.blog.163.com','itpro@163.com', 2);
INSERT INTO admin1 VALUES (3, 'admin2', 'itpro.blog.163.com','itpro@163.com', 3);
INSERT INTO admin1 VALUES (4, 'admin3', 'itpro.blog.163.com','itpro@163.com', 4);
INSERT INTO admin1 VALUES (5, 'admin4', 'itpro.blog.163.com','itpro@163.com', 5);
[2]介绍php设计模式中的工厂模式
来源: 互联网 发布时间: 2013-11-30
问题
你如何能轻松方便地建立这么" 复杂 " 的对象即操作中不需要粘贴复制呢?
解决方法
建立一个工厂(一个函数或一个类方法)来制造新的对象。为了理解工厂的用处, 试想以下的不同之处……
代码:
$connection =& new MySqlConnection($user, $password, $database);
……使你的代码可扩展和更简洁……
$connection =& create_connection();
后者的代码片断集中在和数据库连接的create_connect()工厂上 ,就像刚才说的一样,使创造数据库连接的过程成为一个简单的操作—就像new操作一样。工厂模式的优点就在创建对象上。 它的任务就是把对象的创建过程都封装起来,然后返回一个所需要的新类。
想改变对象的结构和建立对象的方式吗? 你只需选择对象工厂,对代码的改变只需要一次就够了。( 工厂模式的功能是如此强大, 它处于是应用的底层, 所以在许多其余的复杂模式和应用中它会不停地出现。)
样本代码
工厂模式封装了对象的建立过程。 你可以在对象本身创建对象工厂或者是一个额外的工厂类——这要看你具体的应用。让我们看一个工厂对象的例子。
我们发现下面代码中,数据库连接的那部分屡次出现:
// PHP4
class Product {
function getList() { $db =& new MysqlConnection(DB_USER, DB_PW, DB_NAME);
//...
}
function getByName($name) { $db =& new MysqlConnection(DB_USER, DB_PW, DB_NAME);
//...
}
//...
}
为什么这样做不好? 数据库连接的参数出现的地方太多了,当你把这些参数设成常量,意味着你统一定义并对他们进行赋值,显然这种做法不是很妥当:
你可以轻松地改变连接数据库的参数,但你不能增加或改变这些参数地顺序,除非你把所有连接代码都改了。
你不能轻松的实例化一个新类去连接另一种数据库,比如说PostgresqlConnection。
这样很难单独测试和证实连接对象的状态。
使用工厂设计模式,代码将得到很大的改进:
class Product {
function getList() {
$db =& $this->_getConnection();
//...
}
function &_getConnection() {
return new MysqlConnection(DB_USER, DB_PW, DB_NAME);
}
}
先前的类中存在很多调用new MysqlConnection(DB_USER, DB_PW, DB_NAME)的方法,现在都被集中到的_getConnection()方法上。
你如何能轻松方便地建立这么" 复杂 " 的对象即操作中不需要粘贴复制呢?
解决方法
建立一个工厂(一个函数或一个类方法)来制造新的对象。为了理解工厂的用处, 试想以下的不同之处……
代码:
代码如下:
$connection =& new MySqlConnection($user, $password, $database);
……使你的代码可扩展和更简洁……
代码如下:
$connection =& create_connection();
后者的代码片断集中在和数据库连接的create_connect()工厂上 ,就像刚才说的一样,使创造数据库连接的过程成为一个简单的操作—就像new操作一样。工厂模式的优点就在创建对象上。 它的任务就是把对象的创建过程都封装起来,然后返回一个所需要的新类。
想改变对象的结构和建立对象的方式吗? 你只需选择对象工厂,对代码的改变只需要一次就够了。( 工厂模式的功能是如此强大, 它处于是应用的底层, 所以在许多其余的复杂模式和应用中它会不停地出现。)
样本代码
工厂模式封装了对象的建立过程。 你可以在对象本身创建对象工厂或者是一个额外的工厂类——这要看你具体的应用。让我们看一个工厂对象的例子。
我们发现下面代码中,数据库连接的那部分屡次出现:
代码如下:
// PHP4
class Product {
function getList() { $db =& new MysqlConnection(DB_USER, DB_PW, DB_NAME);
//...
}
function getByName($name) { $db =& new MysqlConnection(DB_USER, DB_PW, DB_NAME);
//...
}
//...
}
你可以轻松地改变连接数据库的参数,但你不能增加或改变这些参数地顺序,除非你把所有连接代码都改了。
你不能轻松的实例化一个新类去连接另一种数据库,比如说PostgresqlConnection。
这样很难单独测试和证实连接对象的状态。
使用工厂设计模式,代码将得到很大的改进:
代码如下:
class Product {
function getList() {
$db =& $this->_getConnection();
//...
}
function &_getConnection() {
return new MysqlConnection(DB_USER, DB_PW, DB_NAME);
}
}
[3]php mysql索引问题
来源: 互联网 发布时间: 2013-11-30
显然这是一个凡是使用MySQL的朋友都会遇到的问题。
回忆一下当初在配置环境时提到的MySQL GUI工具,对了,就是它,大家可以到http://www.mysql.com中找到它。因为sunec也只是一名程序爱好者,远没有达到程序员水平,所以借助一些工具的帮助还是很有必要的~相信一些朋友也和我一样~
用GUI工具创建表,建立REF字段,把REF设置为主键,定义类型为int,并在AUTO INC选项上打勾。好了,在MySQL端的工作就结束了。
接下去就交给PHP了,用之前专题中介绍过的insert命令为此表添加数据,注意,不用去自行添加REF的值,因为之前在AUTO INC选项上打了勾,那么,每添加一条记录,REF都会自动生成,而且是按顺序递增,这样,是不是就能实现你的需求了呢?
另外,从这次主题开始,我把一些技术归纳到PHP技术区,敬请大家留意!
最新技术文章: