スポンサーサイト

  • 2009.06.05 Friday
  • -
  • -
  • -
  • by スポンサードリンク

一定期間更新がないため広告を表示しています


特殊文字をhtmlエンティティに変換【htmlspecialchars】

フォームの入力の際、htmlタグやJavaScriptタグ等を入力してしまうと、その入力したhtmlやJavaScriptが実行されてしまうという現象がおこる(セキュリティ的によろしくない)ので、それを無効にする関数。

htmlspecialchars($var, ENT_QUOTES); というもの。

特殊文字(『<』『>』『&』『"』)をhtmlエンティティ(ただの安全な文字)に変換する関数だそうです。
さらに第二引数にENT_QUOTESを入れる事で、『'』も安全な文字に変換する事ができるそうです。

なんというか、色々ともっと精進しなきゃって感じですね。

まちがえさがし【追記】

さっき一つ前の記事でサンプルのPHPを書いていたとき、if文が動かないなーと思ってたら無意識の内にこう書いてたっぽいです。

-----------------------------------------------------
 <?php
  $text = $_POST['text'];

  if($text = "") {
   print "入力内容がからっぽです。";
  }
  else {
   print nl2br($text);
  }
 ?>
-----------------------------------------------------

一つ前の記事のPHP部分と見比べてみると…

if文の条件式のところが $text = "" となってます。
この文だと、$textという変数に""の中身(この場合は空)を代入するという意味になってしまうそうな。
よって、この場合は $text == "" が正しい記述。
変数の中身が空という意味になります。

ちなみにこれはPHPに限らずどのプログラムでも変わらないらしいので、記述の際に注意が必要。
かつ、ウチのような初心者だとやってしまいがちなミスだそうなのでメモ。

改行文字→htmlの<br />タグへの変換

引き続き、PHPネタ。
フォームで入力したテキスト内容を、ユーザーが任意で改行したまま確認画面で表示っていうのがありますよね。

その場合は、nl2brという関数を使います。
改行文字(¥n)をhtmlの<br />タグに変換するというものです。

上記の関数を使わない場合、フォームに入力した内容を確認画面に表示する際
改行文字が認識されないので、改行されてない内容が画面に出てくるという事になります。

とりあえずサンプルはこちら

ちなみにソースは以下の通りです。
-----------------------------------------------------
<html>
<head><title>サンプル</title></head>
<body>
 <h1>文章を入力して下さい。</h1>
 <form action="text.php" method="post">
  <textarea cols="80" rows="10" name="text"></textarea><br />
  <input type="submit" value="確認" />
 </form>
 <?php
  $text = $_POST['text'];

  if($text == "") {
   print "入力内容がからっぽです。";
  }
  else {
   print nl2br($text);
  }
 ?>
</body>
</html>
-----------------------------------------------------
<br />を出力させたい文字列にnl2brを使います。
print nl2br(文字列変数); といった具合です。

ちなみにこのサンプルだと多分入力する文字列によっては変な文字が出現すると思うので、それはまた機会があったら、の予定です。

メールアドレスのチェックで正規表現のお勉強

少し(?)前ですが、PHPのサンプルフォームの作成でメールアドレスのチェックがあったので、ここで明記。

<?php
 // メールアドレスの入力エラー(空の場合)
 if($mail == "") {
  echo("<font color='#ff0000'>メールアドレスを入力してください。</font>");
  $mail = false;
 }
 else{ // 半角英数字以外の文字を入れた場合
  if (!preg_match('/^[a-zA-Z0-9][a-zA-Z0-9_¥.¥-]+?@[A-Za-z0-9_¥.¥-]+$/',$mail)) {
   //エラー
   echo("<font color='#ff0000'>メールアドレスが正しくありません。</font>");
   $mail = false;
  }
 }
?>

preg_matchは、正規表現によるマッチングを行う関数のこと。

preg_match("/パターン/", 調べる文字列) の形式。
上記の場合、調べる文字列は $mailという変数になる。

それで、問題は /パターン/ に該当する、 ^[a-zA-Z0-9][a-zA-Z0-9_¥.¥-]+?@[A-Za-z0-9_¥.¥-]+$ という表記。

これを正規表現で表すと、
^ …先頭から
[a-zA-Z0-9] …文字クラス(※半角英数字にマッチ)
[a-zA-Z0-9_¥.¥-] …文字クラス(※プログラム等で使う . と - のメタ文字を、その前に ¥ を置く事で、ただのハイフンとドットとしての扱いになる。)
+ …1回以上のパターンの繰り返し
? …0回から1回のパターン
$ …末尾から

となる。

…次回(があれば)につづく。

データのGETとPOSTの違いについて

ここ最近、新しい案件をやるのにあたりサンプルのフォームを作成してたわけですが、
その際にデータを送信するのにGETメソッドとPOSTメソッドが〜という話がありました。

GETはURLにパラメータがあるもの、POSTはURLのパラメータがなく、大量のデータの送信が出来るといったような話だったのですが、もっと概念を理解しなければという感じですね。

頭の中を整理するのに後で読もう。

calendar
     12
3456789
10111213141516
17181920212223
24252627282930
31      
<< December 2017 >>
スカウター : moz'B
links
others
selected entries
categories
archives
recent comment
   
sponsored links
recommend
profile
search this site.
others
mobile
qrcode
powered
無料ブログ作成サービス JUGEM