【jQuery】短いページだけフッターを最下部に固定する

ページのコンテンツが少ないなど、フッターを含めたページの縦幅がブラウザの縦幅より短い場合があると思います。
そのようなページでフッターをそのままコンテンツにつなげると、フッターの下にさらに余白ができてしまい、なんだかカッコ悪いですよね。
かといって、position: fixed で常にフッターを固定すると、今度は長いページでもフッターが常に残ってしまいます。

そこで、ページの縦幅がブラウザの縦幅より短い場合だけ
position: fixed を指定してみます。

まずはページサイズとブラウザサイズを取得

両者を比較して、ページサイズが短い場合にpositionをfixedにします。

注意すべき点して、
上記の処理は基本的にページロードの最後に呼べばよいのですが、
動的にコンテンツが増えたり減ったりするページの場合は
その都度、上記の処理を呼ぶ必要があります。

【PHP】【MySQL】日付の書式の違い

PHPとMySQLで日付の書式が若干違っています。
どちらかしか使わないと決めているならいいのですが、
日付の整形をPHPでやるか、MySQLでやるいか、ケースバイケースなんですよね。

PHPは

使い方は

MySQLは

使い方は

【MySQL】PHPのstrposをSQLでやる

MySQLのLOCATE関数でPHPのstrpos関数と同様のことができます。

このSQLの答えは5が返ってきます。

PHPのstrposと異なるのは、
1文字目がヒットした場合は0ではなく1を返します。
存在しなかった場合は0が返ってきます。

私がよく使うパターンとしては
データの中にキーワードが含まれるかどうかの判定ですね。

【PHP】Last-Modifiedヘッダによる静的コンテンツのキャッシュ制御

画像などの静的コンテンツのファイルに直接アクセスした場合は
ブラウザが自動的にキャッシュ制御を行ってくれますが、
PHPで静的コンテンツを返すような処理を行っている場合にキャッシュを利用するには
Last-Modifiedヘッダを使ってキャッシュを制御する必要があります。

まず、PHPでファイルをダウンロードさせる際に
filemtime関数でファイルの更新日時を取得してLast-Modifiedヘッダを追加します。

さらにキャッシュを残すためのヘッダも追加します。

そうすると、次に同じファイルをダウンロードしようとした際のリクエストヘッダの中に

というヘッダが追加され、ファイルの更新日時が入っています。

ですので、このヘッダの有無を調べ、ファイルの更新日時と比較することで
ファイルを返すかキャッシュを返すかを判定します。

レスポンスコード304を返す処理は下記の通りです。

ちなみに、Etagというヘッダを使ってキャッシュを制御することもできますが
Etagはどちらかというと動的コンテンツのキャッシュで利用するためのものです。
静的コンテンツのキャッシュにもEtagを使ったサンプルが多くみられるのですが
Last-Modifiedヘッダだけで十分だと思います。