抓住网址内容和重定向页面

时间:2013-11-11 15:04:12

标签: php html url redirect

我有一个像

这样的网址设置
mysite.com/QR?id=12345

其中id将是一些数字。我希望能够浏览到此网址,获取ID值并将网页重定向到其他网址。

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

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

3 个答案:

答案 0 :(得分: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...";
}

可能这个回答你的问题吗?

答案 1 :(得分:1)

if(isset($_GET['id']) == '12345'){
    header('Location: example.com');
}

我猜是这样的?

答案 2 :(得分:0)

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

使用/QR目录方法的优点是它很容易 - 缺点是区分大小写,mysite.com/qr?id=12345会导致404错误。

要使用Apache ModRewrite,您需要在Web树的根目录中创建或编辑.htaccess文件(或者在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.
  }
}