search
HomeBackend DevelopmentPHP Tutorialphp 模拟 asp.net webFrom 按钮提交事件实例_PHP

由于公司需要php方面的项目开发,php刚刚入门,在写按钮提交过程中,asp.net里的按钮事件更好些。先看下面的代码,

<&#63;
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>";
}

&#63;>

<form name="aa" method="post" action="&#63;<&#63;=Comm::GetParam()&#63;>">
<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这个文件的代码:

<&#63;
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();
&#63;>

以上功能大家可以测试下,在我php5.4可以运行成功,不过在安全性方面还没考虑过多,看过一些文章php会有可能通过客户端执行php代码,因为php很许多实用的功能特性。

关于Comm::GetParam,由于经常需要获取get方式的参数,或修改参数,如分页时需要保留所有url参数,只修改分页参数(如page=5),所以就自行写了一些代码。

主要利用php以下几个特点:

function_exists
get_defined_functions

以及利用常用的表单提交原理,利用submit提交原理 实现功能的。

由于时间仓促,来不及说明具体原理,还请见谅,代码大家都可以看懂的。

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
AI模拟器拿下物理仿真新SOTA!AI模拟器拿下物理仿真新SOTA!Feb 19, 2024 pm 06:50 PM

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

把Transformer当通用计算机用,还能执行in-context learning算法,这项研究脑洞大开把Transformer当通用计算机用,还能执行in-context learning算法,这项研究脑洞大开Apr 13, 2023 am 11:31 AM

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

三星收购英国知识图谱初创公司 本地 AI 模拟人类思考方式处理任务三星收购英国知识图谱初创公司 本地 AI 模拟人类思考方式处理任务Jul 19, 2024 pm 12:44 PM

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

PHP和WebDriver扩展:如何模拟用户的滚动和拖拽行为PHP和WebDriver扩展:如何模拟用户的滚动和拖拽行为Jul 07, 2023 pm 04:15 PM

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

如何利用GitLab进行API测试和模拟如何利用GitLab进行API测试和模拟Oct 27, 2023 pm 05:35 PM

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

如何在 Golang 中使用随机数进行模拟?如何在 Golang 中使用随机数进行模拟?Jun 06, 2024 pm 01:16 PM

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

Python与量子计算的壮丽交响:谱写算法与量子态的和谐之音Python与量子计算的壮丽交响:谱写算法与量子态的和谐之音Feb 19, 2024 pm 11:24 PM

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

Java JUnit 实践指南:编写可靠的测试Java JUnit 实践指南:编写可靠的测试Feb 19, 2024 pm 01:50 PM

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

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Dreamweaver Mac version

Dreamweaver Mac version

Visual web development tools

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

SublimeText3 Linux new version

SublimeText3 Linux new version

SublimeText3 Linux latest version