PHPマスター

プログラム言語の勉強はPHPからスタート!

Browsing Posts tagged foreach

PHPを勉強している人はSELECT文も勉強しなければと思っているはず。まずは、簡単にID(lid)の降順で10個取得して表示するサンプルです。

<?php

$server = "localhost";
$mydb = "データベース名";
$usr = "ユーザ";
$pass = "パスワード";
$query = "select * from テーブル名 order by lid DESC LIMIT 0,10";

$link = mysql_connect($server, $usr, $pass);
if(!$link) { exit('can not connected database.'); }
$db = mysql_select_db($mydb, $link);
if(!$db) { exit('can not selected table.'); }
$result = mysql_query($query);

while($row = mysql_fetch_assoc($result)) {
        $arr[] = $row;
}

// print_r($arr);

mysql_free_result($result);
mysql_close($link);

foreach($arr as $i => $item){
  echo '<div class="item">'.
        '<a href="/modules/myalbum/photo.php?lid='. $item['lid'].
        ' alt=""><img src="/uploads/thumbs/'. $item['lid'].
        '.'. $item['ext'].'" alt="img" /></a>'.
        '</div>';
}
?>

Jqueryでも簡単にできますが、PHPでもURLを指定し、その内容を取得することができます。そのURLがXML形式で書かれている場合(RSS)など、他人のブログの情報を取得し好きに加工して表示することも可能です。速報サイト、まとめサイト、アンテナサイトを構築する基礎となるでしょう。

PHPの場合、ファイル(書かれている文字情報)を取得する関数およびXML形式を配列に変換する関数が用意されています。

<?php
$url = 'http://onep.jp/wp/feed';
$req = file_get_contents($url);
$arr = simplexml_load_string($req);
foreach ($arr->channel->item as $value){
  echo $value->title;
}
?>

continue reading…

管理システムを作ろうとするとどうしてもアクセス制限をする必要があります。ApacheのソースIP制限が最も有効ですが、ユーザ登録をした人に対してログインさせる場合はそうもいきません。また、パスワードは万一流出しても暗号化しておく事も重要です。

今回のソースは、Crypt関数で暗号化されたパスワードで認証することとします。これで、UNIX系のサーバであれば「htpasswd」コマンドで作成したファイルがそのまま利用できます。

Crypt関数認証を行う場合、次のようにパスワードが合っているか確かめます。

if(ファイルに保存された暗号化パスワード == crypt(入力されたパスワード,
   ファイルに保存された暗号化パスワード))

continue reading…

いよいよ簡易版とはいえ、一つのアプリケーションを構築してみましょう!PHPによる時間の取得、ファイルへの書込、ファイルからの読み込み、データの加工など被とおりの要素が詰まったものが掲示板です。

まず、知っておきたい便利コマンドを列記します。
1. POSTでデータを送った後、ブラウザの再読込をしてもデータが書かれない方法
PHP header()関数
2. CSVのルールに従ってファイルへ書く、ファイルに書かれたデータを配列に格納する
PHP fgetcsv()関数、fputcsv()関数
※PHP4の場合、fputcsv関数がありませんので事前に準備する必要があります。(ダウンロードして、fputcsv_php4.phpに名前を変更して下さい)

また、掲示板ということでプログラマーとして絶対に気を付けるべき事は次の2つです。

  • 悪意のあるコードを書かれても向こうにする XSS対応
  • 書き込まれたファイルをブラウザからアクセスされない処置 情報漏洩対策

※情報漏洩は掲示板であれば基本、問題視されません。書かれた内容は全て公開するシステムが掲示板なのですから。よって、今回は何もしていませんが、ディレクトリを分けて、いつでも .htaccess で制御できるようにしています。

今回は文字コードを全てUTF-8で統一しました。UTF-8で統一するための .htaccess の記述はこんな感じです。

php_value default_charset UTF-8
php_value mbstring.language Japanese
php_value mbstring.internal_encoding UTF-8
php_flag mbstring.encoding_translation OFF
php_value mbstring.http_input auto
php_value mbstring.http_output pass
php_flag magic_quotes_runtime Off
php_flag magic_quotes_gpc Off

最期に、PHPで吐き出すHTML構文は、id や class を付けてCSSで体裁とを整えるようにしておきましょう。

continue reading…

スクリプトの中で、同じ処理を繰り返す「ループ」は単独で利用されたり、「条件分岐」と併用して利用されることもあります。ループはPHPスクリプト中で、非常に多く利用される「制御構文」の1つです。

例えば日曜日から土曜日までを表示させる場合、print文やecho文を7つ書いても良いのですが、カッコイイプログラムにしたいのであれば、事前に用意した曜日の配列を用意して、その配列をループさせ、順に表示させてしまいましょう!、という時に使います。ループにより、プログラム自体をスッキリさせることができます。

ループ ~ 繰り返し処理

PHPでは、ループを構成する4種類の制御構文が用意されています。4つあるとどれを利用すべきか迷うかもしれませんが、この場合はコレ!という明確な用途はありません。どんなスクリプト言語でも同じで、判断にはある程度の慣れが必要です。

while構文
ループを制御する最もシンプルな構文が「while」です。whileは、その繰り返しのコードを実行する前に条件式を評価し、その式が満たされればループを抜けます。同時に、その式が最初から満たさなければ、ループを実行することがありません。
以下は、while構文の基本的な形です。
  while (式) {
     処理スクリプト
 }
while構文は、if構文に似ており、式を評価してから、中カッコ[ ~ ] のブロックを実行します。言い換えれば、式にある条件を満たすことができなければ、ループを実行させることができません。
<?php
    $a = 0;
    $hai = array("HTML","XHTML","XML","JavaScript","PHP");
      while($a < 4) {
        print($hai[$a]). "\n";
        $a++;
      }
?>
この while構文の条件式は、変数$a の値が4を超えたときにループから抜けるように設定されています。このスクリプトでは配列で定義された5つのインデックスのうち、4つまでを Webブラウザに出力しています。

実際には次のような処理がされています。

  1. 1回目のループ: $a は 0 だから処理をする。処理結果 $hai[0]を表示する。$aの値を1増やす。
  2. 2回目のループ: $a は 1 だから処理をする。処理結果 $hai[1]を表示する。$aの値を1増やす。
  3. 3回目のループ: $a は 2 だから処理をする。処理結果 $hai[2]を表示する。$aの値を1増やす。
  4. 4回目のループ: $a は 3だから処理をする。処理結果 $hai[3]を表示する。$aの値を1増やす。
  5. 5回目のループ: $a は 4だから処理をせず、ループを抜ける

continue reading…

Powered by WordPress Web Design by SRS Solutions © 2018 PHPマスター Design by SRS Solutions