【问题标题】:php5:pass objects through Form ? can it be done?php5:通过表单传递对象?可以吗?
【发布时间】:2011-05-10 05:34:21
【问题描述】:

我的测试应用有这个小问题。

目前的样子:

<form>
<span>1:Question goes here </span>
<input type=hidden name=true_1 value=10>
<input type=hidden name=false_1 value=20>
<input type=hidden name=target_1 value=color>
<select name=answer_1[]><option>blah</option><option>etc</option></select>

<span>2:Question goes here </span>
<input type=hidden name=true_2 value=40>
<input type=hidden name=false_2 value=20>
<input type=hidden name=target_2 value=size>
<select name=answer_2[]><option>blah</option><option>etc</option></select>
</form>

目前我使用的脚本会explode("_",$get);所以我可以用自己的属性处理每个问题。

当前方法
1.从数据库中获取问题。 (问题、目标、真、假、答案)
2.遍历它们并为所有问题创建一个类似于我上面写的表格 3.当发布时,我会爆炸以单独获取每个问题的属性 4.将它们传递给评估答案正确或错误并给出分数的函数

我想做的就是把它变成 oop
1.为每个问题创建一个对象并分配它自己的属性(question,true,false,target,answer) foreach($question)$q[1]=new question();

2.回显 $q[] 供用户回答。

3.在用户回答后收到 $q[] 并 $_POST 他们。

希望我正确地描述了这一点。但是动态地保持每件事对我来说非常重要,因此我需要包含隐藏字段。 可行吗?

【问题讨论】:

    标签: php oop design-patterns http-post


    【解决方案1】:

    您可以将 json 数据类型用于此类任务(假设您的对象只存储数据,而不是方法,也不需要 __sleep、__wakeup 等)。

    <input name="fooBar" value="<?php echo json_encode(/*some_array_with_data*/);?>">
    

    在表单 POST 之后,您可以执行类似的操作

    $_POST['fooBar'] = json_decode($_POST['fooBar']);
    

    并开始迭代结果数组。

    注意。由于 json_encode 会生成包含 " 等字符的字符串,因此您还应该使用 base64_encode、url_encode 或类似的东西。

    【讨论】:

      猜你喜欢
      • 2011-02-12
      • 2020-11-12
      • 1970-01-01
      • 2011-11-13
      • 1970-01-01
      • 2016-05-30
      • 1970-01-01
      • 1970-01-01
      • 2017-05-09
      相关资源
      最近更新 更多