【问题标题】:Separate forms, 2 actions in specific order单独的表格,按特定顺序执行 2 个操作
【发布时间】:2016-03-09 16:32:05
【问题描述】:

我有一个要求用户输入的表单。输入应该是我的数据库中存在的名称。

<p><span class="error">* required field.</span></p>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
    Name: <input type="text" name="name" value="<?php echo $name;?>">
    <span class="error">* <?php echo $nameErr;?></span>
    <br><br>
    <input type="submit" name="login" value="Login">
</form>

我正在尝试首先检查用户输入,然后如果输入正确,则将用户发送到另一个站点。

这是我用来清理输入的:

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if (empty($_POST["name"])) {
        $nameErr = "Name is required";
    } else {
        $name = test_input($_POST["name"]);
        // check if name only contains letters and whitespace
        if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
            $nameErr = "Only letters and white space allowed"; 
        }
    }
}

然后我想在查询到我的数据库并收到 ID 后发送到下一个站点:

<form action = "http://website.com/~username/site.php" method="get">
    Name: <input type="text" name="name"><br>
    <Input type="submit">
</form>

我该怎么做呢?

【问题讨论】:

  • 如果用户名在您的数据库表中,您想重定向用户吗?使用 phps header() 函数来做到这一点。
  • 我试过这样做。我应该把 header() 函数放在哪里?当我尝试它时,它似乎没有执行。
  • 重定向用户使用 header('Location: myfile.php').
  • 好的,这样效果很好。现在我还需要能够将通过查询获得的 ID 发送到下一页。

标签: php forms submit


【解决方案1】:

使用 header() 函数来实现你的目标

header('Location: yourfile.php?id=' . $yourIdValue); // adopt to your needs

在你的目标脚本中获取 id

$id = $_GET['id'];

【讨论】:

  • 有没有办法用 $_POST 做到这一点?
  • 使用 $_POST 是可能的,但更复杂。为什么更喜欢发布而不是获取?
  • 出于安全原因,防止人们编辑 URL 以访问另一个 ID。复杂多少?
  • POST 并不比 GET 更安全。如果您想使用 POST,请查看以下示例(使用 curl):stackoverflow.com/questions/3045097/…
猜你喜欢
  • 1970-01-01
  • 2022-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多