php 模拟 asp.net webFrom 按钮提交事件实例_PHP
由于公司需要php方面的项目开发,php刚刚入门,在写按钮提交过程中,asp.net里的按钮事件更好些。先看下面的代码,
<? 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>"; } ?>
<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这个文件的代码:
<? 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提交原理 实现功能的。
由于时间仓促,来不及说明具体原理,还请见谅,代码大家都可以看懂的。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

机器学习让计算机图形学(CG)仿真更真实了!方法名为神经流向图(NeuralFlowMaps,NFM),四个涡旋的烟雾也能精确模拟的那种:更为复杂的也能轻松实现:要知道,在这个AI应用满天飞的时代,CG物理仿真仍然是传统数值算法的天下。△NFM模拟“蛙跳”尽管神经网络应用在CG能创造目眩神迷的视觉效果,它却无法严格、鲁棒地描述物理性质。△NFM模拟“墨滴”也正是因此,基于神经网络的物理仿真至今还处于概念验证(proofofconcept)的阶段,所生成的效果也远非SOTA。为了解决这个复杂问题,

Transformer 已成为各种机器学习任务的热门选择,并且取得了很好的效果,那它还能怎么用?脑洞大开的研究者竟然想用它来设计可编程计算机!这篇论文的作者来自普林斯顿大学和威斯康星大学,标题为《Looped Transformers as Programmable Computers》,旨在探索如何用 Transformer 来实现通用计算机。具体来说,作者提出了一个将 transformer 网络用作通用计算机的框架,方法是使用特定权重对它们进行编程并将它们置于循环(loop)中。在这个框架

近日,三星公司宣布收购英国知识图谱初创公司OxfordSemanticTechnologies,增强其本地AI功能,为用户提供更个性化的AI体验。该公司主要产品是AI引擎RDFox,通过知识图谱技术,将信息存储为互联网络,处理数据的方式类似于人类的思考方式:获取、记忆、回忆和推理知识。这技术将增强设备对用户使用产品或服务的理解,从而实现快速信息检索和推荐。据了解,OxfordSemanticTechnologies成立于2017年,由三位牛津大学教授伊恩·霍罗克斯、鲍里斯·莫蒂克和贝尔纳多·昆卡

PHP和WebDriver扩展:如何模拟用户的滚动和拖拽行为随着网络应用的不断发展,越来越多的网站和应用程序需要模拟用户的滚动和拖拽行为。这对于测试人员和开发人员来说是非常重要的,以确保网站和应用程序在各种场景下都能正常工作。在本文中,我们将介绍如何使用PHP和WebDriver扩展来模拟用户的滚动和拖拽行为。WebDriver是一个用于自动化浏览器的工具,

如何利用GitLab进行API测试和模拟引言:在进行软件开发过程中,API(ApplicationProgrammingInterface,应用程序编程接口)测试和模拟是非常重要的一步,它可以帮助开发人员验证API的正确性和性能,并且可以提前发现潜在的问题。GitLab是一个非常流行的代码托管平台,实现了版本控制和团队协作等功能。本文将介绍如何利用Git

使用math/rand包进行随机数模拟:导入math/rand包。使用time.Now().UnixNano()初始化随机数生成器。使用rand.Intn(n)生成0到n-1之间的随机整数。使用rand.Float64()生成0到1之间的浮点数。

蟒蛇和量子计算,这两个看似遥远且截然不同的领域,正以一种不可思议的方式相互交织,奏响了一曲算法与量子态的和谐之音,谱写出一段数字世界的壮丽交响曲。蟒蛇的简洁优雅与量子计算的奇妙玄妙,在交融中碰撞出无限的火花,为解决复杂问题提供了令人兴奋的可能性,开启了量子计算的新时代。蟒蛇作为一门流行的编程语言,凭借其易于学习、丰富的库和广泛的应用,成为量子计算领域不可或缺的工具。蟒蛇的出现,降低了量子计算的门槛,使更多的人能够参与到这一前沿领域的研究和应用中。蟒蛇的众多库,如NumPy和SciPy,为量子计算

1.引言JUnit是Java语言中最流行的单元测试框架,它使得编写和维护可读性强、可维护性好且可靠的测试代码变得容易。本指南将提供分步说明、代码示例和最佳实践技巧,以帮助您有效地使用JUnit进行Java应用程序测试。2.入门2.1设置测试项目在项目中添加JUnit依赖项以启用测试功能。使用Maven时,在pom.xml文件中添加以下依赖项:junitjunit
