我有一个像
这样的网址设置mysite.com/QR?id=12345
其中id将是一些数字。我希望能够浏览到此网址,获取ID值并将网页重定向到其他网址。
我可以用PHP做到这一点吗?该ID也将对应于我的数据库中的ID。
编辑:修改我的原始问题。 我所拥有的是一个不存在的页面的URL,其中ID可以是任何数字。我需要一种方法来浏览以获取该URL并提取id值并重定向到新页面,我将根据该ID显示内容,该ID将在我的数据库中具有相应的值。
答案 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]
/QR
或/qr
将起作用id=12345
传递给/qr.php
您的/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.
}
}