カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

外部サーバーのファイル有無を調べる

PHPにはファイルの有無を調べるfile_existsという便利な関数がありますが、
外部サーバーのファイルを確認することはできません。

そこで、HTTPヘッダーを取得し、ステータスコードからファイルの有無を確認してみましょう。

まずはHTTPヘッダーを取得。

$response = get_headers([任意のURL]);

取得したヘッダーからステータスコードを抜き出す。
ステータスコードは配列で返ってきたヘッダーの先頭にあるので、$response[0]の中から数字3桁をpreg_matchを使って抜き出します。

preg_match("/.*(\d{3}).*/", $response[0], $matches);

HTTPステータスコードを数値に変換。

$response_code = intval($matches[1]);

ステータスコードが200であればファイルが存在する、ということになります。


関数を作ると次のような感じになります。

function myFileExists($str_path)
{
    // HTTPヘッダーを取得
    $response = get_headers($str_path);

    // HTTPステータスコードを抜き出す
    if(preg_match("/.*(\d{3}).*/", $response[0], $matches)) {

        // HTTPステータスコードを取得
        $response_code = intval($matches[1]);

        if($response_code == 200) {

            return true;

        } else {

            return false;

        }

    } else {

        return false;

    }
}
1,848 views

ブラウザの戻るでもフォームの値を保持する

HTMLでフォームを設置したとき、フォームに内容を入力し、内容確認などするようにしたところ、
ブラウザの戻るで入力画面に戻ると入力していた内容がクリアされてしまう、ということがあるかと思います。

ユーザービリティを考慮すると、入力した内容は残っていたほうがよい。
そこで以下のような方法があります。

PHPのセッションを使用している場合、session_start関数の前にsession_cache_limiter関数を実行します。
特にPHPのセッションを使っている場合はキャッシュが無効になっているようです。

session_cache_limiter("private_no_expire");
session_start();

キャッシュ指定をヘッダー出力

header("Cache-Control: Private\n");
10,072 views