読者です 読者をやめる 読者になる 読者になる

196の日記

完全に開発メモと雑談、その他忘れそうな計算式などを書き溜める場所になっています!

HTMLの属性値~idとnameの違い

id属性

これを書いた要素に対して、固有のidをつけることができるそうです。固有のものということで、同じ文書内で重複は許されていません。

使用例

//idなし form内にbuttonを記述することで関連付く
<form method="post" action="$_SERVER[PHP_SELF]">
...
<button type="submit" name="submit" value="send">送信ボタン</button>
</form>

//idあり form外からもform属性で指定したid属性値(今回はnameentry)を持つformと関連付く
<form method="post" action="$_SERVER[PHP_SELF]" id="nameentry">
...
</form>
..
..
<button type="submit" name="submit" value="send" form="nameentry">遠距離送信ボタン</button>

 

使い方としては、こんな感じでしょうか。。固有のものということなので、このように指定された要素を探し出し、指定することができるという感じですかね!

TAG<index>さんのサイトから引用させていただきますが、このid属性値の名前付けには多少の制約があります。

【ID名について】

IDを付ける際には、以下の点に注意してください。

1つのIDは、同じ文書内で1ヵ所にだけ使用できます。(重複させてはならない)
使用できる文字は、半角の英数字、ハイフン( - )、アンダーバー( _ )、コロン( : )、ピリオド( . )です。(ハイフン以外の記号は使わない方が無難です)
アルファベットで始めなければなりません。(数字や記号で始めてはならない)
大文字と小文字の区別があります。
IDをCSSセレクタとして使用する場合は、上記以外にも以下の点に注意してください。

CSSセレクタ名では、コロン( : )とピリオド( . )が使えなくなります。
アンダーバー( _ )をID名に含めると、一部の古いブラウザではIDが認識されなくなります。

 

 

name属性

name属性を使うことで、その要素に名前付けをすることができます。HTMLやPHPをあまり知らないので、formでの使用例しかわからない点をご了承くださいm(_ _)m

//入力フォーム
<form method="post" action="$_SERVER[PHP_SELF]">
<input type="text" name="city" size="30" maxlength="50" />
<input type="text" name="address" size="5" maxlength="2" />

<button type="submit" name="submit" value="send">Add Entry</button>
</form>

このフォームでcityのinputに"東京"、addressのinputには"渋谷区"と入力し、以下のようなPHPで受け取ったとします。

<?php
//$mysqliは事前に使用したmysqli_connectを保持。
if ($_POST) {
	$safe_city = mysqli_real_escape_string($mysqli, $_POST['city']);
	$safe_state = mysqli_real_escape_string($mysqli, $_POST['address']);
...
?>

突如SQL文を出してごめんなさい!現在勉強中なもので。。

初めのif文では$_POSTに値が入っているか確認しています。入っていないのに、中身を確認してもエラーになりますからね! そして、 $_POST['city']では"東京"、$_POST['address']では"渋谷区"を受け取ることができます。このように、POSTの中から取り出すものを指定する際に、nameは活躍できるんですね。

余談として、、


mysqli_real_escape_stringという関数について



これはPHPからMySQLにデータを登録するときに、MySQLで使用する特殊文字をエスケープする方法です。上の文のその後の処理としては、$POST['city']から受け取った"東京"を$safe_city変数に入れて、sql文で使用するという流れなのですが、そのままではSQLインジェクション攻撃に簡単に被害に遭います。てっとり早く言うと、mysqli_real_escape_stringという関数を経由すれば、少なくともmysqli_query関数で使用する場合は、チェックがいらなくなり、楽にかつ安全に使用できるよって感じです。