通过用户未提供的PHP帖子表单发送数据

时间:2013-11-13 01:40:58

标签: php

我需要通过$ _POST传递一个变量。这种变量永远不会被与表单交互的用户提供。基本上当你单击一个按钮从数据库中获取一个数字时,我需要将这个数字从一个页面转移到一个表单,然后从该表单转移到另一个页面。没有用户看到它或能够编辑它。后来我需要能够创建一个包含多个数字的数组,现在我只用一个数字开始。我确信这很简单。我认为一个cookie可以工作但是当我开始转移多个数字然后访问它们时,我相信我会遇到问题。除非您可以在cookie中存储数组。

也许会破坏多个数字的数组,比如说

$MyArray = array(1, 2, 3, 4);
$ArrayToString = implode(",",$MyArray);
setcookie("My_Numbers", $ArrayToString, TIMEHERE);

然后当我访问它们时,只需执行

$NewArray = explode(","$_COOKIE['My_Numbers']);
setcookie("My_Numbers", "", PASTTIME);
print_r($NewArray);

我在写这篇文章的时候就想到了这一点。希望有一种更安全,更简单的方式。

2 个答案:

答案 0 :(得分:0)

使用$ _SESSION变量,它会在您所在的所有页面中保持活动状态。直到您销毁它们

答案 1 :(得分:0)

<input name="yourName" type="hidden" value="<?php echo $yourVariable; ?>" />

如果您想远离会话变量,请转到此路线。否则$ _SESSION也是一个不错的方式。虽然我不确定数据是什么,如果它真的属于$ _SESSION var

编辑:

使用假设的person

//form page user sees
<?php
$query = "SELECT * FROM `person` WHERE `personId` = '$_GET['personId']`";

//assume we get the data into $row array
?>

<form action="process.php">
    <input name="id" type="hidden" value="<?php echo $row['personId']; ?>" />

    <input name="firstName" type="text" value="<?php echo $row['firstName']; ?>" />

    <input name="lastName" type="text" value="<?php echo $row['lastName']; ?>" />

    <input name="submit" type="submit" value="submit" />
</form>

//process.php
<?php
$query = "UPDATE `person` SET `firstName` = '$_POST['firstName']', `lastName` = '$_POST['lastName']' WHERE `personId` = '$_POST['personId']";
?>

记住这个例子非常容易受到SQL注入攻击。请以更好的方式获取您的数据。