使用页面URL填充表单字段

时间:2016-12-15 14:35:36

标签: javascript php wordpress forms

我在客户端wordpress网站上有一个下载部分。使用Download Monitor插件。使用Ninja Forms插件为DM插件保护它们,因此用户必须注册详细信息才能访问下载。

我想将下载表单网址中的ID添加到表单中的字段,以便客户端可以查看与该表单注册相关联的下载。

特定下载的解锁注册表单生成的URL类似于以下内容:

https://domain.com/no-access/download-id/572/

我已经找到了如何使用查询字符串(https://ninjaforms.com/how-to-auto-populate-form-fields-using-query-string/)执行此操作,但不知道如何使用上面的网址中的ID执行此操作。

理想情况下,如果可能的话,我也想将该ID转换为实际的下载标题。

有人可以提供建议吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果ID始终位于网址末尾,您可以使用basename非常简单地抓取它:

<?php
    // in your code you will do this:
    //$url = $_SERVER['REQUEST_URI'];

    // but for this example, i need your url:
    $url = 'https://domain.com/no-access/download-id/572/';

    // grab the basename:
    $id = basename($url);

    echo "($id)"; // (572)

<强> ADDITION

现在您可以找到$id请求的下载ID,将其放在一个变量中,您可以在编写忍者表单的代码中使用该变量。例如:

    $url = $_SERVER['REQUEST_URI'];

    // this was just for debugging...now comment it out
    // $url = 'https://domain.com/no-access/download-id/572/';
    // echo "($id)"; (572)

    $id = basename($url);

    // instead put it in a variable you can use in your form
    $GLOBALS['requested-download-id'] = (integer) $id;

现在,无论您拥有忍者形式的代码,都可以执行以下操作:

<form id="ninja-form" action="your-action" method="POST">

  <?php
    // sanity check...something may have gone wrong
    if (empty($GLOBALS['requested-download-id'])) {
      $download_id = 'NOT FOUND';
    } else {
      $download_id = $GLOBALS['requested-download-id'];
    }
  ?>
  <input value="<?php echo $download_id; ?>" type="hidden" name="download-id">

更加简化 - 全部完成

<form id="ninja-form" action="your-action" method="POST">

  <?php
    $id = basename($_SERVER['REQUEST_URI']);
    // be sure you ended up with a number
    $id = (integer) $id;

    if (empty($id)) {
      $download_id = 'NOT FOUND';
    } else {
      $download_id = $id;
    }
  ?>
  <input value="<?php echo $download_id; ?>" type="hidden" name="download-id">