作者foxzgerald (O⊥M)
看板PHP
标题Re: [请益] submit後,乱数值跑掉
时间Thu Nov 16 19:40:12 2006
※ 引述《saininniang (sob)》之铭言:
: ※ 引述《alpe (薛丁格的猫)》之铭言:
: : 你先看看你的程式流程... 你就会发现...
: : 产生乱数的程式是" A " 好了
: : show html 是 " B "
: : check number in array " C ".
: : A - B - C -> html(client)-post-> A - B - C (问题是你只要跑 C 这段)
: 抱歉
: 我不懂你说的意思
: 我重新陈述我的程式概念
: part1:建立阵列,用for回圈丢乱数给阵列,如此一来,产生了一组乱数阵列
: part2:按submit後,去处理乱数阵列(做一些判断等功能)
: 我现在的问题是
: 按submit後,那整组乱数阵列又会变成新的一组乱数阵列
: 这样的话,不是我原先要的那组乱数阵列
: 我不知道要如何改进
你的程式.. 每次 loading.. 都会重复执行黄色的区块
所以才会一再产生新的阵列..
----------------------------------------------------
// 产生乱数阵列
// 显示表单
if(isset($_POST['n']))
// 处理乱数阵列
----------------------------------------------------
如果要避免重复,应该於产生乱数阵列之前做些判断..
----------------------------------------------------
if(!isset($_POST['n'])) // 如果表单尚未被 submit
// 产生乱数阵列
//显示表单
if(isset($_POST['n']))
// 处理乱数阵列
-----------------------------------------------------
上述的流程可以确保在表单被 submit 之後,不会再次产生新的阵列
然而会有一个问题:如果你的乱数阵列不是储存在 session 变数中
发送表单之後,虽不重复产生乱数阵列,但因变数的生命周期已过
所以会抓不到乱数阵列。
至少有两种解决方式,一是储存在 session 中,另一种是将产生出
来的乱数阵列储存在表当之中
( 例:阵列可以用 base64_encode(serialize($rand_array));转成字串储存,
解码则逆向操作 unserialize(base64_decode($_POST['rand_array']));
当然也可以存到资料库或cookie中,方式不少端看你要做什麽。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.119.199.121
※ 编辑: foxzgerald 来自: 140.119.199.121 (11/16 19:45)