勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

HTMLにてaタグクリック時にping属性のデータをPHPで受け取る方法

  PHP HTML

HTMLのaタグにping属性というものを設定できるらしく、設定したリンクをクリックした際、当該属性に指定したURLへpingが送信されるとのこと。「遷移前のページURL」「遷移後のページURL」「GETパラメータ」辺りをPHPで受け取り、ログに出力してみたい。以下にソースコードをメモ。

 

ソースコード

遷移前のページ(before.php)

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<a href="./after.php" ping="./log.php?price=100">link</a>
<a href="./after.php" ping="./log.php?price=100">link</a>
<a href="./after.php" ping="./log.php?price=100">link</a>

pingを受け取るページ(log.php)

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?php
error_log(
print_r($_SERVER['HTTP_PING_TO'], true) . "\n" . print_r($_SERVER['HTTP_PING_FROM'], true) . "\n" . print_r($_GET['price'], true) . "\n-----",
3,
'./test.log'
);
<?php error_log( print_r($_SERVER['HTTP_PING_TO'], true) . "\n" . print_r($_SERVER['HTTP_PING_FROM'], true) . "\n" . print_r($_GET['price'], true) . "\n-----", 3, './test.log' );
<?php
error_log(
    print_r($_SERVER['HTTP_PING_TO'], true) . "\n" . print_r($_SERVER['HTTP_PING_FROM'], true) . "\n" . print_r($_GET['price'], true) . "\n-----", 
    3, 
    './test.log'
);

解説等

以下で受け取れる。

  • $_SERVER['HTTP_PING_TO'] → 遷移後のページ
  • $_SERVER['HTTP_PING_FROM'] → 遷移前のページ
  • $_GET['price'] → GETパラメータ

ユーザーエージェントやアクセスIPアドレス等を取得したい場合は$_SERVERから対応するものを指定すると良い。

注意点

ping属性が現時点ではfierfoxに対応していない点に注意。詳細はリファレンスのブラウザの互換性部分を参照すること。

 

リファレンス

https://developer.mozilla.org/ja/docs/Web/HTML/Element/a#ping

 

所感

簡単な計測システムなんかを作りたい場合は使えるかも。firefox未対応なのは痛いところだけどスマホ向けサイトだとあんまり影響は無さそう。

 - PHP HTML

  関連記事

htmlのarticle

コーダーさんから渡されたソースに<article>という 記述があり ...

mp3ファイルのアップロードと再生方法

mp3ファイルをformでアップロードしたかったのと、Webサイト上で再生したか ...

フォームの入力内容をjQueryで取得し、本文として設定した上でメーラーを起動させる方法

formで何らかを入力してもらいボタンをクリックするとメーラーが開き、先ほど入力 ...

form送信後にURLにアンカータグ(ハッシュタグ)をつける方法

フォームからGETもしくはPOSTで送信し、その後のURLにアンカータグ(ハッシ ...

HTMLのimgタグでブラウザ幅によって異なる画像を表示する方法

あるサイトのコーディングデータを貰った際に1つのimgタグに対して複数の画像が指 ...

S