我有一段代码如下:<?php
class submitFunc{
static $a;
function submitFunc(){
}
function testFunc(){
$this->a++;
echo "\n a = ".$this->a;
}
}
extract($_POST);
extract($_GET);if ($act == "subok"){
$monitor = new submitFunc();
$monitor->testFunc();
$monitor->testFunc();
$monitor->testFunc();
}
?>
<form name="form1" method="post" action="?act=subok">
<input type="submit" value="提交">
</form>
================ 当我第一次点击“提交”按钮以后出现:
a = 1 a = 2 a = 3
可我第二次点击“提交”按钮以后还是出现:
a = 1 a = 2 a = 3我希望的效果是:
当我第一次点击“提交”按钮以后出现:
a = 1 a = 2 a = 3
第二次点击“提交”按钮以后出现:
a = 4 a = 5 a = 6
class submitFunc{
static $a;
function submitFunc(){
}
function testFunc(){
$this->a++;
echo "\n a = ".$this->a;
}
}
extract($_POST);
extract($_GET);if ($act == "subok"){
$monitor = new submitFunc();
$monitor->testFunc();
$monitor->testFunc();
$monitor->testFunc();
}
?>
<form name="form1" method="post" action="?act=subok">
<input type="submit" value="提交">
</form>
================ 当我第一次点击“提交”按钮以后出现:
a = 1 a = 2 a = 3
可我第二次点击“提交”按钮以后还是出现:
a = 1 a = 2 a = 3我希望的效果是:
当我第一次点击“提交”按钮以后出现:
a = 1 a = 2 a = 3
第二次点击“提交”按钮以后出现:
a = 4 a = 5 a = 6
你想要的效果是在一次请求里面多次执行到这个地方如有a.php
<?phpfoo();
//foo();
//foo();function foo() {
static $a; $a++;
echo $a;
}
?>
你每次访问a.php都只会输出1
若把两个注释去掉,那么每次访问都会输出123,这是static的用法你应该通过其它方式记录,比如cookie session 或者共享内存
如果你确实希望能一步一步提交,最后一次再保存所有的东西,可以考虑下列方法将前一步所得到的内容做成hidden放在这一步的页面上
在数据库使用临时表记录每一步的内容
使用共享内存记录每一步的内容>我在想是不是有一种类,可以在窗体关闭以前都有效的呢?
我个人没有听说过这样的类,但是cookie 和 session都可以通过某种设置达到类似的目的
>在数据库使用临时表记录每一步的内容
>使用共享内存记录每一步的内容php可以使用共享内存吗?我去查一下,呵呵
将前一步所得到的内容,加密或者序列化,做成hidden放在这一步的页面上.net就是这么做的.
或者将前一步的内容保存进数据库里面.
<?php
class submitFunc{ static $a;
function submitFunc(){ } static function testFunc(){ if(!$_GET['a'==""]){ submitFunc::$a = $_GET['a']; }
submitFunc::$a++; echo "\n a = ".submitFunc::$a;
$_GET['a']=submitFunc::$a;}
}if ($_GET['act'] == "subok"){
$monitor = new submitFunc();
$monitor->testFunc();
$monitor->testFunc();
$monitor->testFunc();
}?>
<form name="form1" method="post" action="oop.php?act=subok&a=<?php echo $_GET['a'];?>">
<input type="submit" value="提交">
</form>