六帖のかたすみ

DVを受けていた男性。家を脱出して二周目の人生を生きています。自閉症スペクトラム(受動型)です。http://rokujo.org/ に引っ越しました。

進捗

作り始めてみたら、PHPだけですべて実装できそうなので、JavaScriptを使うのをやめてPHPだけで実装することにした。引っ越しが入ったとはいえ4か月間かけて読んだ本はデザインパターンJavaScriptの本だったので、何の役にも立たなかった。。PHPはまだ少ししか触っていないので、ちょうど良い経験になりそうだ。
ログイン画面、問題集作成画面、問題登録画面のみ作成完了。肝心の出題画面ができていないので、まだ非公開。
ログイン画面についてはここを参照した。
Eclipseを使用して開発中。オートコンプリートがそこそこ使えること、テストが即座にできることから、メモ帳を使っていた時代より作業時間は大幅に短縮できている。デフォルトでステップ実行できないことが残念。Xdebugというツール?を導入すればできるらしいので、次回試してみよう。
1点、PHPは画面遷移を伴うアプリケーションしか作れないのではないか、という危惧があったが、formタグのactionを空にする、という手法を使えば、ボタンを押してPOSTしても自分のページに遷移するだけでしかもクロスサイトスクリプティングも防げる、と一石二鳥であるとわかったので、これを使う。

<form action="" method="post">
<input name="password" type="text" value="pass" />
<input name="action" type="submit" value="login" />
</form>

のようにすれば、$_POST["pass"] で入力したパスワードをゲットして、PHPだけでもパスワード入力画面に「パスワードが違います」などと表示することができる。ただし自ページ遷移なので、同じPHPのコードを2回実行することになる。上の例ならloginボタンを押したことを検知するために

// ログインボタンが押された場合
if (isset($_POST["login"])) {
	// 入力チェック
	if (empty($_POST["password"])) {
		$errorMessage = "パスワードが未入力です。";
	}
}

のようにせにゃいかん。これなら1回目にページを表示したときはloginボタンが押されてないのでif文の中は実行されず、次にloginボタンを押せばif文の中が実行される。