0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PHPの変数の値をHTMLタグの属性値として使う。

Last updated at Posted at 2022-11-19

前書き

PHPを利用してHTMLを書いていると、変数の値をタグの属性値にして使いたい時があったので、そのやり方

コード

input_sample2.php
<?php
$name=array('磯野波平','磯野フネ');

if(isset($_POST['namae'])
    AND in_array($_POST['namae'],array(0,1)))
    $input_value = $name[$_POST['namae']];
else
    $input_value = "";

$body =<<<BBB
<!DOCTYPE html>
<html lang="ja">
<head>
        <title>input sample page</title>
</head>
<body>
<form method="post">
    <p>名前を入力したい人を選択してください。</p>
    <label>お父さんの名前<input type="radio" name="namae" value="0" checked ></label>
    <label>お母さんの名前 <input type="radio" name="namae" value="1" ></label>
    <p><input type="submit"  value="入力"></p>
</form>
BBB;

$body2 =<<<BODY
    <h2>世田谷の有名家族調査</h2>

<form>
    <label>名前<input type="text" value="{$input_value}" size=20></label>
    <p><input type="submit" value="検索"></p>
</form>
BODY;

if($_SERVER['REQUEST_METHOD'] === 'POST'){
    $body = $body.$body2;
}

echo $body;
echo '</body></html>';
?>

実行

php -S localhost:8000

でPHPだけでWEBサーバを起動。

上記コマンドを打った場所がホームディレクトリーとなるので、そこにinput_sample.htmlを配置
ブラウザで見てみる。

スクリーンショット 2022-11-19 9.43.23.png

スクリーンショット 2022-11-19 9.43.50.png

うまくいった。

解説

コメントに書いているとおり、
PHP:echo - Manual
の記載方法をつかって、inputタグのvalue属性に値を渡している。

ヒアドキュメント内の変数展開と、数字のバリデーションを行なって、どんな値が来たとしてもなんとかなるようにした。

in_array()preg_match()どっちがいいんだろ?考えやすいのはpreg_match()の方だけど。

をみても

信頼できないデータは安全な属性のリスト(下記)にのみ配置、background, ID, nameなどの安全でない属性は厳密に検証する。

とのことなので、検証コードは必要。

まとめ

属性も動的に設定できると、WEBページを使った簡易的なゲームなんかがもっと柔軟に作れるようになると思う。

0
0
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?