リファラで取得したURLを自動的にQRコード作成する方法はありますでしょうか?


携帯以外の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

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2011/02/28 18:25:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:asuka645 No.1

回答回数856ベストアンサー獲得回数97

ポイント27pt

PHPで「QRコード クラス ライブラリ」を使えばできます。

id:xptree

リファラからURLを取得する方法がわかりません、URLを取得しqrコードを生成する具体的なソースの記述を募集しております。

2011/02/21 19:17:40
id:y-kawaz No.2

回答回数1422ベストアンサー獲得回数226

ポイント27pt

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
id:xptree

回答ありがとうございます。

残念ならがNO URLしまいました…

2011/02/22 11:15:46
id:asuka645 No.3

回答回数856ベストアンサー獲得回数97

ポイント26pt

こんな感じでしょうか。

$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;
?>

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません