本质上,您需要一个 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.
}
}