Author: admin

Mac、OSXの場合について

Macの場合のダウンロードで初期画面が出たら、ここでは「Lauch MAMP」を選びます。「MAMP PRO]は有料の拡張機能版となります。そこから起動します。アプリケーションフォルダからMAMPを起動させましょう。サーバー起動をクリックしてください。これでWebサーバーが起動となります。それからファイルを実行用のフォルダにコピーしましょう。「/Applications/MAMP/htdocs/」ここでsample01.phpというファイルを実行してみましょう。Webプラウザで「http://localhost:8888/sample01.php」と打ち込んでください。ここまでできたら、次はファイルを編集するためのエディタソフトを準備しましょう。Windows、Macとどちらも付属しているソフトがあります。ただ、これらは使い勝手があまりよくありません。別に用意した方が無難です。好みのソフトを選んでみましょう。いくつか挙げます。「Visual Studio Code」「Atom」「Sublime Text」の3つはWindowsとMacどちらでも使えます。他にもありますので試してみるのもいいと思います。Webプラウザで作成したプログラムを確認するという作業をします。そのために、Webプラウザを用意するのですが、Windows、Macには標準で搭載されているものがあります。ただ、これは、勉強するにはあまり適していません。GoogleのChrome(クローム)をインストールすると良いでしょう。準備を整えたらPHPを使ったプログラムを作ります。プログラムとは「計画」、「演目」という意味です。

PHPでカレンダーを作ってみよう

日別のカレンダーを作ってみましょう。まず、数字ですが、1から365まで必要です。これを手作業でやるとなると大変です。PHPで「繰り返し」のぷるゴラムを使って作成すると簡単です。1から数字を書き出すという単調な作業は辛いものです。こういったものはプログラムを作れば一気に大量に処理することができます。「繰り返し」という制御構造です。PHPでは繰り返しの制御構造は、「while」と「for」という構文で作ります。whileを使ってブログラムを作成してみます。「$i=1; while($i <= 365){print($i.”/n”); $i++;}となります。「i」という変数名はプログラムでよく利用される文字の1つです。「index」の略称で、1から順番に数えるときなどに使ったりします。「$n」や「$x」というように、人によって好きなアルファベットを使うこともあります。$iは一般的に使われているようです。また、iを使っている最中に、さらに変数が必要という場合があります。そういったときは、「j」が使われます。これはただ単にiの次がjだからです。これで足りなければ、k、l、m、と続きます。2を表示するには、「$i=1; print($i); // 1が表示される。 $i=$i+1; print($i);//2が表示される」というプログラムで2が表示されます。これをコピーしていけば、1ずつ加算して画面に表示されます。これを何度もコピーするというのも効率が悪いので「何回繰り返す」という記述をしてプログラムを作ります。whileという繰り返しの構文は、「while(繰り返す条件){繰り返したい処理}という記述をする繰り返し構文です。

PHP思考の準備・賢いロボット作り

プログラムの醍醐味というのは、決められた動作をするだけではありません。ロボット自身が判断をして、どんな迷路でもゴールできるようにすることです。「前に進む」「右に回る」という命令だけでは賢いロボットというものはできません。「もし()なら」と書いた付箋と「()まで繰り返し」「ここまで」と書いた付箋紙を準備しましょう。これらは強力なロボットを作るための命令です。たとえば、スタートからゴールが一直線の100マスなら100枚の付箋紙があれば、ゴールすることはできます。このような何度も同じ動作を何度も組み合わせる場合は「繰り返し」ブロックを使うといいのです。例えば、5つのマスのブロックなら、「(4回)まで繰り返し」「前に進む」「ここまで」の3枚で付箋で足ります。この繰り返しブロックは回数以外の条件をかくこともできます。「(ゴールする)まで繰り返し」「前に進む」「ここまで」でいいのです。これならば、4マス迷路でも、3マスでも100マスでも対応できます。「繰り返し」「ここまで」というものの間には、いくつでもブロックを挟むことができます。「前に進む」「右に回る」というものを挟めば、折れ曲がった迷路でも、ゴールに辿り着きます。実際のプログラムにも繰り返しの仕組みがあります。これは重要な役割です。繰り返しブロックを使うと、何度も同じような動作を記述しなくてもいいことになり、効率よくプログラムを作ることができます。ただ、これだけでは決まりきった動きしかできません。さまざまな迷路に対応するには、「もしも」ブロックを使う必要が出てきます。もしもブロックには条件を記述。その条件に合う場合だけ行う動作を指定していきます。

プログラミングを行う際の流れ

プログラムとは人間がコンピューターに伝えたい事を解釈してくれる手段なのだそうです。さて、では、プログラミングはどのような流れで行われるものなのでしょうか?プログラミングを行う際にまず大切になってくるのがアルゴリズムだそうです。意味は問題の解法だそうです。アルゴリズムとは人間が解決させたいと思っている問題に対して、その問題をどのようにして解決するかというものなのだそうです。問題と聞くと何やらとても難しいものを指すように感じてしまうかもしれませんが、実際にはそんなことは無いようです。例えば、ブログなどのプログラムを書くとしましょう。「ブログの投稿に記事が追加された時はデータベースに保存を行いたい。」という問題が出てきたとします。この問題を実際にどのような手順で、どのように処理を行い問題になっていたものを達成するのかがアルゴリズムにあたるのだそうです。アルゴリズムを考えてから実際にプログラミングを書いていくそうです。この時プログラミングはプログラミング言語に定義されているプログラミング言語の文法で書いていくのです。そうして記入されたプログラムのことをソースコードと呼ぶそうです。コンピューターにプログラミングで「このような手順(アルゴリズム)でこうして欲しい」とソースコードを入力し実行すれば、伝えた手順通りに動いてくれるはずです。このソースコードは英語に近い文で出来ているため人間でも読みやすいそうです。さて、このソースコードをコンピューターが0と1で対処出来るようにするためにも、コンピューターにとって理解しやすい形にソースコードを変換しなければなりません。これはプログラミング言語の種類にもよるそうなのですが、CやJavaといった言語では、ソースコードを解釈する「コンパイラ」と呼ばれている機能があるためコンピューターが理解出来る形式の「オブジェクトコード」に変換を行っているそうです。この変換を行うことをコンパイルと呼ぶそうです。また、CやJavaなどコンパイラによって変換する作業である紺ばいるが必要となってくる言語の事をコンパイラ言語と呼ぶそうです。これとは反対にインタプリタ言語と呼ばれているものがあり、それはPHP言語などのプログラムを実行する際にコンパイルが行われるものだそうです。PHP実行エンジンがPHPを直接解釈するコンパイラの役割を果たしているそうです。

投稿の重複を防ぐ

投稿処理の最後に「header」ファンクションで再びindex.phpにジャンプさせるそうです。これは、重複投稿を防ぐ処理だそうです。この処理というのはあってもなくても表示される画面に変わりはないそうです。けれど、「再読み込み」ボタンをクリックするなどしてリロードしようとすると「本当にもう一度フォームを送信しますか」というようなエラーメッセージ的なものが出てきたり、さらに「送信」ボタンをクリックすると、投稿が重複して記録されてしまうそうです。これは、フォームを送信したりページをリロードすると、改めてフォームの内容が送信されるというWeb特性によるものだそうです。これを防ぐためには「header」ファンクションでジャンプさせて情報を削除するということをしているそうです。投稿された内容をみるためには、HTMLを作成するそうです。そこでフォームの下に、メッセージを配置したりするそうです。プログラムを組み込んで実際にメッセージを表示するようにするそうです。プログラム量はとても多くなるそうです。ただ、基本の応用ということで難しさはないそうです。メッセージは「posts」テーブルに格納されているそうです。メンバーの名前やアイコン画像というのは「members」に格納されているそうです。この2つのテーブルから情報を取り出す必要があるそうです。取り出したデータは「$posts」という変数に代入しておくそうです。これには分かりやすい名前をつけておくほうがいいそうです。続いて「mysql_fetch_assoc」ファンクションでレコードセットから1件のレコードを取り出すそうです。この配列にはメッセージなどのデータが含まれるそうです。

PHPファイルの拡張子はphp

一般に、ファイル名のうちピリオドで区切った後ろの部分が「拡張子」となっています。 PHPのプログラムを書いたファイルには、「php」の拡張子を付けます。 ファイル名は自由に付けられますが、半角の英字、数字、記号のみを使うのが 一般的です。 Webブラウザから要求したファイル名の拡張子が「php」であると、 Webサーバは「要求されたファイルはPHPのプログラム」であると判断し、 PHPの処理エンジンに処理を依頼します。

エディタの背景色を設定

必要に応じて、エディタの背景色を以下の手順で設定できます。 Peggy Pad 画面上部のメニューで [ツール(T)] ― [オプション(O)] をクリックします。 オプション設定画面が表示されますので、上の方にある[表示色]タブをクリックします。 すると、Peggy Pad で、表示するいろいろな項目の色を設定する画面が表示されます。 それぞれの項目に対して色を任意に指定して、設定した色情報を 「保存」ボタンにより保存することができます。 また、インストール時に何種類かの色設定が保存されていますので、それを読み込んで自分の好きな色設定を見つけることもできます。 保存されている設定を選ぶには、次に示す手順で可能です。 手順① オプション設定画面の「表示色」タブ画面で「読み込みJボタンをクリックします。 手順② Peggy Padをインストールしたフォルダの中の色設定フ ァイル(拡張子がcol)を1つ選びます。 設定が終わったら、「OK」ボタンをクリックしてオプション設定画面を閉じます。

XSSの対処法

XSSの脆弱性からアプリケーション利用者を守るためには、Webブラウザが認識するHTMLタグ構成文字をHTMLエンティティズに変換しなければなりません。 この処理のことを「HTMLエスケープ処理」と言います。 これらの文字列に対してすべてエスケープ処理を行うには労力がかかりますが、 PHP が用意している「htmlspecialchars 関数」をかけることにより、簡単にエスケープ処理が可能です。 XSS の完全な対策として、変数が安全だとわかっていても、出力するすべての変数にこの処理を行わなければなりません。 これはプログラマとしては非常に面倒な処理となります。 ここで Smarty の 「escape 修飾子」を利用します。「$bodylescape」とすると、「htmlspecialchars($body,ENT_QUOTES);」と同様の処置を行ってから出力を行ってくれるのです。 出力するすべてのSmarty変数にescape修飾子を記述するのは面倒ですが、この措置を忘れるといつでもXSSの危険性にさらされますので気を付けましょう。

クロスサイト・スクリプティングの危険性

クロスサイト・スクリプテインク(XSS)という、Web アプリケーションにおけ るセキュリティの問題があります。 クロスサイト・ スクリプテイ ングは英語で「Cross Site Scripting」と表記するので「CSS」と表す場合もありますが、「Cascading Style Sheets」の略記も「CSS」となり紛らわしいため、「XSS」と表記されることが一般的です。 このXSSは、たとえば、掲示板のようなWebアプリケーションでは、攻撃者は HTMLやJavaScriptを含んだ投稿を行います。 攻撃者の投稿をそのまま出力してしまうと、入力されたHTMLやJavaScriptがそのまま実行されてしまいます。 直感的に解りやすい例として、HTMLが、そのまま実行されてしまうと制作者が意図したデザインを大きく崩されてしまう危険性があります。 デザインを大きく崩されただけではセキュリティに大きな影響を及ぼすことはありませんが、本当の脅威は JavaScript を用いられた場合です。 攻撃者は主に、下記のようにXSSを用います。 まず、Cookie の値をWebブラウザから取得し、このCookie 内のセッションIDを取得したセッションハイジャックを行います。 さらに、ページをすべて置き換え、フィッシングを行います。 そして、フォームのアクション先を改ざんして、入力値を攻撃者に通知するようにするのです。

関数とは

関数とは、ひとまとまりの処理を行ってくれる機能のことです。配列の項で紹介した array や print_r は関数のひとつです。それぞれ「配列を生成したい」や「変数の中身は何?」などの要望を数文字書くだけで簡単に実現してくれるものでした。このような処理内容を自分でプログラムをして実現しようとすると、大変な作業となるのです。 PHP では、よく必要となる機能が関数として1000以上も用意されています。プログラマは関数を呼び出す時、情報を与えます。この情報を「引数 (ひきすう)」 と呼びます。 関数は引数を基に処理を行い、結果を返します。この結果を「戻り値」と呼びます。ただし、引数を必要としない関数もありますし、戻り値を返さない関数もあります。 関数は 1000 以上もあると述べましたが、すべてを覚えなければ PHP が使えないというわけではありません。 必要な時に必要な関数を調べて使えばよいのです。ただ、多くの関数を 知れば知るほど PHPプログラミングが楽しくなりますし、関数を組み合わせてより難しいアプリケーションを作成することができるようになるでしょう 。