かんたん作成【HTML CSS JavaScript PHP CGI Perl Ruby Python .htaccess】

トラックバック受信

<?php

//================================================ 設定
$FILE        = './dat/traba.dat';    // トラックバック保存ファイル
$FILEMAX    = 50;            // 保存件数
$TEXTMAX    = 300;            // 文字数制限(全角)

//================================================ 関数
function readLog($FILE){
    $log = array();
    if(!($file = fopen($FILE, "r"))) {
        return;
    }
    flock($file, LOCK_SH);
    for($i = 0 ; !feof($file) ; $i++) {
        $log[$i] = rtrim(fgets($file), "\n");
    }
    flock($file, LOCK_UN);
    fclose($file);
    if($log[count($log) - 1] === "") {
        array_pop($log);
    }
    return $log;
}
function writeLog($FILE, $log, $filemax, $textmax) {
    return("Error");    //サンプルにつき受信停止
    if(!($_POST["blog_name"] and $_POST["title"] and $_POST["url"] and $_POST["excerpt"])) {
        return("Error");
    }
    foreach($_POST as $key => $value) {
        $_POST[$key] = mb_convert_encoding($_POST[$key], "Shift_JIS", "auto");
        $_POST[$key] = preg_replace("/</", "&lt;", $_POST[$key]);
        $_POST[$key] = preg_replace("/>/", "$gt;", $_POST[$key]);
        $_POST[$key] = preg_replace("/\s*\x0D\x0A\s*/", " ", $_POST[$key]);
        $_POST[$key] = preg_replace("/\s+/", " ", $_POST[$key]);
        if(strlen($_POST[$key]) > $textmax * 2) {
            $_POST[$key] = substr($_POST[$key], 0, $textmax * 2);
            $_POST[$key] .= "...";
        }
    } 
    $tm = date("U");
    $data = join("\t", array($tm, $_POST['blog_name'], $_POST['title'], $_POST['url'], $_POST['excerpt'], ""));
    array_unshift($log, $data);
    while(count($log) > $filemax) {
        array_pop($log);
    }
    if(!($file = fopen($FILE, "w"))) {
        return;
    }
    flock($file, LOCK_EX);
    fputs($file, join("\n", $log));
    flock($file, LOCK_UN);
    fclose($file);
    return;
}
function printLog($log) {
    for($i = 0 ; $i < count($log) ; $i++) {
        list($tm, $name, $title, $url, $excerpt) = explode("\t", $log[$i]);
        $tm = getdate($tm);
        $tm = sprintf("%02d月%02d日%02d時%02d分", $tm[mon], $tm[mday], $tm[hours], $tm[minutes]);
        echo "<p style=\"margin:5px;padding:3px;border:1px solid #333\">";
        echo "【 $tm 】 $name<br>";
        echo "<a href=\"$url\">$title</a><br>";
        echo "$excerpt<br>";
        echo "</p>\n";
    }
}
function printRes($msg) {
    header("Content-Type: text/xml;charset=UTF-8");
    echo '<?xml version="1.0" encoding="UTF-8"?>';
    echo '<response>';
    if($msg) {
        echo '<error>1</error>';
        echo '<message>Error</message>';
    }
    else {
        echo '<error>0</error>';
    }
    echo '</response>';
}

//================================================ メインプログラム
$log = readLog($FILE);
if($_SERVER["REQUEST_METHOD"] === "POST") {
    printRes(writeLog($FILE, $log, $FILEMAX, $TEXTMAX));
}
else {
    echo '
        <html>
        <head>
        <title>トラックバック受信</title>
        </head>
        <body>
        <h1>トラックバック受信</h1>
        トラックバック送信先 https://', $_SERVER['HTTP_HOST'], $_SERVER['SCRIPT_NAME'], '<br>
    ';
    printLog($log);
    echo '
        </body>
        </html>
    ';
}

?>
PHP
Hello world ! ユーザーエージェント取得・表示($_SERVER["HTTP_USER_AGENT"])
IPアドレス取得・表示($_SERVER["REMOTE_ADDR"]) リンク元取得・表示($_SERVER["HTTP_REFERER"])
URL取得・表示($_SERVER["HTTP_HOST"], $_SERVER["REQUEST_URI"]) 環境変数一覧表($_SERVER, list, each)
ホスト名取得・表示(gethostbyaddr, $_SERVER["REMOTE_ADDR"]) 日付を表示(getdate)
時間を表示(getdate, hours, minutes,) getdate()関数取得可能情報一覧表(list, each)
日時を表示(出力形式を指定, date) date()関数出力形式一覧表
指定の日までの日数(mktime) 時刻によって挨拶文を変える
曜日によって背景色を変える 日によって背景色を変える
月によって背景色を変える 時間によって背景画像を変える
文字サイズ・背景色選択 見るたびに背景色を変える(mt_rand)
おみくじ(array_rand) 文字列置き換え(str_replace)
パスワード認証 カラーチャート
グラフ(棒グラフ) アクセスカウンター
アクセスカウンター(画像) アクセスカウンター(今日・昨日)
訪問回数(クッキー, $HTTP_COOKIE_VARS, setcookie) クッションページ($_SERVER["QUERY_STRING"])
クッションページ($_SERVER["PATH_INFO"]) カレンダー
カレンダー(今年1月〜12月) カレンダー(今年1月〜12月, 前年次年リンク付)
掲示板 ディレクトリ内ファイル一覧表示
Webデータ取得(HTMLソース取得, file_get_contents) トラックバック受信
トラックバック送信(POST, file_get_contents) メール送信(メールフォーム, mb_send_mail)
リダイレクト(header, Location) 条件指定リダイレクト(header, Location)
言語振り分けリダイレクト(header, Location) 条件指定アクセス拒否(ステータスコードを返す)
HTMLファイル読み込み・表示(include) 外部PHPファイル読み込み(include)
HTMLファイル読み込み・パスワード認証 HTMLファイル読み込み・条件指定アクセス拒否
HTMLファイル読み込み・条件指定リダイレクト 画像ファイル読み込み・表示(ImageCreateFromJPEG)
画像ファイル読み込み・文字埋め込み・表示(ImageString) 画像ファイル読み込み・文字埋め込み・保存(ImageString)
画像ファイル読み込み・サイズ変更・表示(ImageCopyResampled) 画像ファイル読み込み・サイズ変更・保存(ImageCopyResampled)
画像ファイル読み込み・切り出し・表示 画像ファイル読み込み・切り出し・保存
画像合成・表示(ImageCopy) 画像合成・保存(ImageCopy)
画像生成・表示(ImageCreate) 画像生成・保存(ImageCreate)
画像合成アクセスカウンター
かんたん作成【HTML CSS JavaScript PHP CGI Perl Ruby Python .htaccess】