0

我有一个像这样的网址设置

mysite.com/QR?id=12345

其中 id 将是一些数字。我希望能够浏览到这个 url,获取 id 值并将页面重定向到不同的 url。

我可以用 PHP 做到这一点吗?该 ID 也将对应于我的数据库中的一个 ID。

编辑:修改我的原始问题。我所拥有的是一个不存在的页面的 URL,其中 ID 可以是任何数字。我需要一种浏览方式来获取该 url 并提取 id 值并重定向到一个新页面,在该页面中,我将根据该 ID 显示内容,该 ID 在我的数据库中将具有相应的值。

4

3 回答 3

3
// First check if it exists
if (isset($_GET['id']))
{
    $id = someSecurityFunction($_GET['id']);        

    // Check what the value is of ID
    switch ($id)
    {
        case '12345':
            header("Location: website.com?...");
            exit();
        case '67890':
            header("Location: website.com?...");
            exit();
        default:
            echo "No corresponding ID value found...";
            break;
    }

    // Or just redirect to another page and handle there your ID existence thing
    // by omitting the switch-case and redirect at once
    // header("Location: website.com?id=$id");
}
else
{
    echo "No ID found in querystring...";
}

这可以回答你的问题吗?

于 2013-11-11T15:20:44.153 回答
1
if(isset($_GET['id']) == '12345'){
    header('Location: example.com');
}

我猜是这样的?

于 2013-11-11T15:16:31.783 回答
0

本质上,您需要一个 PHP 文件来接收数据mysite.com/QR- 这可以通过创建一个名为 PHP 的文件index.php并将其放在一个/QR目录中或使用 Apache ModRewrite(假设您正在运行 Apache 服务器)来完成。

使用/QR目录方式的优点是简单——缺点是区分大小写,mysite.com/qr?id=12345会导致 404 错误。

要使用 Apache ModRewrite,您需要.htaccess在 Web 树的根目录中创建或编辑一个文件(或者在 httpd-vhosts.conf 中,虽然是的,这需要更多权限并且维护它需要重新启动服务器),并且在其中/.htaccess文件,您需要指向将处理您的 QR 码重定向的 PHP 文件 -qr.php例如:

RewriteEngine On
RewriteRule ^QR/?$ /qr.php [NC,QSA,L]
  • NC = 无大小写(使其不区分大小写,因此/QR/qr将起作用
  • QSA = 查询字符串追加,以便id=12345传递给/qr.php
  • L = 最后,如果有效,则不会在此之后处理任何重定向

您的/qr.php文件将需要执行以下操作:

if(empty($_GET['id'])) {
  // deal with exceptions where the 'id' isn't set
}
else {
  $iId = (int) $_GET['id']; // may as well cast it to an INT if it's matching an auto-incremented database id

  //possibly connect to the database, validate the id, update some records and retrieve the redirection URL
  // ... then redirect
  header('HTTP/1.1 303 See Other');
  header('Status: 303 See Other'); # for Chrome/FastCGI implementation
  header('Location: ' . $sSomeRedirectionURLFromTheDatabase);
  die(); # I generally always die after redirecting
  }
}

编辑

实际上/qr.php,只要您更新数据库中的任何内容,实际上可能会更好地用作显示内容的页面(否则,如果您将其记录在数据库中,那么页面重新加载将计入点击次数) - 使用Apache ModRewrite 重定向到它(如前所述),然后管理输出/qr.php

if(empty($_GET['id'])) {
  // deal with exceptions where the 'id' isn't set
}
else {
  $iId = (int) $_GET['id'];
  // connect to the database, validate the id and retrieve the relevant
  // content that you want to display (based on the id) and then output it.
  }
}
于 2013-11-11T15:36:24.627 回答