连接到同一个php的不同页面上的两个表单

时间:2018-03-05 16:32:30

标签: php html forms

第一个文件,testform 1:

<html>
<head>
    <meta charset="UTF-8">
    <title>testform 1</title>
</head>
<body>
    <form action="test.php" method="post" name="testform1">
        <label for="naam">naam:</label>
        <input type="text" name="naam"><br>
        <input type="hidden" name="action" value="form1">
        <input type="submit" value="form1">
    </form>
</body>
</html>

第二个文件,testform 2:

<html>
<head>
    <meta charset="UTF-8">
    <title>testform 1</title>
</head>
<body>
    <form action="test.php" method="post" name="testform2">
        <label for="achternaam">achternaam:</label>
        <input type="text" name="achternaam"><br>
        <input type="hidden" name="action" value="form2">
        <input type="submit" value="form2">
    </form>
</body>
</html>

test.php文件:

<?php
$firstname = "";
$lastname = "";


switch($_POST['action']) {
    case 'form1': 
    $firstname = $_POST['naam'];
    echo "form 1 gelukt";
    header("Location: http://localhost:8081/greenjoy/testform2.html");
    break;
    case 'form2':
    $lastname = $_POST['achternaam'];
    echo "form 2 gelukt";
    echo "$firstname" . "$lastname";
    break;
}
?>

我有这三段代码,它们应该是两种不同的形式,将数据发送到php。但是当我完成填写第二种形式时,第一种形式的数据就消失了。我不能使用2个不同的php文件,因为我必须使用file_get_contents将数据发送到planyo

1 个答案:

答案 0 :(得分:-2)

像这样修改你的文件:

testform1.html:没有变化。

testform2.html,将其更改为php文件(testform2.phtml):

<html>
<head>
    <meta charset="UTF-8">
    <title>testform 1</title>
</head>
<body>
    <form action="test.php" method="post" name="testform2">
        <label for="achternaam">achternaam:</label>
        <input type="text" name="achternaam"><br>
        <input type="hidden" name="action" value="form2">
        <input type="hidden" name="naam" value="<?php echo $_GET['firstname']; ?>">
        <input type="submit" value="form2">
    </form>
</body>
</html>

test.php的:

<?php
$firstname = "";
$lastname = "";


switch($_POST['action']) {
    case 'form1': 
        $firstname = $_POST['naam'];
        echo "form 1 gelukt";
        header("Location: http://localhost:8081/greenjoy/testform2.html?firstname=$firstname");
        break;
    case 'form2':
        $firstname = $_POST['naam'];
        $lastname = $_POST['achternaam'];
        echo "form 2 gelukt";
        echo "$firstname" . "$lastname";
        break;
}
?>
  • 这证明了这个概念,但你应该添加代码来验证是否设置了$ _GET [&#39; firstname&#39;](如果没有则反应)。
  • 这个想法是在转到testform2时随身携带firstname值。
  • 确保您的应用程序流不允许用户在转到testform1之前转到testform2。这可以通过以下方式完成:如果在调用testform2时未设置$ _GET [&#39; firstname&#39;],则会自动将用户重定向到testform1。
  • 请记住,每次调用test.php都是另一个调用的。这就是为什么在testform2中没有处理testform1时设置的值。
  • 可以使用的另一种方法是将testform1中的值设置为会话或数据库,并在访问testform2时检索它。更复杂。
  • 问问自己,将参数暴露给testform2是否存在安全风险。如果是= =使用会话或数据库!如果没有,你可以使用我的建议。
  • 如果您想要隐藏$ _GET值,可以加密参数。