カテゴリー
SugiBlog ホームページ制作・システム開発|大阪

年齢を自動的に表示する – PHP

プログラムで常に現在の年齢を表示するには

<?php
    print "age:".floor((date("Ymd") - "19940619") / 10000);
?>

結果

age:18
1,107 views

PHP メモリーエラー

PHPでファイルを扱う中で、以下のようなエラーが発生することがあります。

Fatal error: Allowed memory size of xxx bytes exhausted (tried to allocate xxx bytes) in ...

ファイルの容量が大き過ぎて、PHPに割り当てられているメモリーの範囲を超えてしまっているのです。

php.iniに以下のような行がありますので、この値を変更してあげます。
デフォルトは8Mです。

memory_limit = 8M   ; Maximum amount of memory a script may consume (8MB)

おすすめはしませんが、-1とすると上限なしに設定できるようです。
変更したらapacheを再起動させてください。

php.iniが触れない場合や、基本的な上限は変えたくないときは一時的に変更します。

init_set("memory_limit", "16M");

もしくは.htaccessでも可能です。

php_value memory_limit 16M

以下の記事も参考にしてください
[ファイルアップロードの最大サイズを変更]

971 views

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

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

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

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

session_cache_limiter("private_no_expire");
session_start();

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

header("Cache-Control: Private\n");
6,971 views

getimagesize

$data = getimagesize($filename);
$data[0] = 幅
$data[1] = 高さ
$data[2] = 画像種類(gif:1,jpg:2)
$data[3] = 高さ="" 幅=""
$data["bits"] = ビット/ピクセル
$data["channels"] = チャンネル
$data["mime"] = MIMEタイプ
657 views

ファイルアップロードの最大サイズを変更

フォームよりアップロードできるファイルの最大容量を変更したいとき、
php.iniで以下の設定を変更します。

1つのファイルアップロードに許可される最大サイズ
デフォルト:2M

upload_max_filesize = 2M

POST送信できる最大サイズ
デフォルト:8M

post_max_size = 8M

変更した後はapacheを再起動しましょう。


2017.10.10 追記

.htaccessファイルで設定することも可能です。

メモリ使用量の制限
デフォルトは現在128M

php_value memory_limit 128M

タイムアウト秒数
デフォルト:20
※「0」にすると無制限

php_value max_execution_time 0

1回の送信で送れるファイルの個数
※こちらについてはphp.iniでないと設定できません。

max_file_uploads = 150
632 views

PHP ファイルアップロードのエラー

ファイルアップロードのエラーについてまとめました。

フォームのサンプル

<form method="post" action="my.php" enctype="multipart/form-data">
    <input type="file" name="upfile" size="50"><br>
    <input name="submit" type="submit" value="アップロード">
</form>

PHPのサンプル

if ($_FILES["upfile"]["error"] == UPLOAD_ERR_OK)
{
    //アップロード成功
}
else
{
    //エラー発生
}

・エラーコードについて

UPLOAD_ERR_OK
値:0
エラーなし。ファイルアップロード成功。
続きを読む…»

2,307 views

添付ファイル付メール送信

複数の画像を添付してメールを送信するフォームを作ったので参考に載せておきます。
要所のみで省略している部分もあります。
ここでは添付できるファイル数を5つで作成しています。

<form action="./confirm.php" method="post" enctype="multipart/form-data">
    <input type="file" size="30" name="upfile1" /><br />
    <input type="file" size="30" name="upfile2" /><br />
    <input type="file" size="30" name="upfile3" /><br />
    <input type="file" size="30" name="upfile4" /><br />
    <input type="file" size="30" name="upfile5" /><br />
    <input type="submit" name="submit" value="内容確認" />
    <input type="reset" value="リセット" />
</form>
<?php
// 共通初期設定
//{
    // 拡張子制限(0=しない・1=する)
    $ext_denied = 1;
    // 許可する拡張子リスト
    $ext_allow1 = "jpg";
    $ext_allow2 = "jpeg";
    $ext_allow3 = "gif";
    // 配列に格納しておく
    $EXT_ALLOWS = array($ext_allow1, $ext_allow2, $ext_allow3);

    // アップロード容量制限(0=しない・1=する)
    $maxmemory = 1;
    // 最大容量(KB)
    $max = 3000;
//}
?>

続きを読む…»

8,228 views

mb_substr

mb_substr関数を使うときは文字コードを指定しよう。

例)指定せずに実行
$string = "mb_substr関数を使うときは文字コードを指定しよう。";
mb_substr($string, 0, 10);

続きを読む…»

689 views

配列を操作する便利な関数

●range
範囲を指定して、まとめて配列を作成
例)range(0, 9999); range("a", "z");

●array_merge
複数の配列を結合
例)$ARRAY = array_merge($ARRAY1, $ARRAY2, $ARRAY3);

546 views

apache_note [PHP]

Apacheのログに好きな情報を出力させる。

例)

$val = "hogehoge";
apache_note("originallog", $val);

Apache httpd.confにログフォーマット設定
LogFormat "%h %l %u %t \"%r\" %>s %b %{originallog}n" common

出力結果
192.168.212.51 - - [20/Jul/2005:21:39:03 +0900] "GET /index.php HTTP/1.1" 200 735 hogehoge
1,139 views