// 最近さ、ドツボだよね。
// はまるはまる。ディープな世界だわー。

<html>
<head><title>ファイルのダウンロード</title></head>
<body>

<?php
if($_GET["download"] == "on"){
$movie = "douga/douga.wmv";

if ($fd =fopen ($movie, "r")){ $size=filesize($movie);
$fname =basename ($movie);
header("Pragma:");
header("Cache-Control:");
header("Content-type: video/x-ms-wmv");
header("Content-Disposition: attachment; filename=\"".$fname."\"");
header("Content-length: $size");
while(!feof($fd)) {
$buffer = fread($fd, 4096); print $buffer;
}
fclose ($fd);
exit;
}
}
else{

?>

?download=on">ダウンロード

<?php
}
?>

</body>
</html>

// 最初は、else{ダウンロード先のリンクを表示して、}
//if(そのリンクがクリックされたら、){ファイルをダウンロードさせる。}

//fopenは、指定したファイルを、オープンする。
//ファイルハンドル =fopen(ファイル名,"読み込み専用とか書き込みとか");
// 最後の方の、fclose (ファイルハンドル);が出てくるまで開きっぱなし。

//filesizeは、ファイルの大きさを測る。30KBとかそういうの。
//filesize(ファイル名);
//basenameは、パスとか含まれた中からファイル名を抜き出す。
//basename(ファイル名);
// ボーーッとしてると、ありえないfilenameとか打ち出す。こわいこわい。

// で、ヘッダーがくるでしょー。

//while(ここの条件がOKの間じゅうは){ここが繰り返される}
//feof(ファイルハンドル)は、ファイルポインタが終端に来たら、true。
// うーん、カーソルが最後、みたいな。最後まで読みましたよーって。

// ただし、whileでfeof使うのはやや問題があるようで、stream_get_meta_dataのがいいみたい。(と書いてある。
// whileってのは、いわゆる無限ループを引き起こしちゃう可能性があって、
// whileで、PHPからやってるってことは、権限がWWWになるはずだから、
// rootでしか見れない多分、絶対パスとかの上の方、
// /etc/password/とかを見ようとすると、ずっと終われないから、
// あかん。(と書いてある。PHPマニュアルに。

// ここでは、前にビックリ(!)がきてるから、
// ファイルポインタが終端まで来ないは、ずっと繰り返してね。ということみたい。

//で、無事ダウンロードできました。WMVファイル。
// と思ってたら・・・ひらけねー

// 「ファイルが開けません。codecがないかもしれません。
// うそーん、だって直リンで落としたら開けるじゃん

// ダウンロードしたファイルのファイルサイズは、サーバにあるのと100%一緒。
// ふざけてんじゃないの、こいつー・・・こいつぅ、きゃはは。(疲れた。

// どうしたものかと思い、サーバにあるファイルと、ローカルで落としたファイルの
//右クリック→プロパティしてみた。

// 【サーバ上のファイル】詳細のところ、いろいろあるー
// 【ローカルのファイル】詳細のところ、いろいろないー

// いろいろ・・・消滅?

// ここら辺で、「もしかしてヘッダがおかしいのかな・・・」と疑い始める。

// そういえばさ、Locationとかするときにさ、よくアレが出るじゃない。
//header already sent」もーヘッダきてるし・・・プ(by PHP。
// 順番変えてみるべ。

<?php
if($_GET["download"] == "on"){
?>

$movie = "douga/douga.wmv"; if ($fd =
fopen ($movie, "r")){
$size=filesize($movie);
$fname =basename ($movie);
header("Pragma:");
header("Cache-Control:");
header("Content-type: video/x-ms-wmv");
header("Content-Disposition: attachment; filename=\"".$fname."\"");
header("Content-length: $size");
while(!feof($fd)) {
$buffer = fread($fd, 4096);
print $buffer;
}
fclose ($fd);
exit;
}
else{

?>

<html>
<head><title>ファイルのダウンロード</title></head>
<body>
?download=on">ダウンロード
<?php
}
?>
</body>
</html>

//よっしゃああああ!!
// 【教訓】ヘッダーが来るものは先にやれ
【悩みのソースの流れ】

$today = "12";

if(date("d") == $today){
echo '今日だよ!';
}
$today--;
elseif(date("d") == $today){
echo '前日だよ';
}


// やりたいことはいたって単純なのよ。
// $todayに入ってきた数字が、今日と一緒なのか、前の日なのかって。
// でも出てくるのは「parse error」ばかりなり・・・。

// 単純な流れすぎて、ドコが間違っているのか頭を抱えた。
// トイレに何度も立った。(逃避・・・?
// 一行ずつ潰すことにした。すると、



}
$today--;
elseif(date("d") == $today){



// このくだりが怪しいらしいことが判明。

// ・・・ん?
// ちょっと待てよ。
// この $today--; 使うの辞めて、別の変数にしてみたらどうだろう。



}
$exday = $today -1;
elseif(date("d") == $exday){



// 「parse error」!!!!
// どうしてくれようか、このぅ・・・。

// あれ、でもこれってさ、順番変えても動くんじゃないの?



$today = "12";
$exday = $today -1;

if(date("d") == $today){
echo '今日だよ!';
}
elseif(date("d") == $exday){
echo '前日だよ';
}

【結果】
今日だよ!


// ぃやったぁぁぁーーーーーー!!!!

【理由】
// if{} ここに処理はさむんじゃねーよ! elseif{}
// はぁぁ、わかっちゃえばなんてこたなかった。
// でも解決してよかったー。(ニッコリ
本読んでたらこれすっげーぞ、と。

近いうちにLINUXサーバ立てます。
bashってのがシェルスクリプトの内の一つの流派ってのが
わかったのだけでも今日は大収穫だ。

サーバ作るのは初めてなので、なるべく実況するようにします。

もし自分の記事がgoogleとかのリソースになってくれて、
なんかの単語と単語の検索で自分のつまづいた所とかが
引っかかってくれて、同じところで悩んでる技術者の
人の役に少しでも立ってくれればと思っているので。

昔、とほほのWWW入門ってサイトにラウンジっていう掲示板みたいのが
あったんだけど、最後は荒れてて閉じちゃったけど、
あそこはとてもよかった。

ああいう雰囲気は今の時代には無理だろうから、
どうにかして検索上のリソースは増やして、
取り組んだばかりの人の役に立つ必要があると思う。

誰だって初めてがあったはずなのにね。
過去ログ見ろの一点張りってのもさ、よくないと思うよ。
僕はここでこういう流れでこれを身に着けたから、
こういうのはどう?とかさ。

説教くさくなってしまってすみません。
// アクセス解析でもしてみっかね。
// どうしようかな。
// なんでもいいんだけど、集めてみる。(←なにをよ

// 1 タブ .+MacOS.+\n
// 2 タブ .+MSIE6.0.+\n
// アクセス数 タブ ユーザのブラウザ情報、ということにする。
// どこまでも使えないログの超設定。

$LogNoNakami = file(accesslog.txt);

for($i=0; $i<count($LogNoNakami); $i++){
if(preg_match("/.+Mac.+/",$LogNoNakami[$i])){
$MatomeHairetu[Mac] += 1;
}
elseif(preg_match("/.+MSIE.+/",$LogNoNakami[$i])){
$MatomeHairetu[IE] += 1;
}
else{
$MatomeHairetu[Hoka] += 1;
}
}

// ねー、これさ、タブ区切りにした意味なくない?
// すばらしき超設定!

// if、、、もし、その行にMacがあれば、カウントアップ。
// elseif、さらにもし、その行にMSIEがあれば、カウントアップ。
// else、、他は、わからんちゅーことで、まとめてカウントアップ。

// .+は、正規表現で、.(なんでもいいから一文字)が、
// +(1回以上)出てくるって意味ね。
// 似たので、.*もあるけど、*(0回以上)ってことだから、
// 文字がなんもなくても引っかかる。
// なんか文字がどうしても必要なら、+だろうね。

// +=は、左のに、右のを足すって感じ。
// $MatomeHairetu[YOUSU]++;と一緒かな。
// まとめるにはどうすべと。

foreach($MatomeHairetu as $OSnoNamae => $Count){
echo $OSnoNamae . ":" . $Count . "<br>";
}

// $OsnoNamaeには、さっきのMacとか、IEとか入る。
// で、$Countに、さっき、+=1;でどんどん足してったやつが入るのね。
// 大きなテーブルになると、一行ごとに色を変えないと
// なんだかよくわからなくなっちゃう。
// だから変えてみようかなーっと。

for($i=0;$i<count($TABLEHAIRETU); $i++){
($i%2 == true)?$BGCOLOR="#FFFFCC"
: $BGCOLOR="A9A9A9";
echo "<tr bgcolor=$BGCOLOR><td></td></tr>";
}

// $i%2は、行の要素数を2で割ったときに、余りが出るかどうか。
// ?のやつは、三項演算子。


// ( 中途半端に時系列ごちゃごちゃー
// 普通の配列、forかなんかで回すか、
// perlの、普通の@HAIRETU[$i]とおんなじ。

for($i=0,$i<2,$i++){
$YOUSONOKAZU = $i;
($YOUSONOKAZU == "0")?$ICHIJIGEN[$YOUSONOKAZU] = "あいうえお"
:$ICHIJIGEN[$YOUSONOKAZU] = "かきくけこ"
}

// ?:のやつは、三項演算子
// 最初見たとき、知らなくて、正規表現かなんかかと思ってて、
// 「ハァ?何、()内の条件、繰り返してんの?」
// と、ピュアに思ってたのはヒミツだよ。

// 上のは、これと一緒ね。
for($i=0,$i<2,$i++){
$YOUSONOKAZU = $i;
if($YOUSONOKAZU == "0"){
$ICHIJIGEN[$YOUSONOKAZU] = "あいうえお";
}
else{
$ICHIJIGEN[$YOUSONOKAZU] = "かきくけこ";
}
}

// array_pushでお尻にどんどん付け足すとか。
$ICHIJIGEN = array("あいうえお");
array_push($ICHIJIGEN,"かきくけこ");

// 配列を作らない状態で、array_pushに、$ICHIJIGEN入れちゃうと
// 「配列か、変数かわっかんねー、$なんちゃら入れて来んじゃねー!」
// と、普段はさんざんあいまいな定義でもそれなりに動く割りに、
// 意外と、ひどい言われ様(エラー)をされる。。。かも。
// もちろんウソだよ!
// なんで、置換するのが3つもあるのさ。 //
// そぼくに思ってたら、こーゆーことみたい

// 正規表現なんていらんもんね。正規表現いらんときは、これが早いき、使ってー。
$CHIKANGO = str_replace("ココ置換前入れてね","置換後",$CHIKANMAE);

// 元perl大好き人間の真価が試されるときがきた!
// 「/」スラッシュで囲む・・・なつかしくてうれし涙が出る。ぐすん。
$CHIKANGO = preg_replace("/ココ置換前入れてね/","置換後",$CHIKANMAE);

// PHPでも、posix正規表現使えるよーん。
$CHIKANGO = ereg_replace("ココ置換前入れてね","置換後",$CHIKANMAE);


// split系も3種類もあんのね。 //

// 最初に結論をさ、まとめて3つありますよって
// 言ってくんないと、なんか、や

// 正規表現なんていらんもんね。正規表現いらんときは、これが早いらしい。
list($BUTTAGIRI1,$BUTTAGIRI2) = explode("でりみた",$BUNKATUSITAI);

// ほら、やっぱりあれじゃない、タブ区切りとか、ありがちじゃない。
list($BUTTAGIRI1,$BUTTAGIRI2) = preg_split("/\t/",$BUNKATUSITAI);

// そして、PHPは、第三の刺客も用意していたのであった。
// preg系は、perlね。一個前のやつ。これはPHP系。
list($BUTTAGIRI1,$BUTTAGIRI2) = split("目印!",$BUNKATUSITAI);

// どーでもいいけど、今、とっても、$ONAKAITAI・・・

// 左側は、listで変数にそれぞれいれてもいいし、
// $BUTTAGIRIHAIRETUで、配列にいれて、
// $BUTTAGIRIHAIRETU[0]とかも使えるみたい。

// それにしてもPHPばっかり話題にしてると・・・アレだよね・・・

/* 看板に偽りアリ!なわけでして。*/

// perlから、CとC++な日記、・・・PHPもお送りしております。
// イタシマース。ドンッ(タラチャン
// いまのタイムスタンプ!
$IMANOTIMESTAMP = time();

// なんか昔のタイムスタンプから、日付とか。
date("Y年m月d分 H時i分s秒・・・秒ってでもあんまり使わない",$MUKASINOTIMESTAMP);

// 昔とか未来の日付から、その秒のタイムスタンプ。
// わかんないところは、「0」いれればいいみたい。
// でもー、日にちのところに「0」入れるとー
// その月の最後の日のタイムスタンプゲットになるからー
// 要注意ー。だるー。

$GETTIMESTAMP = mkdate(時,分,秒,月,日,年)

ex) 今日のいいとも!は、果たして1970年から何秒かと。
$IITOMO_TIMESTAMP = mkdate(12,0,0,3,2,2005)
// すなおにprint文
print $HENSUMEI;


// でも、echo文ってのもあるらしい。短いしこっちでいいや。
echo $HENSUMEI;
// 「えちょ」とココロの中で読んでます。
// 「えちょ、どる、、、えーーっと、変数名なんだったっけ?」
// ・・・
// そして、グワーーーーッと、前に戻る。


// echo""; echo""; echo""; echo""; echo""; って書いてたらバカらしくなった。
// ヒアドキュメントもあるみたい。
echo >>>EOF
ここに書くのだーーー!
変数も使えるよ。
EOF;
// >が、>>>みたく2回じゃないとか、
// 最後の[A-Z][A-Z][A-Z]の後ろに、「;」忘れてよくエラーが!


// 一番びっくりして、すっげー便利ーって思ったのがさ、これ。
<?php
$ITAITASHI-HENSU = "ねこパンチ";
$ITE-YONAHENSU = "たらーり";
?>

<?=$ITAITASHI-HENSUI?>をくらう。<br>
足から、血が<?=$ITE-YONAHENSU?>・・・。<br>
もー、んとね、ほんとに、いたかったんだから!
PHPとか初めてやってみたので、
すっごいつまんないことで悩んだり、
こんなん簡単じゃん!ってどうでもいい事で感動したりします。
そんな感動の嵐のめもが追加されました。