携帯以外のIPを全て http://ドメイン/pc_error/index.phpに飛ばすため.htaccessに以下のように記述しています。
order deny,allow
deny from all
# DoCoMo
allow from 124.146.174.0/24
省略
# Softbank
allow from 123.108.236.0/24
省略
# AU
allow from 111.86.141.128/26
省略
ErrorDocument 403 http://ドメイン/pc_error/index.php
しかしこの携帯サイトにはそれぞれの会員ページが存在します
http://ドメイン/?id=1(Aさんのページ)
http://ドメイン/?id=2(Bさんのページ)
.htaccessに上記のように記述した場合、PCからAさんのページにアクセスしてもBさんのページにアクセスしても同じ画面のhttp://ドメイン/pc_error/index.phpが表示されてしまいます。
PCからhttp://ドメイン/?id=1にアクセスした場合はhttp://ドメイン/pc_error/index.phpにリダイレクトされるがhttp://ドメイン/?id=1のQRコードを生成させて
PCからhttp://ドメイン/?id=2にアクセスした場合はhttp://ドメイン/pc_error/index.phpにリダイレクトされるがhttp://ドメイン/?id=2のQRコードを生成させるという様にリファラからQRコードを作成することは可能でしょうか?
ご教示頂けると幸いです。
PHP 5.1.6
mysql 5.0.45
ErrorDocumentでその書き方だとRefererは来ないと思いますが…。
以下がRefererを見てQRを表示するコードです。一応ErrorDocumentでリダイレクトされたときの用取得のコードも付けときました。
<?php if(isset($_SERVER['REDIRECT_SCRIPT_URI'])) { $url = $_SERVER['REDIRECT_SCRIPT_URI']; if(isset($_SERVER['REDIRECT_QUERY_STRING'])) { $url .= '?' . $_SERVER['REDIRECT_QUERY_STRING']; } } else if(isset($_SERVER['HTTP_REFERER'])) { $url = $_SERVER['HTTP_REFERER']; } else { $url = "NO URL"; } header("Location: http://chart.apis.google.com/chart?chs=200&cht=qr&chl=" . urlencode($url)); exit();
あと多分、ErrorDocumentの書き方を以下のようにしてやらないと元URLを取得できなかった気がします。
ErrorDocument 403 /pc_error/index.php
回答ありがとうございます。
残念ならがNO URLしまいました…
こんな感じでしょうか。
$qr_imgには QRcode Perl CGI & PHP scripts からダウンロードしたライブラリを指定してください。
<?php $qr_img = 'qr_img.php'; //qr_imgライブラリを指定 $dt = $_SERVER['HTTP REFERER']; $uri = $qr_img . '?d=' . urlencode($dt) . '&e=M&t=J&s=2'; echo <<< EOF <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <img src="{$uri}" /> {$dt} </body> </html> EOF; ?>
リファラからURLを取得する方法がわかりません、URLを取得しqrコードを生成する具体的なソースの記述を募集しております。