在POST上传输PHP类数据


Transferring PHP class data on POST

假设我在PHP中定义了一些类,如下所示:

class foo
{
var $bar;
function foo($name)
{
$this->bar = $name;
}
}

现在让我们假设我已经创建了这样一个类的实例

<form action="somenewform.php" method="POST">
<div name="somename">
<?PHP
$somevar = foo("someclassname");
?>
</div>
</form>

我对PHP还比较陌生,只是想知道如何在另一个页面上检索这些数据。我知道你需要做$_POST[‘name’]来检索数据,但我该如何检索bar的值?

我倾向于将这类信息存储在会话变量中:

session_start();
$somevar = new foo( 'someclassname' );
$_SESSION['somevar'] = $somevar;

然后在下一页检索:

session_start();
$somevar = $_SESSION['somevar'];
echo $somevar->bar;

您可以在PHP.net上阅读更多关于PHP会话的信息。

您需要序列化该类,将其设置为隐藏的输入字段,然后在下一页上取消序列化。

例如:

<form action="somenewform.php" method="POST">
<div name="somename">
<?php
$somevar = foo("someclassname");
?>
<input type="hidden" name="foo" value="<?php echo serialize($somevar); ?>" />
</div>
</form>

然后在你的目的地页面上反序列化它

$somevar = unserialize($_POST['foo']);
echo $somevar->bar; //echos "someclassname"

请记住,用户有可能操作隐藏输入字段中的数据,并且您不应该相信数据没有被篡改。请确保在取消序列化之前检查数据。如果需要更安全的方法,请考虑使用类似$_SESSION的方法。