Author: admin

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

プログラムとは人間がコンピューターに伝えたい事を解釈してくれる手段なのだそうです。さて、では、プログラミングはどのような流れで行われるものなのでしょうか?プログラミングを行う際にまず大切になってくるのがアルゴリズムだそうです。意味は問題の解法だそうです。アルゴリズムとは人間が解決させたいと思っている問題に対して、その問題をどのようにして解決するかというものなのだそうです。問題と聞くと何やらとても難しいものを指すように感じてしまうかもしれませんが、実際にはそんなことは無いようです。例えば、ブログなどのプログラムを書くとしましょう。「ブログの投稿に記事が追加された時はデータベースに保存を行いたい。」という問題が出てきたとします。この問題を実際にどのような手順で、どのように処理を行い問題になっていたものを達成するのかがアルゴリズムにあたるのだそうです。アルゴリズムを考えてから実際にプログラミングを書いていくそうです。この時プログラミングはプログラミング言語に定義されているプログラミング言語の文法で書いていくのです。そうして記入されたプログラムのことをソースコードと呼ぶそうです。コンピューターにプログラミングで「このような手順(アルゴリズム)でこうして欲しい」とソースコードを入力し実行すれば、伝えた手順通りに動いてくれるはずです。このソースコードは英語に近い文で出来ているため人間でも読みやすいそうです。さて、このソースコードをコンピューターが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プログラミングが楽しくなりますし、関数を組み合わせてより難しいアプリケーションを作成することができるようになるでしょう 。

はじめてのPHP

PHPとはプログラミング言語のひとつです。 プログラミング言語?何やら冒頭からいきなり難解な用語がでてきましたが心配ありません。 簡単に言ってしまいますと、コンピュータに何かを実行してもらうためにはプログラムというものを書いて 実行しないとコンピュータは何もしません。 さらにコンピュータが理解できるのは0と1だけです。0とは電気で言うとOFFの状態、1はONの状態です。 ですので、コンピュータに何かを実行してもらうためには0110101のように0と1のように実行内容を 書き込んだものをコンピュータが読み取りることにより初めて実行されます。 かなり昔には、0と1を書いてコンピュータに実行させていた時代もありましたが、これでは人間が1と0を1文字も 間違えなく書くことが大変困難です。では現代ではコンピュータは0と1以外を理解できるようになったのでしょうか? いいえ。今も昔もコンピュータは0と1しかわかりません。 そこで登場したのがプログラミング言語です。言語というと難解なイメージがありますが、簡単に言うと、「0と1だけ 書くというように人間にとってわかりにくいのではなく、何とか人間が読んだり、書いたりできる言葉のようなもの」です。 時代の移り変わりにより、新しくいろいろな種類のプログラミング言語が登場しました。現在ではインターネットが ありますが、インターネットが登場する前からコンピュータはありました。その時代、時代で、0と1だけを書くよりは 人間が読んでわかる、「コンピュータと人間の中立ちをするもの」であるプログラミング言語が登場しました。 そんな時代の流れの中でインターネットが登場し、インターネットを利用したプログラムを実行させるために使いやすい 言語がいくつも登場しました、そんな中の一つの言語がPHPです。

パターン検索の結果を部分的に置換する

パターンで検索された結果を部分に分けて、それを置換後に残すこともできます。例をあげると「123-4567Jのような7桁の番号から、ハイフン(-)を取り除くことを考えてみましょう。このような場合、「3桁の数字の後にハイフンが続き、その後に4桁の数字が続く」というパターンを検索して、f3桁の数字」と「4桁の数字」は残し、ハイフンを削除する(空文字列に置換する)とうまくいきます。パターンを部分に分けるには、ereg関数の場合と同様に括弧を使用します。また、置換する文字列を指定する際には、「¥¥1」「¥¥2」などの記号を使用すると、パターン内の各部分をそのまま残すことができます。最初に括弧で囲んだ部位が「¥¥1」に対応し、その次に括弧で囲んだ部位が「¥¥2」に・・・というように対応します。たとえば、i$newstr=ereg_replace(“([0・9]{3))・([0・9]{4))ヘ”¥¥1¥¥2″,$str);という文を実行したときのことを考えてみましょう。最初に、変数$strの文字列の中から、「3桁の数字」「ハイフン」「4桁の数字」と続くパターンが検索されます。置換する文字列の「¥¥1」は、パターンの中で最初に括弧で囲んだ「3桁の数字」の部位に対応します。そして、「¥¥2」は次に括弧で囲んだ「4桁の数字」に対応します。したがって「¥¥1¥¥2」は、見つかった文字列の中から「3桁の数字」と「4桁の数字」を取り出したものを表します。つまり、この文を実行すると、$strの文字列の中に「123-4567」のような番号があった場合、そこからハイフンが取り除かれた文字列が返され、それが$newstrに代入されることになるのです。

サンプルコードの大まかな流れ

サンプルコードも、だんだんと長くなってきました。腰も引けてしまうかもしれませんが、同じようなチェックの繰り返しがほとんどで、しくみ自体は大したものではありません。コード全体のルールとして、以下の点だけを理解したうえで、個々のコードを見ていくことにしましょう。 ます、それぞれのチ工ツクで発生した工ラーメッセージを保存するための配列$errorsを用意します。空の配列は、array関数に引数を渡さないことで作成できます。あとは 、それぞれのifブロックで入力値を判定して、工ラーが検出された場合にはエラーメッセージを配列$errorsに追加します。配列の末尾に新しいデータを追加するには、空のブラケット([ ])で $愛数名[ ] = 値 ; のように表すのでしたね。 すべてのチ工ツクが終わったら、工ラーメッセージを表示します。エラーの有無は、配列$errorsの個数(count($errors))がOより大きいかどうかで判定しています。配列$errorsの内容は改行(<br/>)区切りで連結したうえで、die関数で表示します。die関数は指定された文字列を表示したあと、スクリフトを強制的に終了します。