Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在POST上传输PHP类数据_Php - Fatal编程技术网

在POST上传输PHP类数据

在POST上传输PHP类数据,php,Php,假设我在PHP中定义了一些类,如下所示: class foo { var $bar; function foo($name) { $this->bar = $name; } } 现在让我们假设我已经创建了这个类的一个实例,如下所示 <form action="somenewform.php" method="POST"> <div name="somename"> <?PHP $somevar = foo("someclassname"); ?> &l

假设我在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的值?

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

例如:

<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>

请记住,用户可以操作隐藏输入字段中的数据,并且您不应该相信数据没有被篡改。在取消序列化数据之前,请确保检查数据。如果您需要一个更安全的方法,请考虑使用诸如<代码> $ySession < /C> > .< /p> ,我倾向于将这类信息存储在会话变量:

中。
session_start();
$somevar = new foo( 'someclassname' );
$_SESSION['somevar'] = $somevar;
然后在下一页检索它:

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

您可以在php.net上阅读更多信息。

不过,不检查健全性而不进行序列化是一个主要的安全风险。@GigaWatt Point,添加了一个关于安全性的说明。非常好,伙计,谢谢!编辑:谢谢你提供的额外信息。
session_start();
$somevar = $_SESSION['somevar'];
echo $somevar->bar;