【PHP】imput type ="image" で POSTされたkeyに_x _y が付いている

PHPで見覚えのないx や y が付いている

先日、社内の古いプログラムを調査したときに知った、今更な知識

あるところに、二つのファイルがありました…

hoge.php

foreach($_POST as $key =>$value){

  if($key == "add_x"){
    echo "追加だよ"

  elseif($key == "del_x"){
    echo "削除だよ"

  end

end
  • hage.html
--省略

<form action="./hoge.php" method="POST">
  <input type=text name="email" class="address_input">
  <input type="image" name="add" src="./images/add.gif">
  <input type="image" name="del" src="./images/del.gif">
</form>

--省略

単純にhage.htmlのフォームからhage.phpにPOST投げている、平凡なプログラムなんですが、"add_x" と  "del_x" ってどこから出てきたのか…とデザイナーさんと途方にくれました

分かってみればなんてことないない事だったのですが

input type = "image" は座標をPOSTする

要はクリックした位置を渡す仕様のようです ※Enterキーを押した場合は(0, 0)

  <input type="image" name="add" src="./images/add.gif">
  <input type="image" name="del" src="./images/del.gif">

こんな感じである場合、POSTされるのは add_x, add_y, del_x, del_y のkeyです(多分)

で、先述のPHPのプログラムの意図はこんな感じじゃないでしょうか

  • 座標ば別にいらない
  • 複数の画像ボタンを設置したかった
  • 複数の画像ボタンの判別をしたかった

注意するところ

もし判定に使うのなら、_xだけではなく、yも入れてほしいな

_xだけだとぱっと分からないけれど、xとyがあればなんとなく”座標かな”って思う(かもしれない)

古いプログラムだと、何も考えずに_xのname付ける人もいそうだしね

普段からx、yのnameは使わない

逆に_x は座標のパラメータだ!って先入観で無駄な手間がかかりそう。

なので、極力使わないほうが良いなって思いました。

使えなくなる機能がある

  • form.submit() が使えなくなる
  • input=textでenter送信とかできない

botや不正対策に使えそうな気がしてきた

brand ってロゴの画像を置いておいて、aをクリックしてください、と書いておいて座標で判断する

ちょっとしたフォーム送信とか、掲示板とかに使えそうだけど聞いたことはないw

パーフェクトPHP

パーフェクトPHP