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

问题描述 投票:-2回答:1

第一个文件,测试表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>

第二个文件,测试表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

php html forms
1个回答
-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 ['firstname'](如果没有则反应)。
  • 我的想法是在转到testform2时随身携带firstname值。
  • 确保您的应用程序流不允许用户在转到testform1之前转到testform2。这可以通过以下方式完成:如果在调用testform2时未设置$ _GET ['firstname'],则会自动将用户重定向到testform1。
  • 请记住,每次调用test.php都是另一个调用的。这就是处理testform1时在testform2中不可用的值设置的原因。
  • 可以使用的另一种方法是将testform1中的值设置为会话或数据库,并在访问testform2时检索它。更复杂。
  • 问问自己,将参数暴露给testform2是否存在安全风险。如果是= =使用会话或数据库!如果没有,你可以使用我的建议。
  • 另一种解决方案是,如果要隐藏$ _GET值,可以加密参数。
© www.soinside.com 2019 - 2024. All rights reserved.