由于公司需要php方面的项目开发,php刚刚入门,在写按钮提交过程中,asp.net里的按钮事件更好些。先看下面的代码,
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
<?
require_once '../inc/EventHelper.php' ;
function Page_Load()
{
echo '在任何时候都会运行<br>' ;
if (!Page::IsPostBack())
{
echo '加载产品分类<br>' ;
if ( $_GET [ 'cmd' ]== 'edit' )
{
echo '修改加载需要修改的产品信息<br>' ;
}
}
}
function bAdd_Click()
{
//Comm::CheckQX('产品管理_添加');
echo "bAdd_Click<br>" ;
}
function bEdit_Click()
{
//Comm::CheckQX('产品管理_修改');
echo 'proID=' . $_GET [ 'proID' ]. '<br>' ;
echo "bEdit_Click<br>" ;
}
function sdfsdfdsf_Click()
{
echo "e44444444444444444444<br>" ;
}
?>
|
1
2
3
4
5
|
< form name = "aa" method = "post" action="?<?=Comm::GetParam()?>">
< input type = "submit" name = "bAdd" value = "添加" />
< input type = "submit" name = "bedit" value = "修改" />
< input type = "submit" name = "sdfsdfdsf" value = "ewrewrewr" />
</ form >
|
做过asp.net开发的对上面的代码应该有点熟悉,如:Page_Load,Page.IsPostback,bAdd_Click,这些很像asp.net的事件。
以上代码在点击【添加】按钮时运行bAdd_Click函数(暂且这么叫,function好像是函数的意思),同样的,点击【修改】按钮自动运行bEdit_Click事件。不需要过多的参数变化,也不需要过多的文件,若页面功能不是很复杂的情况下,用这种模式可以快速开发。
下面来看看EventHelper.php这个文件的代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
<?
class Page
{
//是否回发数据,1:是
public static function IsPostBack()
{
global $SYSRunEventName ;
return ! empty ( $SYSRunEventName );
}
//加载并执行事件
function EventLoad()
{
global $SYSRunEventName ;
$arrEvent =get_defined_functions();
$arrEventUser = $arrEvent [ 'user' ];
$arr = array_keys ( $_POST );
foreach ( $arr as $row )
{
$name = strtolower ( $row );
foreach ( $arrEventUser as $row1 )
{
$name1 = str_ireplace ( '_click' , '' , $row1 );
if ( $name == $name1 )
{
$SYSRunEventName = $row1 ;
break ;
}
}
if (! empty ( $SYSRunEventName ))
{
break ;
}
}
if (function_exists( 'Page_Load' ))
Page_Load();
$SYSRunEventRunName = strtolower ( $SYSRunEventName );
if (Page::IsPostBack())
{
$SYSRunEventName ();
}
}
}
class Comm
{
public static function GetParam( $params = array (), $cmd = 'addoverride' )
{
$allParam = array ();
if ( $cmd == 'addoverride' )
{
$arrKeys = array_keys ( $params );
foreach ( $arrKeys as $row )
{
if (!in_array( $row , array_keys ( $allParam )))
$allParam [ $row ]= $params [ $row ];
}
}
else if ( $cmd == 'del' )
{
foreach ( $params as $row )
{
unset( $_GET [ $row ]);
}
}
$arrKeys = array_keys ( $_GET );
foreach ( $arrKeys as $row )
{
if (!in_array( $row , array_keys ( $allParam )))
$allParam [ $row ]= $_GET [ $row ];
}
$p = '' ;
$arrKeys = array_keys ( $allParam );
foreach ( $arrKeys as $row )
{
$p .= $row . '=' . $allParam [ $row ]. '&' ;
}
return rtrim( $p , '&' );
}
}
Page::EventLoad();
?>
|
以上功能大家可以测试下,在我php5.4可以运行成功,不过在安全性方面还没考虑过多,看过一些文章php会有可能通过客户端执行php代码,因为php很许多实用的功能特性。
关于Comm::GetParam,由于经常需要获取get方式的参数,或修改参数,如分页时需要保留所有url参数,只修改分页参数(如page=5),所以就自行写了一些代码。
主要利用php以下几个特点:
function_exists
get_defined_functions
以及利用常用的表单提交原理,利用submit提交原理 实现功能的。
由于时间仓促,来不及说明具体原理,还请见谅,代码大家都可以看懂的。