今後の進捗についての説明。
バーチャルホストのリカバー(;´д`)トホホ…
今までのlocalhostからsmarty_sampleって場所に変更したよ。
そもそもバーチャルホストって何?
ひとつのIPアドレスに擬似的に複数のドメインをかぶせることができる。
複数のweb(localhostとかsmarty_sample)をPC内でいくつも使えるようにするのだー。
だが、ここで落とし穴。
Windows内でバーチャルホストを複数設置すると挙動が怪しくなる。
VM入れてLinuxで設定しよう。
ってなことで。
封 印(#でコメントアウト)
あとこぼれ話。
設定ファイルを書き換えるときは必ずバックアップを取ろう。
書き換える前のファイルを名前をつけて保存でBAK_とかつけて別名保存するだけ!
コレだけでトラブルのときにすぐ復旧できるよ!
2時間目
とりあえずプログラムってなに? PHPってなに?
資料みれ。すっごいわかりやすいから。
・JavaScriptでバリデート(エラーチェック。)
ブラウザだけで処理するからサーバー負荷がない。
でもJavaScriptはオフにできる。
→実務ではJavaScript+PHP両方のバリデートを行う。
・Noticeエラーもっかい
Smarty_sampleにnotice_test.php作成。
以下入力。
$num = $num1 + $num2; print $num; $text = $_POST["text"]; print $text;
んでphp.iniの
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATEDを
error_reporting = E_ALL
; & ~E_NOTICE & ~E_DEPRECATED
に変更。;にするとコメントアウトする。
Apache再起動。
すると、Notice: Undefined variable:~で
num1、num2、textそれぞれに対してNoticeエラーが出る。
コレはプログラムゆえに、変数の指定がないぜ~って言ってる。ここでは。
おとといも書いたけど、これが残っていると、どこに設定ファイルがあるのかモロバレ。
ハッキング等を受ける可能性があるのだ。
なのでちゃんと決めてあげないといけない。
んじゃどうするのか? 自分もわからんのでしっかり勉強。
$num1 = 0 ;//変数の指定 $num2 = 0 ;//変数の指定 $num = $num1 + $num2; print $num; $_POST["text"] = NULL;//変数の指定 $text = $_POST["text"]; print $text;
POST、GET、SESSION、連想配列でNoticeエラーが出ているときは、
変数の前に@をつけておくと回避ができる。
@$numとか。$text = @$_POST["text"]とか。
現場レベルで一般的だが、会社の方針に従おう。
ちなみにeclipceでは変数の指定がちゃんとできているとファイルの下にツリーが出る。
赤枠のところ。出ていない場合はNoticeエラーの疑い強し。
・公開領域再び
ブラウザに設定ファイルは置きません。
階層上げておかないと攻撃されちゃうよ;y=ー( ゚д゚)・∵. ターン
3時間目
テンプレートエンジンてなに?
めっちゃ簡潔に言うとclass(変数と定数と関数)ファイルの集合体。
smartyは変数をアサインするときは$不要。
$smarty->assign(‘title’, ‘Smarty-test’); //「Smarty-test」という文字列を、テンプレート
側で「$title」と書けば使用できるようにする
表示させるときは{$title}
Smartyがやってることを簡単に言うと・・・
PHPファイル(****.php = Model)で
assignした変数を
displayで指定したテンプレートファイル(****.tpl = View)で
使用できるようにする
(=assign変数をテンプレートファイルに渡す)
+α(ifやforeachの使用も可)
講座の中ではテンプレート群の記述は不要。デフォルトで設定済み。
(だからWEB講座にも記述がない)
テンプレート群は実務ではプロジェクトと同じ階層に置くため、記述が必要になる。
■eclipseのPHP内のHTML構文エラー非表示設定
設定 → 一般 → エディタ → 構造化テキストエディタ → 検証(青字リンク) →
HTML構文バリデータ、HTML構文バリデータ(PHPファイル用)のチェックを2つとも外す。
4時間目
ダウンロードしたsmarty_lessonをeclipceにインポート。
練習問題 1.配列 $gender = array ( "m" => "男", "f" => "女" ) ; これをSmartyで表示するときは、 {$gender.m}と書く。 2.if文 genderの値が「f」だったら「女」と表示するロジックを追加してください それ以外は「未選択」と表示するロジックを追加してください $gender = "f" ; ■性別: {if $gender == "m"} 男 {elseif $gender == "f"} 女 {else} 未選択 {/if} 3.foreach文 生phpでもいいような希ガス。んでも覚えておくのだ。 $pref[1] = "北海道" ; $pref[2] = "青森県" ; $pref[3] = "岩手県" ; ■住所: <select name = "pref"> <option value = "" selected>選択してください</option> {foreach from = $pref item = pref_name key = num} <option value = "{$num}">{$pref_name}</option> {/foreach} </select>
{}(デリミタ、ブレス)の直後と直前に余計な半角スペースがあると正常に動作しない。
4.foreach+if文
【問題】
年、月、日をプルダウンで選択できるように表示してください
→foreachを使用する
→まず年を作成する
→うまくいったら同じ要領で月と日も作る
【発展問題】
→現在の日付とループの日付が一致したらデフォルト選択という条件式をつける
if文中にはPHPの関数を使うことができる
・今回は関数「date()」を使用する
→現在の年を求めるには…date("Y")
→現在の月を求めるには…date("m")
→現在の日を求めるには…date("d")
5時間目
date.php //年の配列を生成 for ( $i = 2000; $i <= date("Y")+3; $i ++ ){//2000年~2014年まで $year_list[$i] = $i; } //月の配列を生成 for($j = 1; $j <= 12; $j ++){//12月 $month_list[$j] = $j; } //日の配列を生成 for($k = 1; $k <= 31; $k ++){//31日まで $day_list[$k] = $k; } date.tpl <form action=""> <select name = "year"> {foreach from = $year_list item = year} <option value = "{$year}"{if date("Y") == $year} selected{/if}>{$year}</option> {/foreach} </select>年 <select name = "month"> <option value = "" selected>選択してください</option> {foreach from = $month_list item = month} <option value = "{$month}"{if date("m") == $month} selected{/if}>{$month}</option> {/foreach} </select>月 <select name = "day"> <option value = "" selected>選択してください</option> {foreach from = $day_list item = day} <option value = "{$day}"{if date("d") == $day} selected{/if}>{$day}</option> {/foreach} </select>日 </form>
閉じ}のないphp文の記述を理解していなかった・・・・・・。
いいんちょの言葉が頭の中でリプレイする。
0 件のコメント:
コメントを投稿