職業訓練校での半年間

2013/10月中旬から半年間の記録を書き留める予定。
http://android.wktk.so/ があるのを知って開始しました。

2014年01月

phpの授業に戻ったんだじぇ。

★文字の分解・結合
implode() ⇔ explode() の関係 

日本語ドキュメントが充実してるのでそれを踏まえて・・・
【implode()】
配列の要素を連結する。
http://www.php.net/manual/ja/function.implode.php
※↑のページ「houston_roadrunner at yahoo dot com ¶」の例文が分かりやすい!

【explode()】
配列の要素を分解する。
http://www.php.net/manual/ja/function.explode.php 
※↑のページ「例3 limit パラメータの例」かなぁ・・・。

あと課題でたけどたいしたことがないのでソースは割愛、、(てかhtmlの授業、、)
ページ1:色をselectタグから選択して送信(formタグで送る)
ページ2:formで送られてきたデータを元に色を表示+<p>タグにid指定して色塗る
WS000087



【備考】
「require_once」で1つずつファイルを読み込んでましたが、
include を使用すればfor文で短いソースで複数のファイルを読み込むことが出来ます。
http://www.php-labo.net/tutorial/php/include.html#include_once

ディレクトリ配下のファイル名を取得する下記と合わせれば
Javaのワイルドカード(*)的なこともできそうね。
http://cos31.hatenablog.jp/entry/20071112/1194898338

調べておいてアレだけど、
必要ファイルだけ読ませるならrequire_onceするファイルを
import専用のphpファイルにするのもありか。。。
現場で使うことがあれば現場の流儀に従おうっと。


<b>と<strong>は見た目の差はないけど、SEO対策で差がでるのか・・・。
http://www.homepage-tukurikata.com/html/b-strong.html


 さて授業っす。
「HTMLの方もわかんないよ!」ってことで、HTMLのお話。
WS000083
⇒htmlに色つけたり、太字にするなどのスタイルをつけるファイル置き場
⇒画像置き場
⇒Javascriptファイル置き場
⇒PHPファイル(HTMLに+αしたもの。今回の説明ではhtmlと置き換えてもOK)


cssファイルの作り方(基礎)+html(php)ファイルにてcssファイルを読み込ませる方法は下記参照。
http://kumacrow.blog111.fc2.com/blog-entry-261.html
http://css.uka-p.com/

ちなみに自分のページを変えたり、他サイトのパーツを参考にする場合は
chromeであれば、対象サイト内で「右クリック」⇒「要素を検証」を押します(F12でもOK)。
すると画面下部にhtmlの要素が表示されます。

右側に表示されるのはcssに記述していくようなパーツだったりします。
WS000084

chromeだと右側の要素へマウス持って行くと
チェックボックスが表示され、そのチェックをOn/Offするとものによっては
画面の表示が変わります(値をいじって試すこともできます)
※詳しくはこちら様で http://www.buildinsider.net/web/chromedevtools/01
  下記をとりあえず押さえておけばいいんじゃないかなぁ。
 CSSレイアウトの魅力と注意点
 CSS基礎講座

本で読みたい!ってひとはコレかな。



 


XAMPPからApacheを起動し、下記にアクセスします。
http://localhost/security/index.php
 
まーデフォはこうなってますよ、と。
WS000080

●これらのXAMPPページは~
 ⇒外部、もしくは同じネットワーク(オフィス内・家)にいる人にApache起動してると
  そのページが見られてします(=XSSとかやられる)

 これ説明します。
 コマンドプロンプトで「ipconfig」と入力すると下記のように
 ”オフィス内”で自分に割り振られたIPが見れます。
WS000081

 で、デフォのままだと「http://localhost/php/day2/11.php」で今見てるページが
 「http://192.168.1.115/php/day2/11.php」で他のPCからアクセス可能な状態になってます。
  
●MySQLサーバは~
 ⇒MySQL(データベース)に入られちゃうよーっと。
●PhpMyAdminは~
 ⇒PHPの設定を管理者権限でいじられてしまう。
●FTPサーバは~
 ⇒ファイル取られる恐れがあるのだよ、と。

不明になってるものはファイアウォールでブロックされてるので
とりあえず要注意の部分を下記に沿ってどうにかします。
http://www.php-labo.net/tutorial/ready/xampp_setup.html
【httpd.conf】
※「localhost」ってのは「127.0.0.1」を指します。
※「80,443」ってのはhttp,httpsのデフォルトポートです
【php.ini】
※「;」はコメントアウトの意味(;が付いてると設定には反映しない)

設定ファイル(ここでは.confファイル、iniファイル)を変更する場合は、
ファイルのバックアップを取っておきましょう!

そうすれば何か起こった際、ファイルを差し替えるだけで対処できますし\(^o^)/


【備考】

★ftpのアクセス権限(基本許可してない)
 ※netstat -anでFTP(21port)がそもそも生きてるか確認可能。
http://document.secure.ne.jp/ftp/ftpaccess/ftpaccess.php
 
★MySQL(逆にアクセス許可する方法なので要注意)
http://blog.perl.tv/2009/02/mysql.html 

商用で使用するならルーティングとかipconfigいじるんですけどね(~o~) 


やったこと
・for文
・if文
・while文
・foreach文(New!
・連想配列(New!

New!以外はjavaと使い方変わってないので割愛します。

★foreach文
<!DOCTYPE html>
<?php
  $data = array('a','b','c');
?>
<html>
<head>
  <title>day11</title>
</head>
<body>
  この名簿には<?php print(count($data)) ?>人が登録されています。
  <ul>
  <?php
    foreach ($data as $d) {
      print('<li>'.$d.'</li>');
    }
  ?>
</body>
</html>


★連想配列1
<DOCTYPE html>
<?php
  $data = array(
          'たまこ' => 'じょじょじょ',
          '鬼畜こけし' => 'くたぱん',
          'こはるん' => 'ドンチキ田中',);
?>
<html>
<head>
  <title></title>
</head>
<body>
  <?php
    foreach ($data as $chara => $outer) {
      print('<dt>'.$chara.'</dt>');
      print('<dd>'.$outer.'</dd>');
    }
  ?>
</body>
</html>
WS000078
★連想配列2(2次元配列)
<!DOCTYPE html>
<?php
  $data = array(
          't1' => array('a1','a2','a3'),
          't2' => array('b1','b2','b3'),
          't3' => array('c1','c2','c3'),

        );
?>
<html>
<head>
  <title></title>
</head>
<body>
  <?php
    foreach ($data as $main => $sub) {
      print('<dt>'.$main.'</dt>');
      print('<dd>'.$sub[0].'</dd>');
      print('<dd>'.$sub[1].'</dd>');
      print('<dd>'.$sub[2].'</dd>');
    }
  ?>
</body>
</html>

WS000079










これよく放送したな・・・
昨日の「モヤモヤさまぁ~ず2」で、過去最強の放送事故wwwwww


さてと、唐突ですが
phpファイル作るならSublime Text2がお勧めです。

「html」と入力し「Ctrl+Space」を押すだけで
<!DOCTYPE html>を除いたタグが自動補完してくれる
・・・など補完機能が搭載されてたり色がついてて見やすいです。
※他にも様々な機能ついてますが。
WS000077


あ、今使ってる教科書はコレです。
セッション維持、DBアクセス、認証機能も触れてるしいいんじゃないかなぁっと。
現場で使うには暗号化とかフレームワーク(cakePHP)など+αの知識が必要になるけど。。



書き方の基本です。
大抵は「HTML&PHP」の書き方を用いてます。


HTML&PHP
 
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8" />
  <title>PHP入門教室
</head>
<body>
  <?php
    print('こんにちは世界
'); print('こんにちはPHP!'); ?> </body> </html>

PHPおんりー
<?php
  $aaa = "bbb";
  $bbb = "ccc";
  print($$aaa.'
'); $num1 = 2; $num2 = 3; print('2x3 = '.($num1 * $num2)); ?php>

3限目は変数の使い方やりました。
・文字列の連結「$c = $a.$b;」
・「" "」「' '」の使い分け
・Javaと違って「>==」「===」の算術演算子があるよ

午後は入力フォーム。
肝は「★les6req2.php」の「print htmlspecialchars()」で、
コレの下に「//」してる行のものでも表示できるのですが
XSS対策のためと、特殊文字の入力対策に活躍します。
※詳しくはhttp://gihyo.jp/dev/serial/01/php-security/0007
※html@特殊文字http://e-words.jp/p/r-htmlentity.html

IEでコレを表示すると・・・
<Tom & Jerry>
 ⇒表示に失敗する
・<script>alert('わぉ!')</script>
 ⇒WindowAlertが表示される

また、「form method="POST"」の部分は「form method="GET"」に置き換えられます。
が、「http://localhost/php/les6req2.php?name=てすと」のように
URL部分に入力データがパラメータに表示されるので要注意です!
クエリストリングから情報が漏れる
ServletやHTMLなども同様に、一歩間違うと
個人情報やシステム情報流出につながる!ので注意しましょう。

★les6req1.php
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8" />
	<title>PHP入門教室6</title>
</head>
<body>
<!-- htmlのフォームを参照 -->
<form method="POST" action = "les6req2.php">
	<div id="container">
		<label for="name">名前:</label>
		<input type="text" id="name" name="name" />
	</div>
	<input type="submit" value="送信" />
</body>
</html>

★les6req2.php
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8" />
	<title>PHP入門教室6-2</title>
</head>
<body>
こんにちは、
<?php
 //POSTでデータ送られてくるので$_POST[]。$_GET[]もある。
 print htmlspecialchars($_POST['name'], ENT_QUOTES, 'UTF-8');
 //print($_POST['name']);
?>
さん!

</body>
</html>

その後、下記もやりました。
・日付の取得
・配列
・配列+<ol>タグ
時間はdate()の時間がデフォだと会わないのでこちらを・・・
 ⇒[PHP] date関数の時間(TimeZone)がずれる

<?php
$data = array('奄美', '如月', '高月','二見', '萩原','庵','三浦','鬼畜','秋月');
?>
<DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8" />
  <title>PHP入門教室</title>
</head>
<body>
<?php
  print('現在日時:'.date('Y/m/d H:i:s').'<br/>');
?>
ナムコの初期は<?php print(count($data)); ?>にんが登録されてました。
<ol>
<?php
  for($i=0; $i<count($data); $i++){
    print('<li>'.$data[$i].'</li>');
  }
?>
</ol><br/>
そして3にんが追加ました。
<ol>
<?php
  $syokiNum = count($data);
  array_push($data, '星井', '響', '高嶺');
  for($i=$syokiNum; $i<count($data); $i++){
    print('<li>'.$data[$i].'</li>');
  }
?>
</body>
</html>




 【備考コーナー】
軽くPHP押さえてから入門サイトいくつか見たけど
下記が情報量的には多いかなーと思いました。
とほほのWWW入門
 

このページのトップヘ