我正在尝试创建一个提交表单的页面,并将内容添加为$ _SESSION()数组中的新值,但似乎正在发生的事情是值被覆盖。
表单有3个文本输入,名为a,b和c,并在提交时刷新页面。什么告诉我它被替换是$ _SESSION [0]将显示如下定义的1 2和3,然后由$ _POST定义的下一行将是相同的但是数组值被最后提交的值替换而不是添加最后一个作为另一行提交。
<form action="test2.php" method="post">
<input type="text" name="a">
<input type="text" name="b">
<input type="text" name="c">
<input type="submit" value="Submit">
</form>
<?php
if (isset($_POST['a']))
{
$a = $_POST['a'];
$b = $_POST['b'];
$c = $_POST['c'];
$order = array('a' => $a, 'b' => $b, 'c' => $c);
$_SESSION[0] = array('a' => 1, 'b' => 2, 'c' => 3);
$_SESSION[] = $order;
$count = count($_SESSION);
for ($i = 0; $i < $count; $i++) {
echo "w: " . $_SESSION[$i]['a'] . "\n";
echo "h: " . $_SESSION[$i]['b'] . "\n";
echo "p: " . $_SESSION[$i]['c'] . "\n";
echo "<br />";
}
}
?>
非常感谢任何帮助, 感谢
答案 0 :(得分:3)
在我看来,每次提交表单时,您都在尝试向新的$ _SESSION var添加新数组。您正在使用的方法只会将值添加到该页面加载的$ _SESSION数组中 - 它实际上不会在$ _SESSION数组中!混淆吧?所以其中任何一个都行不通......
$_SESSION[] = 'value or array';
$_SESSION[1] = 'some other stuff';
但是这样,因为$ _SESSION键中有文本(并且不要忘记启动会话)。
session_start();
$next = count($_SESSION) + 1;
$next = 'foo' . $next;
$_SESSION[$next] = 'bar' . $next;
这将为“print_r($ _ SESSION)”生成以下内容。
Array ( [foo1] => barfoo1 [foo2] => barfoo2 [foo3] => barfoo3 [foo4] => barfoo4...
答案 1 :(得分:2)
添加表单值的最简单方法是
$_SESSION['form'] = $_POST; //once the form is posted
然后使用
访问这些值$_SESSION['form']['fieldname'];