如何将POST变量携带到另一个文件?

时间:2015-12-10 21:45:55

标签: php html forms post

我正在处理表单,并希望保存提交的每个表单的副本。问题是表单的操作是一个计数文件,它使每个文件保存一次。例如,提交的第三个表单命名为" 3.php",提交的第十个表单命名为" 10.php"。当我尝试在新文件顶部写入POST变量时,它就消失了。无论如何,我可以用我的计数文件代码写一个新文档的回复吗?

主文件上的表单代码:

<form action="count.php" method="post">
    <input type="text" name="formItem1">
    <input type="text" name="formItem2" required>
    <input type="text" name="formItem4" required>
    <input type="text" name="formItem5" required>
    <input type="text" name="formItem6" required>
    <input type="submit" name="Click" value="Submit">
</form>

Count.php代码:

<body>
<?php
define('countlog.txt', __DIR__ . "./");

if (file_exists('countlog.txt')) {
    # If File exists - read its content
    $start = (int) file_get_contents('countlog.txt');
} else {
    # If No File Found - Create new File
    $start =  1;
    @file_put_contents('countlog.txt', "$start");
}

# When Form Submitted
if (isset($_POST) and isset($_POST['Click']) and $_POST['Click'] == "Submit") {
    $file_name = "{$start}.php";
    $template = file_get_contents('template.php');
    @file_put_contents("./submissions/" . $file_name, "$template");
    # Update Counter too
    $start = $start + 1;
    @file_put_contents('countlog.txt', "$start", 1);
    echo "Generated Filename - $file_name";
}
?>
</body>

Template.php代码:

echo "<h1>Answer1: " . $formItem1 . "</h1>";
echo "<h1>Answer2: " . $formItem2 . "</h1>";
echo "<h1>Answer3: " . $formItem3 . "</h1>";
echo "<h1>Answer4: " . $formItem4 . "</h1>";
echo "<h1>Answer5: " . $formItem5 . "</h1>";
echo "<h1>Answer: " . $formItem6 . "</h1>";

2 个答案:

答案 0 :(得分:1)

使用会话。使用session_start();在每个页面上创建会话使用会话全局数组存储post值。例如。 $_SESSION['yourValue'] = POST['yourValue'];。现在,在其余页面上,您应该能够访问该值。 e.g

$yourValue = $_SESSION['yourValue'];

答案 1 :(得分:1)

如果您使用template.php,它会使eval()的内容成为字符串,并且不会评估变量。

您可以使用return http://php.net/manual/en/function.eval.php将字符串计算为PHP代码。我不推荐这种方法,但是如果你想使用它,你需要echo而不是return "<h1>Answer1: " . $formItem1 . "</h1>". "<h1>Answer2: " . $formItem2 . "</h1>". "<h1>Answer3: " . $formItem3 . "</h1>". "<h1>Answer4: " . $formItem4 . "</h1>". "<h1>Answer5: " . $formItem5 . "</h1>". "<h1>Answer: " . $formItem6 . "</h1>"; 模板,否则模板将被回显到浏览器而不是你要保存的字符串提交。

的template.php

$template = file_get_contents('template.php');
$template = eval($template);

count.php

include

$template模板会更容易/更好,代码会执行,从而填充<?php $template = "<h1>Answer1: " . $formItem1 . "</h1>". "<h1>Answer2: " . $formItem2 . "</h1>". "<h1>Answer3: " . $formItem3 . "</h1>". "<h1>Answer4: " . $formItem4 . "</h1>". "<h1>Answer5: " . $formItem5 . "</h1>". "<h1>Answer: " . $formItem6 . "</h1>"; ?> 变量。

的template.php

include('template.php');

count.php

extract($_POST);

两种方法都假设您已使用{{1}}将数组中的变量导入当前符号表。