如何将表单条目传递到新页面上的另一个表单

时间:2021-03-26 作者:Urick Esau

我在主页上有一个注册表单,希望捕获用户的条目,并将其填充到新页面上的客户注册表单中。

有没有办法在WordPress中做到这一点?

1 个回复
SO网友:Matthew Brown aka Lord Matt

虽然这不是特定于WordPress的问题,但也不是非WordPress问题。听起来您需要一些关于表单如何传递数据的指导。

If what you are really asking is how to get a plugin to pre-populate a form, you are best off asking the plugin\'s developer.

假设你想自己做这件事,这里有一个你需要知道的入门知识。

表单有两种(我们将要讨论的)发送数据的方法。这些是GET请求和POST请求。

让我们从一个字段开始,我们将其称为foo。

<form  method="get">
    <label for="foo">Foo</label><input type="text" value="" name="foo" />
    <input type="submit" value="submit">
</form>
您会注意到,我将方法设置为get。这意味着表单数据(foo)将添加到URL的末尾。如果用户键入;条形图:

https://example.com/myform.php?foo=bar
您的用户数据将在中找到$_GET[\'foo\']. 但是,您需要检查它是否存在。

if(isset($_GET[\'foo\'])){
    $foo = $_GET[\'foo\']; // or whatever
}
GET的优点是用户可以与其中的数据共享链接。缺点是用户可以与其中的数据共享链接。(这取决于你需要用它做什么)。

另一种方法是使用POST。像这样:

<form  method="post">
    <label for="foo">Foo</label><input type="text" value="" name="foo" />
    <input type="submit" value="submit">
</form>
请注意,表单中的方法已更改。This page 有表单方法指南。现在,表单数据将使用post方法(不在URL中)发送,并且可以通过post全局访问。

if(isset($_POST[\'foo\'])){
    $foo = $_POST[\'foo\']; // or whatever
}
所以现在你想把这些数据换成另一种形式。以下是您可能的做法。

<?php
// other code maybe
$foo = \'\';
if(isset($_POST[\'foo\'])){
    $foo = $_POST[\'foo\'];
}
?>
<form  method="post">
    <label for="foo">Foo</label><input type="text" value="<?php echo $foo; ?>" name="foo" />
    <input type="submit" value="submit">
</form>
在最后一个示例中,我创建了一个名为$foo的空var。如果用户在帖子中向我们发送了一个foo,我会将该值添加到新的var中,然后在表单中吐出。这样,表格中就预先填写了我们刚得到的foo。

注意:这不是一种天生安全的做事方式。一个糟糕的演员可能会给你发送坏代码,这可能会破坏你的表单甚至整个网站。看看WordPress string sanitisation functions.

例如:

if(isset($_POST[\'foo\'])){
    $foo = sanitize_text_field($_POST[\'foo\']);
}
这样更安全。

现在,您应该对表单如何传递信息有了一些了解。如果您正在创建自己的表单,这可能会对您有用。

至少,这应该让你开始。如果你被进一步的问题困住了,你总是可以带着更具体的问题回来。