74日目 | web制作
本日は…
■昨日の残りを解説
check.phpで
<?php $_SESSION['error_name'] = $error_name; ?>
というシリーズを各項目分作成して、エラーメッセージをセッションに格納していく。
⇒エラーのときindex.phpにこれを呼び出すようにしてやる
<?php if(isset($_SESSION['mail']['error_name'])){ $error_name = $_SESSION['mail']['error_name']; } ?>
で、関数を作る。
あとはエラーを表示したいところに$error_nameを代入してやればいい。
■unsetで作ったセッションの内容を片付けていってやる
1つ1つ消していくことは大変なので
→$_SESSIONのなかに個別の小箱を作ってnameやemailと名前つけたものを、さらにmailという大きな箱に入れてしまえば、mailを削除するだけで全部消すことが可能(二次元配列)。
■cookieの話
…セッションファイルを作ると、同時に作成される
・同じサイトにもう一度アクセスすると、前に入力した文字が表示されたりする現象は、これによる。
…idを元にセッションファイルにアクセスして、入力した内容を吸い出して表示している(サーバーに情報を残している)
・unsetでセッションファイルだけ消しても、cookieの情報は残ってしまう
※cookieはブラウザごとに違うところに保存される。
ex)chromeとfirefoxでは保管場所が違うので連動していない
<?php if(isset($_COOKIE[session_name])){ setcookie(session_name(),'',time()-20000,'/'); } ?>
■function h ()をfunc.phpに格納
func.phpを作成する
中に
<?php function h($str){ return htmlscpecialchars($str,ENT_QUOTES,'utf-8'); } ?>
を入れ込み、index.phpとsend.phpと、checl.phpのfunction以下を消す。
変わりに
<?php require_once(__FILE__). '/func.php'; ?>
を入れ込んでやると、functionをfunc.phpから呼び出せるようになる
require_onceで、一度だけファイルを呼び出してこいという命令。
★session_start();も入れ込める
■フォームを改造する
autofocus
required
placeholder
maxlength
などを各項目に入れてやる
emailのタイプをtextからemailに変更してやる。
→@マークのチェックをしてくれる。
※※html5の機能は古いブラウザでは働かないので注意
■空白でも送れてしまう問題他
空白も文字としてカウントされるので、当然と言えば当然
※じゃあaaaaaaはいいのか?という問題もある
※名前を偽名にされても分からない
※適当なメアドを入れられる可能性もある
解決するには
<?php if(mb_strlen(trim(mb_convert_kana($name,"s",'utf-8')))!=mb_strlen($name,'utf-8')){ $error_name = '名前の前後、あるいは全てに空白文字が使われています。'; } ?>
といったものを入れてやる。
●Location:./~~について
ここはフルパスにしておいたほうが安全
→cssでいじりたいときは、まるっとソース(ページを開いた状態で取れるもの)をコピーして、
それに足してcssをかけてやれば、簡単に調整できる。
…phpのソースが一切表示されないから
→当然cssファイルを外部から読み込ませることも可能
■データベースの話を少し