ホーム > フリーPHPスクリプト > 日記を自動更新する
日記を自動更新する(ウェブログPHP)
このスクリプトは、株式会社翔泳社から発刊されている「簡易更新・携帯連動・アクセスアップでホームページの更新がグングン楽しくなる本」の中で紹介されているスクリプトです。
ここでダウンロードできるスクリプトは日記更新の基本部分ですが、書籍の中では更新履歴を自動的に編集する機能や、携帯からの投稿、Flashとの連携などをおこなって更にバージョンアップさせています。
ここでは申し訳ありませんが、基本スクリプトのみのダウンロードが可能になっています。応用を含めた改造スクリプトについては書籍に付属のCD-ROMをご利用ください。
※入力フォームに、画像の登録フォームがありますが、このままでは動作しません。
ダウンロード
設置の仕方
PHP4.2以降が利用できるサーバーをご利用ください。
ダウンロードしたアーカイブを解凍後、「setting.php」を開き、設定します。
<?php
//日記を始めた年
$syear = "2003";
日記をはじめる年を入力します
//今日の年月日取得
$nyear = date ( "Y" );
日記の年の表示方法を指定します。通常はこのままで結構です
$nmonth = date ( "m" );
日記の月の表示方法を指定します。通常はこのままで結構です
$nday = date ( "d" );
日記の日の表示方法を指定します。通常はこのままで結構です
//管理者パスワード
$set_pass = "pass";
パスワードを設定します
//サイトトップのURL
$home = "http://";
トップページのアドレスを入力します
//データディレクトリ
$data_dir = "./data";
データを格納するディレクトリのパスを指定します。通常はこのままで結構です
//イメージディレクトリ
$img_dir = "./image";
画像を格納するディレクトリのパスを指定します。通常はこのままで結構です
//一時画像保存ディレクトリ
$temp_dir = "./temp";
画像を一時的に格納するディレクトリのパスを指定します。通常はこのままで結構です
//サイトのタイトル
$site_title = "○○○の部屋";
日記のコンテンツのタイトル名を入力します
//トップページのテンプレート
$index_temp = "index_temp.html";
トップページのテンプレートファイルを指定します
//月表示ページのテンプレート
$month_temp = "month_temp.html";
月表示リストのテンプレートファイルを指定します
?>
サーバーにアップして、index.phpとinput.phpを確認します。
setting.phpで設定した「data」、「image」、「temp」の各ディレクトリのパーミッションを777に設定します。
エラー無く表示できれば設置はOKです。
テンプレートファイルの使い方
setting.phpで指定したindex_temp.htmlとmonth_temp.htmlは、index.phpとmonth.phpのテンプレートファイルです。
テンプレートファイルには、タグ形式でデータと置き換えられる部分を記述します。
*index_temp.html
<!-- site_title -->・・・コンテンツのタイトルを表示します。setting.phpで設定した「サイトのタイトル」が置き換えられます。
<!-- date -->・・・日記の日付を置き換えます。
<!-- day_title -->・・・日記のその日のタイトルを置き換えます。
<!-- contents -->・・・日記のその日の内容を置き換えます。
<!-- img1 -->・・・投稿した画像の1番目を置き換えます。
<!-- caption1 -->・・・投稿した画像の1番目のキャプションを置き換えます。
*month_temp.php
<!-- home -->・・・トップページへのURLと置き換えます。戻るボタンなどで利用します。
<!-- errer -->・・・エラーがあった場合の表示と置き換えます。
<!-- select -->・・・月表示のセレクトボックスを置き換えます。後に続く<input
type="submit" value="GO">とセットで使います。
<!-- repeat start -->・・・ひと月分の表示を繰り返す部分の始まりです。<!--
repeat end -->と必ずセットで利用します。
<!-- repeat end -->・・・表示の繰り返しの終わりです。
※これらのタグを、デザインしたHTMLファイルに埋め込み、テンプレートファイルとします。
利用方法
日記を書く場合は、input.phpからsetting.phpで設定したパスワードを入力してログインします。
パスワードが合っているのに正常にログインできない場合は、次のことをおこなってください。
対処1 新たにphp.iniというファイルを作り、次のように入力します。
register_globals = on
保存したphp.iniファイルをPHPファイルのあるディレクトリにアップロードします。
対処2 「.htaccess」の設置が許可されているサーバーであれば、新たに「.htaccess」ファイルを作成します。「.htaccess」ファイルがすでにある場合は、そのファイルに次の一行を追加してください。
php_flag register_globals on
保存した.htaccessファイルをPHPのあるディレクトリにアップロードします。
本来、セキュリティの問題で、このような設定の変更は望ましくないのですが、ここではまずPHPに慣れることを主目的としていますのでなるべく簡単な方法での解説をとっています。
サポートはメールおよび掲示板でおこないます。
ご質問される場合は、お使いの環境(サーバーOS、PHPバージョンなど)と、現象を詳しくお書きください。(エラーメッセージが出ている場合は、その内容も)
よくあるご質問
これまでお問い合わせ頂いた質問をQ&A形式でまとめました。
Q
p.234で記載されているday.phpとday_temp.htmlがみつからない
A
こちらからダウンロードしてください
Q
month.phpでタイトルと月の切り替え表示は表示されるが記事一覧が表示されない
A
こちらのソースを試してみてください
Q
次のようなエラーメッセージが表示される
Warning: Unable to open 'none' for reading: No
such file or directory in
/home/.sites/126/site235/web/php/writing.php on
line 126
Warning: Unable to open 'none' for reading: No
such file or directory in
/home/.sites/126/site235/web/php/writing.php on
line 130
Warning: Unable to open 'none' for reading: No
such file or directory in
/home/.sites/126/site235/web/php/writing.php on
line 134
A
wriing.phpの以下の行を変更します。
100行目近辺
//同じ日付けがある場合。確認。画像は一時保存。
if ( $sameday_check == "1" ) {
if ( $upimage0 != "" ) {
$image0 = img_name ( $upimage0_name, "0",
$ymd );
copy ( $upimage0, "$temp_dir/t$image0"
);
}
if ( $upimage1 != "" ) {
$image1 = img_name ( $upimage1_name, "1",
$ymd );
copy ( $upimage1, "$temp_dir/t$image1"
);
}
if ( $upimage2 != "" ) {
$image2 = img_name ( $upimage2_name, "2",
$ymd );
copy ( $upimage2, "$temp_dir/t$image2"
);
}
を
//同じ日付けがある場合。確認。画像は一時保存。
if ( $sameday_check == "1" ) {
if ( filesize ( $upimage0 ) != 0 ) {
$image0 = img_name ( $upimage0_name, "0",
$ymd );
copy ( $upimage0, "$temp_dir/t$image0"
);
}
if ( filesize ( $upimage1 ) != 0 ) {
$image1 = img_name ( $upimage1_name, "1",
$ymd );
copy ( $upimage1, "$temp_dir/t$image1"
);
}
if ( filesize ( $upimage2 ) != 0 ) {
$image2 = img_name ( $upimage2_name, "2",
$ymd );
copy ( $upimage2, "$temp_dir/t$image2"
);
}
に。
130行目近辺
//条件が整った場合。書き込み。
if ( $day_check == "0" &&
$item_check == "0" && $sameday_check
== "0" ) {
//画像ファイルの処理。
if ( $upimage0 != "" ) {
$image0 = img_name ( $upimage0_name, "0",
$ymd );
copy ( $upimage0, "$img_dir/$image0"
);
}
if ( $upimage1 != "" ) {
$image1 = img_name ( $upimage1_name, "1",
$ymd );
copy ( $upimage1, "$img_dir/$image1"
);
}
if ( $upimage2 != "" ) {
$image2 = img_name ( $upimage2_name, "2",
$ymd );
copy ( $upimage2, "$img_dir/$image2"
);
}
を
//条件が整った場合。書き込み。
if ( $day_check == "0" &&
$item_check == "0" && $sameday_check
== "0" ) {
//画像ファイルの処理。
if ( filesize ( $upimage0 ) != 0 ) {
$image0 = img_name ( $upimage0_name, "0",
$ymd );
copy ( $upimage0, "$img_dir/$image0"
);
}
if ( filesize ( $upimage1 ) != 0 ) {
$image1 = img_name ( $upimage1_name, "1",
$ymd );
copy ( $upimage1, "$img_dir/$image1"
);
}
if ( filesize ( $upimage2 ) != 0 ) {
$image2 = img_name ( $upimage2_name, "2",
$ymd );
copy ( $upimage2, "$img_dir/$image2"
);
}
に。
Q
P196にある応急処置をしてもログインできない
A
次の変更をします。
input.php・・・33行目の
「switch ( $pass ) {」を
「switch ( $_POST["pass"] ) {」に
wrting.php・・・42行目の
「switch ( $pass ) {」を
「switch ( $_POST["pass"] ) {」に
edit.php・・・28行目の
「switch ( $pass ) {」を
「switch ( $_POST["pass"] ) {」に
update.php・・・18行目の
「switch ( $pass ) {」を
「switch ( $_POST["pass"] ) {」に
モバイルでも利用するのであれば
mobile.php・・・15行目の
「switch ( $pass ) {」を
「switch ( $_POST["pass"] ) {」に
Q
特定の文字だけ文字化けがおきる
A
入力するときに、入力する前の文字にエスケープ文字「\」を入力します。
例えば「入力」で「入」という字が文字化けする場合、「\入力」と入力します。
