PHP QR Codeで「&」以降の値が渡されない問題を解決できた。

2024年04月05日 12時00分 正午の月齢:26.1  月名:二十七日月  潮汐:中潮 月齢:26.1[二十七日月] 潮汐:中潮
4週間前に投稿 | ウェブ・IT関係 | コメントはありません

3分ぐらいで読めます。

この記事を読む前に、ぜひ以下の記事を読んでください。

さて、そんなわけでQRコード生成フォームを作って、実際にちょくちょく使っているわけですが、ひとつ問題がありました。&を含んだ文字列の場合に&以降の値がQRコードに反映しないのです。

もともと「PHPでcomposerを使わずにQRコードを作成する」を参考に作ったので、result.phpもそのサイトに掲載されていたコードとだいたい同じように作りました。HTML部分だけ味付けした感じで。

<?php
// ライブラリを読み込む
require_once "phpqrcode/qrlib.php";

// PHPファイルを画像のURLとして読み込む
$url = 'create_qr.php?data='.$_GET['data'];
?>

<!DOCTYPE html>

<html lang="ja">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>QRcode generator</title>
</head>

<body>
<p><img src="<?php echo $url ?>" /></p>
<p><a href="index.php">トップに戻る</a></p>
</body>

</html>

URLを確認すると、create_qr.phpから正しく値が渡されているのですが、QRコード生成時に&以降が反映されないみたい。うーん、結構困った…。

…ということでいろいろ試して、ここには書かないけれどいろいろ試して、結局以下のようにすることでうまくいきました。

<?php
// ライブラリ読み込み
require_once "phpqrcode/qrlib.php";

// PHPファイルを画像のURLとして読み込む
$url = 'create_qr.php?data='.$_GET['data'];
?>

<?php
// ライブラリ読み込み
require_once "phpqrcode/qrlib.php";

// PHPファイルを画像のURLとして読み込む
$url = "create_qr.php?data=".urlencode($_GET['data']);
?>

というふうにGETした値をurlencodeすることで、&以降の値も反映したQRコードが生成されるようになりましたー。めでたしめでたし。

古い記事・新しい記事

古い記事 [2024年03月08日]
新しい記事

コメントはありません »

[RSS on this post] [TrackBack URI]

コメントをどうぞ

Translate »