【PKOBO-News01】PHP新着情報・お知らせ・ニュースCMSプログラム フリー(無料)版
【重要】※要修正
PHP8以上の場合に管理画面で投稿や編集が出来ない問題
ただし、2021/06/23以前にダウンロードされた方が対象です。
2021/06/23以降にダウンロードされた方は関係ありませんので無視して下さい。
【症状】
管理画面で投稿や編集の際にPHP7.4の場合は環境によってエラーが表示され、PHP8以上の環境ではエラー(またはページ真っ白)となり、投稿や編集などが行えなくなります。(あくまでも管理画面のみです。表示側には影響ありません)
【原因】
get_magic_quotes_gpc()関数がPHPバージョンが7.4で非推奨となり、PHP8以降では廃止となったため。
【解決方法】
以下のファイルをエディタソフトなどで開いて下さい。
pkobo_news/admin/include/admin_function.php
こちらの229行目付近の以下の1行を削除して下さい。削除しても機能には影響ありません。
※1箇所しかありませんのですぐに見つかります。
if (get_magic_quotes_gpc()) $str = stripslashes($str);
【説明】
get_magic_quotes_gpc()関数はmagic_quotes_gpcという設定がONかどうかチェックするためのものですが、 「magic_quotes_gpc」自体はPHP5.4で完全廃止されたため、本来は不要な記述ですが、古いバージョンでの利用も考慮し念の為に残していました。
ですので、PHP5以上であれば不要な機能なので削除して構わないのです。
まえがき
これまで配布してきましたニュースプログラム(有料版含む)の全部入り+さらに機能追加でフルモデルチェンジという位置づけです。
より設置しやすく、表示側もより簡単にカスタマイズしやすいよう、ソースコードもゼロから設計、開発しました。また今までに様々なカスタマイズ依頼、ご要望などをいただきましたが、それらほとんどの機能を実装しましたのでほとんどの要件に対応できると考えています。
打倒WPを本気で目指して開発しました。もう新着情報のためだけにWPを導入する必要は(ほぼ)ありません。
サイトの新着情報に必要な機能は(ほぼ)すべて付いていると思います。(むしろ不要な機能があるかもしれません)
画像、及び各種ファイル(PDF、エクセル、ワード、パワーポイントなど)のアップ機能(複数可)、エディタ機能(文字装飾)、HTML編集機能を実装したフリー(無料)の新着情報・お知らせ・ニュースプログラムです。
サイトのトップページの新着情報、お知らせ、ニュース、更新履歴などに適したプログラムです。
サンプルデモがありますのでそちらで確認いただくのが最も手っ取り早いと思います。
投稿などもできますので、まずは触ってみてください。
設置もいたって簡単で、ある程度のhtmlの知識とFTPでなにかしらアップしたことがあれば可能です。
投稿は管理画面からブログのようにブラウザ上で完結しますので、クライアント側での更新も可能です。
※むしろそれを想定しています。
いちいちHTMLを書いて、リンク設定して~FTPでアップして~という作業がなくなり、作業効率を上げることができます。いわゆるCMSとして運用できます。
スマホ(スマートフォン)、携帯(ガラケー)表示用のディレクトリ(sp/、i/)も用意していますので、マルチデバイスの一括更新も可能です。
設置先のサイトがレスポンシブであれば尚簡単です。表示側のHTML、CSSは自由に編集可能です。
トップページの表示はインラインフレームでも良いですが、直接埋め込むことでSEOにも効果的です。(更新頻度もSEOに影響を与えると考えられるため)
PHP(4.3.9以上)、が動くサーバー、かつGDライブラリが入っていることが設置条件になります(PHPが動くレンタルサーバならたいていGDライブラリは入ってますのでとりあえずは何も気にせずOKです)。
ただし、トップなどに直接埋め込む場合、トップページのファイルが.php(たいがいindex.php)である必要があります。htmlの場合にはインラインフレームをご利用いただくか、これを機に.phpに変更下さい。またはhtmlのままphpが動作する環境ならOKです。
こちらでも十分に検証を行なっておりますが、配布直後は未知のバグが無いとも限りません。不具合やお気づきの点がございましたら遠慮なくご連絡いただけますと幸いです。また使用感やこのページでの間違い、分かりにくい点等ありましたらお知らせいただけたら大変ありがたいです。いずれもお問い合わせよりご連絡いただければと存じます。
主な特徴
- 個人・商用問わずどんなサイトでも無料でご使用いただけます。
クライアントへの納品などでももちろんOKです。
ただ実際に導入してみてもし気に入っていただけましたら「
」していただけるとさらにより良いものへと進化する可能性があります(笑)
デフォルトでは全ページ下部に著作権リンク(クレジット)が表示されます。著作権リンク(クレジット)の削除申請についてはこちらをご参照下さい。
- データベースは不要です。PHPが動作する環境であればほとんどのサーバーで動作し、また軽量なため軽快に動作します。(WPなどのようなモッサリ感はありません)
(基本的にPHPのバージョンは問いません。PHP4.3.9~5.5まで動作確認済)※5.3以上推奨。
- 管理画面からブログ感覚で新着情報やお知らせなどを投稿できます。商用サイトへの導入を前提に、クライアントが投稿することを想定しシンプル&分かり易さを追求。投稿画面(管理画面)に簡単なマニュアルがあるので、マニュアルの作成、操作方法の説明も基本的に不要です。
管理画面にもページング機能が付いていますのでどんなに投稿が増えても問題ありません。(デフォルトは100件/1ページあたり)
※投稿数に制限はありません。(実際は環境にもよるけど21億程度ですが死ぬまで大丈夫です)
- 表示側のページ構成は一般的な新着情報に合わせて、
トップページ表示用、ページング付きの一覧ページ、詳細ページの3ページ構成となります。
ページング付きの一覧ページは投稿がどんなに増えても適切にページングが設定されますので、メンテナンス等は不要です。(あなたは1ページあたりの表示件数を必要に応じて変更するだけです ※デフォルトは20件)
- トップページ表示用、ページング付き一覧ページでは本文の抜粋を表示し(表示文字数などは設定可)、画像がアップされていればサムネイル表示も行います。(1枚目の画像のみ)サイズも指定可
※いずれも無効化することも可能ですので不要な場合には削除下さい。
- 本文入力箇所に一般的なブログのようなエディタを導入し、文字色、文字サイズ、太字、センタリング、左右寄せ、特定の文字列へのリンク設定などが行えます。
HTML編集も可能です。HTMLタグ、CSSなども使えます。
シンプルで良い場合などこのエディタ機能が必要ない場合には設定ファイルでOFFに設定可能です。
- 詳細ページはポップアップ、または通常のページとして表示可能で設定ファイルでの設定次第です。たとえば、既存のページデザイン上に詳細を表示可能です。(デフォルトはポップアップ)
- タイトルから任意のページに直接リンクさせることが可能。(既存のページや外部サイトに飛ばしたい場合などに便利です)リンクの開き方は管理画面上で選択可能です。
たとえば、外部サイトの場合にはblank(別ウインドウ)、サイト内のページの場合はparent(同一ウインドウ ※iframeの場合は親ウインドウ)で開けます。
- タイトルから任意のファイルに直接リンクさせることが可能。(PDFファイルやエクセル、ワードファイルなどにリンクしたい場合に便利です)アップできるファイルの種類に制限はありません。設定ファイルで指定されたファイルがアップ可能です。このリンクはすべて_blankでリンクします。
※デフォルトではjpg、gif、png、pdf、xlsx、xls、doc、docx、ppt、pptxがアップ可能です。
- 記事内に画像、及び各種ファイルを複数アップ可能です(MAX19まで)。アップを許可するファイルの拡張子を設定ファイルで設定可能です。(要するにどんなファイルでもアップ可能です)
※デフォルトではjpg、gif、png、pdf、xlsx、xls、doc、docx、ppt、pptxがアップ可能です。
画像(jpg、gif、png)の場合のみサイズも自動縮小します(サイズ、画質とも設定ファイルにて設定可)。デフォルトは横写真の場合は幅、縦写真の場合は高さでいずれも600pxで画質は90。サーバーにもよりますが、デジカメ写真のような大きいファイルサイズでもそのまま登録OKです。クライアントにいちいち縮小してから登録してねーとか面倒ですよね^^;
※サーバーのphp.iniの設定によりアップロード容量の制限値が異なります。デフォルトは2MBとしています。
変更方法や詳細はこちらを参考下さい
※画像はimgタグで表示し、それ以外はファイルにリンクします。
※iPhoneで縦で撮った写真が横写真として認識されてしまう問題も対策しています。
※透明pngにも対応しています。
※管理画面内に現在のサーバーの設定値を確認できるページを用意してますのでそちらで現在の容量の制限値等をご確認下さい。
- カテゴリ機能も付いています。あくまでもオプション扱いですので、使用しなくても構いません。カテゴリ機能については下記「カテゴリ機能」をご参照下さい。
- 記事の表示・非表示が可能。
- 登録年月日を未来日に設定すれば予約投稿も可能です。たとえば今日が8月31日の場合で、9月10日を登録年月日に設定すれば9月10日0時から表示されます。(それまでは非表示)
- Newマークの表示が可能です。登録日からの表示期間は設定ファイルで指定可能です。デフォルトは10日。デフォルトではCSSのみでアイコン状にしていますが、CSSを編集したり画像を設定したりなどオリジナルデザインももちろん可能です。
- バックアップファイルを自動生成(デフォルトはOFF)新規投稿時にバックアップを作成します。万が一のデータ保存ファイル上書きなどによるデータ消失を防ぎます。(データ保存ファイルを別名で複製保存します)
- RSS配信が可能です。RSSを利用したFacebookなどSNSとの連動も可能です。RSSの詳細
- その他オプション等の設定はすべて設定ファイル(config.php)で行えますのでファイル内のコメントを参考に設定ください。
※ゼロから設計、開発したため他のニュースプログラムとの互換性はありません。
WordPressと比べた場合のメリット
・設置の容易さ(時間的にも)と管理画面のシンプルさ
自分も仕事の案件ではCMSとしてWPはよく使いますが、新着だけなのにWP使うのもなぁ~と感じていて、今は新着だけであればこれを使ってます。WPの場合、設置に慣れてもそこそこ時間もかかり(DBの作成も必要)、さらに管理画面の操作がクライアントにとっては若干複雑でそれこそマニュアルを付ける必要もあります。さらに その作業分の金額を請求できないことなどもあり。。。元々はそんな自分のために作ったプログラムだったりします^^;
新着情報に特化しているため、余計なファイルの読み込みや大量のデータベース(SQL)クエリも無いため非常に軽快に動作します。ファイル構成も非常にシンプルでWPのThemeのような「で、どれイジればいいねん?」ということもありません。またWPのようにそこまでメジャーではないため攻撃対象にもなりにくいでしょう。
※もちろん大前提としてWPは非常に素晴らしいシステムであることは言うまでもありません。(特にブログとしてのシステムとしてはパーフェクトだと思います。とてもじゃないですが私個人では敵いません)
サンプルデモ
管理画面サンプルデモ
ユーザID:admin
パスワード:13971397
テスト投稿してみてください。下記のページに反映されます。削除も可能です。
PC表示サンプル
ご参考までにいずれも当サイトのデザイン上に反映していますが、実際には既存のサイトデザイン上に反映することを想定しています。(もちろん配布版には当サイトのデザイン(HTMLなど)は含まれません)
初めの下記2つのリンク先はサイトのトップページに直接埋め込んだサンプルです。インラインフレームで表示しても見た目はまったく同じです。
表示件数はデフォルトの10件(最新の)としていますが、もちろん設定ファイルで変更可能です。またCSSで高さを指定すれば狭い場所であろうとどんなところであろうと表示可能です。
トップページ埋め込み表示サンプル(詳細ポップアップ版 ※デフォルト)
トップページ埋め込み表示サンプル(既存のページに詳細表示 ※設定ファイルで指定可能です)
一覧ページ(ページング付き)表示サンプル(詳細ポップアップ版 ※トップと同じく設定ファイルで指定可)
RSSフィード表示ページ
トップページのURLにパラメータ「?feed=rss2」を追加するだけで表示されます。(あくまでも必要に応じてご利用下さい)
詳細ページではパンくず、タイトルタグ、descriptionにも記事タイトルを反映していますのでSEOにも効果的です。SNS系のソーシャルボタンなどを設置すれば記事ごとに「いいね」なども可能です。
スマホ表示サンプル
表示サンプル ※デフォルト
実際には既存ページに埋め込むことを想定していますので至ってシンプルです。
html、CSS等は設置ページに合わせて自由に変更下さい。
基本的にはPCと同じですが、リンク部分を広げている、HTML5としているなどの微妙な違いがあります。 |
QRコード |
携帯(ガラケー)表示サンプル
表示サンプル ※デフォルト
実際には既存ページに埋め込むことを想定していますので至ってシンプルです。
html、CSS等は設置ページに合わせて自由に変更下さい。
基本的にはPCと同じですが、CSS、JSが現実使えないため排除しています。
|
QRコード
|
プログラムダウンロード
事前にご利用規約をご確認、ご同意下さい。
クリックで自分のPCにダウンロード保存して下さい。または右クリック⇒「対象をファイルに保存」
PKOBO-News01.zip(82KB)
文字コードはUTF-8です。
既存のページがUTF-8以外の場合はトップはiframeで表示し、一覧ページ、詳細ページなどは既存のページのHTMLをnews.phpとnews-detail.phpにコピペするなどで対応下さい。
※1サイトで複数の文字コードのページが混在していても問題ありません。
現在のサイト(ページ)の文字コードがUTF-8以外の場合
当プログラムはすべてUTF-8で制作されています。管理画面側は既存のサイトの文字コードがなんであろうと特に問題ございませんが、表示側については文字コードが影響します。たとえばShift_JISのページにそのまま埋め込んでも文字化けします。解決策としては以下の選択肢があります。
1,iframeで読み込んでポップアップで表示する。
たとえばトップページに表示する場合、iframe(インラインフレーム)で表示し、ポップアップ(デフォルト設定)で表示とすればページの文字コードがなんであろうと関係なくなります。
これがもっとも手っ取り早いかもしれません。一覧ページについても同様です。ただ、一覧ページでスクロールバーを表示させたくない場合には、内容によって高さがまちまちなため高さをある程度余裕を持って指定する必要があるかもしれません。
デメリットとしてSEO的には良くないかもしれません。
2,埋め込み先のファイル(ページ)の文字コードをUTF-8に変更する。
ファイルの文字コードの変更自体はDreamWeaverやTerapadなどで簡単に変更できます。特にDWであればmetaタグの変更も含め一発でやってくれるので簡単で安全です。
またサイト内で複数の文字コードのページが混在していても基本的には問題ありません。
(ただしそのページにその他のシステムなどを導入している場合には問題が出る可能性もありますのでご注意下さい)
PHP側で表示前に文字コードを変換することももちろん可能なのですが、
機種依存文字(㈱や①等)などが文字化けするなどの問題であまりスマートではないため実装しておりません。
もちろんそもそも機種依存文字は使わないほうが良いのは言うまでも無いですが、クライアントさんはそんなこと気にしませんからね。
ただ、今後こういったデメリットもあるという前提の元で文字コード変更を簡単にできるようアップデートで対応する可能性もあります。
設置方法
ファイルの文字コードはUTF-8です。必ず対応したエディタで開いてください。
メモ帳(UTF-8非対応)は使用禁止です。TeraPad(無料)やDreamWeaver等で開いてください。
(そこまで意識する機会はありませんが、必ずBOM無しで保存して下さい。※多くのエディタのデフォルトはBOM無しのはずです。BOMについて詳しく知りたい方はこちら)
※ PHPでは、スラッシュ2回「//」の後からその行の末尾までがコメント扱いとなります。「#」、「/**/」もです。
1.ダウンロードファイルを解凍する
zipファイルになっていますので解凍下さい。解凍ソフトは何でも構いません。Windowsであれば標準で付いている「展開」などでもOKです。
2.ファイル構成と各ファイルの説明
一般的なサイトの階層構造を意識して配置しています。要するにtop-umekomi.phpがある階層がサイトのトップページの階層と同じということですね。
■色のものはパーミッション変更が必要なものです。
top-umekomi.php |
トップページ表示用のファイルです。新着情報の一覧をトップページに直接埋め込む場合はこちらのコードの一部(ソース内にコメントで書いてます)をトップページの任意の場所に貼り付けてください。ただし、埋め込み先のページは拡張子が.phpでかつ文字コードがUTF-8である必要があります。コピペ箇所はコメントにて指示があります。見た目等はCSSで自由に調整して下さい。HTMLタグももちろん自由に変更下さい。
iframe(インラインフレーム)で運用する場合はこのファイルをiframeタグで読み込めばOKです。
こちらのファイル内で「表示件数」、本文の抜粋を表示するかどうか、本文を抜粋表示する場合の表示文字数、サムネイルを表示するかどうか、表示するカテゴリ(デフォルトは未設定のため全記事)を指定できます。
トップページの拡張子が.htmlの場合はこちらもご参考下さい
トップページに直接埋め込む場合でトップページの拡張子が.html(たいがいindex.htmlだと思います)の場合、拡張子を.php(たいがいindex.php)に変更する必要があります。
サイトトップのファイル名index.○○は省略できるルールがありますので、index.htmlをindex.phpと変更しても、
たとえばhttp://www.php-factory.net/ とした場合、自動的にindex.phpの内容が表示されます。
ただ、人によってはドメイン/index.htmlとファイル名までを含めた形でお気に入り等に入れている可能性もあり、拡張子が変わることでアクセスできなくなる人が出る可能性があります。その場合、.htaccessファイルでhtmlファイルにアクセスした場合、phpファイルにリダイレクト (飛ばす)させる方法が有効です。
また、内部リンクでもindex.htmlのファイル名まで含んでしまっていることもあるかと思いますが、index.○○は省略出来るルールがありますので、省略すべきです。たとえば当サイトではどのようにページ遷移を行なってもindex.○○が表示されることがありません。こうしておけば拡張子が変わっても影響しませんので合理的です。
リダイレクト法はこちらを参考にしてください。
ファイル名を変更するとSEO的に・・・と言われることもありますが、経験上あまり関係無い気がします。ファイルごとに付けられたページランクには影響ありますが、301リダイレクトにすれば引き継ぐので全く問題無いと考えています。
htmlファイルをphpとして動作させる方法もありますが、サーバーによって記述が違うこともありますし、使えないこともあります。(「htaccessでhtmlをphpとして動作」などと検索すれば見つかります)
|
iframe.html |
トップページにiframeで埋め込む場合用のHTMLタグです。あくまでコピペ用ですので削除いただいて構いません。 |
news.php |
ページング機能が付いた一覧ページです。こちらもtop-umekomi.php同様既存のページに埋め込むことを想定しています。同じようにコピペするだけです。見た目的にはトップページ埋め込み用ファイルと同じですが、ページングが付いている点が異なります。一覧ページが不要な場合は削除、または無視して下さい。
既存のページヘ反映することを想定していますが、このまま使ってもOKではあります(このファイルにリンクする)。ただし、こちらもトップ埋め込み用と同様埋め込み先のページは拡張子が.phpでかつ文字コードがUTF-8である必要があります。
こちらもtop-umekomi.php同様ファイル内で本文の抜粋を表示するかどうかなどのオプション設定が可能です。 |
news-detail.php |
詳細ページ用のファイルです。ポップアップ表示ON、ポップアップ表示OFFのいずれの場合もこのファイルで詳細が表示されます。見た目は自由に編集下さい。特にポップアップ表示OFFの場合で既存のページデザインを反映する場合にはこのファイルに既存のページのhtmlをコピペするか、または既存のページにこのファイルの必要箇所をコピペ下さい。コピペ箇所はコメントにて指示があります。ただし、埋め込み先のページは拡張子が.phpでかつ文字コードがUTF-8である必要があります。 |
┗ pkobo_news/ |
システム全体のディレクトリです。リネームは可能ですが、変更した場合、各表示側ファイルのパス部分も変更が必要です。検索、置換などで対応下さい。
自信が無い場合は変更しないことをオススメします。 |
┗ admin/index.php |
管理画面です。登録や変更、削除を行います。クライアントにはこのURLだけを教えることになるかと思います。 |
┗ include/config.php |
設定ファイル。管理画面ログイン情報の設定やその他設定が可能です。
エディタで開きコメントを参考に必要に応じて設定下さい。
特にログイン情報は必ず変更下さい。
セキュリティ上の観点から念のためパーミッションを「444」に設定下さい。
(ただし、444だとFTPソフトでも上書きできなくなることがあるので、その場合は一時的に666等に変更する必要があります) |
┗ その他ファイル |
すべて必要なファイルになりますが意識する機会はないと思います。特に触らずそのままアップ下さい。特に「copy.inc」は触らないで下さい。システムエラーが発生します。 |
┗ data/ |
データ保存用ディレクトリ |
┗ data.dat |
データを保存するファイル(パーミッション666等書き込み可能なものに) |
┗ backup/ |
データファイルのバックアップを保存するディレクトリです。
(パーミッションを777等書き込み可能なものに)
バックアップはオプションです。デフォルトはOFF。
バックアップをONにすると新規投稿時にだけbackupディレクトリ内に「backup年月日時分秒_○○.dat」のファイル名で最新のdata.datが複製されて保存されます。古いものは自動で削除されます。保存期間は指定可能です(デフォルトは3ヶ月 ※本日から3ヶ月前までのデータを保存します)。このあたりは設定ファイル内にも詳しく記述しています。 |
┗ upload/ |
アップロードファイル保存用ディレクトリです。
(パーミッションを777等書き込み可能なものに) |
sp/ スマホサイトにも使用する場合
※ディレクトリ名「sp」は変更可能です。例 smp/ など。既存のディレクトがあればそこに入れればOKです。
ファイル構成、設置法ともPCと全く同じです。またファイル内容も基本的にはほぼ同じです。タップを考慮しリンク部分を広げている、HTML5としているなどの微妙な違いがある程度です。
ただ、HTML、CSSは最低限のものしか記述していませんので、設置される方ご自身で設置ページに合わせて調整下さい。
PHPが絡んでいようとも結局最終的にはHTMLが出力されるだけですので、基本的にはどのような見た目にもできます。
スマホ版を利用しない場合これらのファイル(spディレクトリごと)は不要です。
i/ 携帯(ガラケー)サイトにも使用する場合
※ディレクトリ名「i」は変更可能です。例 m/ など。既存のディレクトがあればそこに入れればOKです。
ファイル構成、設置法ともPCと全く同じです。またファイル内容も基本的にはほぼ同じです。
CSS、JSが現実使えないため排除しています。 また文字サイズなども調整が必要かもしれません。
このあたりは設置される方ご自身で設置ページに合わせて調整下さい。
携帯版を利用しない場合このファイル(iディレクトリごと)は不要です。
【重要】携帯(ガラケー)サイトでXML宣言がある場合の注意点
各ファイルのソースコード最上部にXML宣言を記述している場合、PHPファイルに直接XML宣言を記述するとPHPタグと誤解釈され、結果何も表示されなくなるという致命的な不具合があります。
各ファイルに書かれているように
<?php echo"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";?>
と書くことで回避出来ます。
※PC、スマホでも同様のことが言えますが、そもそもPC、スマホの場合今のところXML宣言を書くこと自体ほぼ意味が無い上にデメリットもあるのでもはや常識とも言えますが、PC、スマホに限ってはXML宣言は書かないことをおすすめします。
3, ユーザID、パスワードを設定する
admin/include/config.phpをエディタソフトで開き、ログインのためのID、パスワードを変更してください。
初期値は
ID:admin
パスワード:13971397
になっています。必ず変更してください。(半角の英数字、記号が設定可能です)
※パスワードはできるだけ13文字以上かつ大文字、小文字のローマ字、数字、記号(+_?*等)などを含めて下さい。
その他必要に応じてコメントを参考に設定してください。
特にデフォルトでは参考までにカテゴリが「お知らせ」、「重要なお知らせ」の2つ設定されています。
不要な場合には空に、変更、追加されたい場合にはコメントや既存の記述を参考に設定下さい。
4, FTPでアップ
pkobo_newsフォルダ、及びトップページ、一覧ページ、詳細ページなどすべてアップしてください。
上記の■色のファイル、ディレクトリのパーミッションを変更下さい。
(ただし、config.phpは444だとFTPソフトでも上書きできなくなることがあるので、その場合は一時的に666等に変更する必要があります。ってことで戸惑われる方もいると思うので本当はややこしいので「444」にして下さいとかあまり言いたくは無いのですが、WPの改ざん問題とかもありましたので、念のため変更しておいたほうがいいでしょうっていう程度のことです)
パーミッションはサーバーによっては変更自体が不要な場合があります。また値もサーバーにより異なることがあります。
パーミッションが異常の場合には、管理画面で警告メッセージが表示されますので、すぐに気づくことができます。
逆に正常に管理画面が表示されて、登録もできていれば、正常なパーミッションになっていると考えてOKです。ちなみにエックスサーバーの場合、今のところパーミッション変更は不要です。
極々稀にPHPファイル自体のパーミッション変更が必要なサーバーもあります。
5,ブラウザで確認
「あなたのサイトのURL(設置した階層)」/pkobo_news/admin/を表示し、管理画面にログイン後、投稿を行ってみてください。正常に登録、編集、削除ができればOKです。
表示側のページも確認下さい。
投稿データが反映されていればOKです。
6, ページの調整
必要に応じてスタイルシート、HTML等で見た目の調整を行ってください。じゆ~です!
こちらでも十分に検証を行なっておりますが、配布直後は未知のバグが無いとも限りません。お気づきの点がございましたらご連絡いただけますと幸いです。
インラインフレーム使用時のタグ例
同梱のiframe.htmlにも書いていますが、以下のタグをトップページの新着を表示させたい場所に貼り付ければOKです。必要に応じて幅、高さ、パス等を調整してください。
カテゴリ機能について
カテゴリ機能が付いております。カテゴリは設定ファイルで管理していますが、デフォルトにて2つのカテゴリを参考までに設定しています。もちろんカテゴリ機能を使わなくても構いません。その場合、コメントにも書いておりますが、空に設定下さい。
トップページ埋め込み用、一覧ページとも特定のカテゴリのみ抽出表示することが可能です。
方法は2パターンあります。どちらでもOKですので設置ページなどに合わせて選択下さい。
1,ファイル内で指定する
top-umekomi.php、news.phpともファイル内に「表示するカテゴリを指定」の設定箇所がありますので、そちらでカテゴリ番号を指定するだけです。
これは主にカテゴリごとにページ(ファイル)を分けたい場合に最適です。(デザインを変えたいなど)
※ページ(ファイル)を分けたい場合はファイルをただ複製すればOKです。
2,パラメータで指定する
URLの末尾に「?cat=カテゴリ番号」を指定することで指定カテゴリのみ表示されます。
こうすることでURLパラメータを変えるだけで1ページで表示できますので、通常はこちらが最適な可能性があります。ページングが行われてもカテゴリは引き継がれますので安心下さい。
※いずれもカテゴリ番号で指定しますが、番号は0から始まることにご注意下さい。
いずれにせよ設置ページの要件に合わせてご使用ください。
これを利用することでたとえば、3つのカテゴリを設定した場合でそれぞれ別ページに表示したい場合などに対応できるものになります。また、トップページは特定のカテゴリのみ表示したいなどにも対応できます。
↓にある「よくある質問とよくあるカスタマイズ例」でもカテゴリナビゲーション表示用のコードやその他カテゴリ機能に関するものを掲載しておりますのでご参考いただければと思います。
RSS配信方法
PCトップページ表示用のファイルに「?feed=rss2」というパラメータをつければRSSフィードページが表示されます。RSSとしての使用ももちろん可能ですが、RSSを利用したFacebookなどSNSとの連動も可能です。(サポート外)
既存のトップに埋め込んだ場合もそのページにパラメータをつければOKです。
RSS例(よくあるRSSボタンの例ですね) RSS
※このページのサンプルデモのRSSフィードです。
URLパラメータ指定例1, http://www.○○○/?feed=rss2
URLパラメータ例2, http://www.○○○/top-umekomi.php?feed=rss2
著作権表示リンク削除について(2,000円+消費税/1サイト)
デフォルトでは全ページの下部に著作権表示リンク(クレジット)表示があります。
無断での削除は禁止となります。
クライアントへの納品やリンクが煩わしい、または寄付の意味でなどクレジットを削除されたい場合には、
1サイトあたり2,000円+消費税のライセンス料金が必要になります。申請いただければ開発の励みにもなります。
お支払いいただければ場合、すべてのページでクレジットが削除されます。
2サイト目以降は都度料金が必要になります。
尚、プログラム自体に変更を要するものではございませんので、すでに導入済みであればそのままお使いいただけます。まだ導入されていない場合でも、導入作業を行なっていただいて問題ございません。
※システムには無関係の1ファイルを差替えしていただくだけになります。
※差替えするファイルはご入金確認後にメールにてお送りいたします。
著作権リンク削除申込はこちらです(銀行振込)
クレジットカードでのお支払いはこちら
(完全自動化によりクレジットカード払いの場合、決済完了後即ダウンロード可能です。手数料無し)
動作確認済PHPバージョン
PHP4.3.9~PHP8.1
動作確認済レンタルサーバー
- エックスサーバー [PR]
※個人的にはここが好きで、もうずっとここです。このサーバーで困ることはまずないでしょう。
- ロリポップ! [PR]
※ただしここはWAF機能がONの場合、CMSプログラムで問題が発生する可能性が高いです。詳細はこちら
またサーバーがブラックリストに登録されてしまいメール系のプログラムで受信できない大問題も多々確認されています。詳細はこちら ただコスパ的には有りだと思います。
- カゴヤのレンタルサーバー [PR]
ここは高機能、高スペック、良心的な価格でありながら風俗系のサイトがOKという非常に貴重なサーバーです。個人的には風俗系のサイトであればこのサーバー以外の選択肢はないと思ってます。
- さくらのレンタルサーバ [PR]
その他一般的なレンタルサーバーであれば問題なく動作するはずですが、
すべての環境(サーバー)での動作を保証するものではありませんのでご了承下さい。
問題が出る可能性が高い、またはそのままでは必ず問題が出ることが分かっているサーバー
※現状私自身が把握している範囲です。(実際に確認していますのでちゃんと根拠もあります)
1,Yahoo系(ジオプラス、ウェブホスティングとも)※Softbankも含む
2,KDDI系(CPI含む)
3,NTT系(WebArena(suiteX)、NTTビズリンク(BizLink))
※プロバイダー系は特に問題が多いです。(個人的には絶対に借りてはいけないと考えています)
4,スマイルサーバー
5,ファーストサーバ
特にCPI、NTT系、スマイルサーバー、ファーストサーバで問題がある場合はこちらも参照下さい
経験上、結局は「餅は餅屋です」。プロバイダー系はプラン、金額に関係なく特に問題が多いです。サーバーの問題で時間を取られるのは非常に無駄ですし、その先ずっと影響しますのでサーバー選びは慎重にされることをオススメします。
特に理由がなければあえてこれらのサーバーは借りないほうが得策でしょう。高いから良い、安いからダメという安易なものでもありませんので難しいところですね。(まぁ安いには安いなりの理由があるのですが・・)
また管理画面のエディタ部分はブラウザの機能を一部利用している(タグ生成部分など)ため、一部ブラウザでは文字装飾等ができない可能性があります。
動作確認済ブラウザ:IE9~IE11、Firefox(おすすめ)、GoogleChrome(本文の1文字目が英字入力にある不具合有) ※Macでは動作確認しておりません(汗)
スマホは文字装飾不可になります。
よくある質問とよくあるカスタマイズ例
不具合関連
管理画面で投稿やページ遷移するとログイン画面が表示される
ログインにはPHPの「セッション(session)」機能を使用しています。
設置サーバーでPHPの「セッション(session)」機能が有効で無い場合、本プログラムは使用不可になります。
ただ、一般的なレンタルサーバーであればまず問題とはなりません。
よくあるミスとしてはファイルをBOM有りで保存してしまったというのがあります。
BOM有りで保存してしまうとセッションが維持できずページを移動するとログイン画面が表示されます。
Windows標準のメモ帳で開いて保存するとBOM有りとなりますのでメモ帳はPHPファイルでは絶対に使用してはいけません。
TeraPadなどのエディタソフトを使用して下さい。またTeraPadの場合は「UTF-8N」で保存して下さい。
BOMについては以下ページをご参照下さい。
https://www.php-factory.net/trivia/03.php
管理画面で投稿やページ遷移するとログイン画面が表示される場合がある(不定期に)
ログインにはPHPのセッションというものを使用しています。このセッションは定期的に削除されるようになってます。
セッションの性質としてデフォルトではログイン後、ページ遷移せずに24分が経過した場合、100分の1の確率でセッションファイルが削除されます。
※セッションファイルが増えすぎないようにするための仕様です。
要するにログイン後そのまま放置して24分以上経ってから他のページに移動しようとするとログイン画面が表示されてしまう場合があるということになります。
ただ、実際に24分以上も放置することは少ないと思いますし、
また確率的に削除されることは非常に稀です。
ですので、頻繁に発生する場合は少なくともこの仕様が影響しているとは考えづらいです。
その他考えられる原因としては
セッションファイルの保存先のディレクトリが
他のシステムでも使われていて、
それの影響で削除されてしまっているのかもしれません。
それを回避する方法を以下に記載しますので、お試しいただければと思います。
1,セッションの有効期限を延長して、セッションファイルの保存用ディレクトリを指定する
設定ファイル(config.php)の一番下の方にでも以下2行をコピペして追加して下さい。
ini_set( 'session.gc_maxlifetime', 14400 ); // 秒(デフォルト:1440)
session_save_path( dirname(__FILE__) .'/../session' );
これでセッションの有効期限が240分となります。
また、セッションファイルの保存先がadmin/session/になります。
2,セッションファイル保存用ディレクトリを用意する
admin/内にsessionという空のディレクトリ(フォルダ)を1つ作って下さい。
次にadmin/include/内にある.htaccessファイルをコピーして
作成したsession/ディレクトリ内に入れて下さい。
※セッションファイルにアクセス出来ないようにするためです。(必ず実施して下さい)
以上。
これで一度管理画面からログアウトしてログインしてみて下さい。
ログイン出来て、またadmin/session/内にセッション用のファイル(ランダム文字のファイル名です)が生成されていればOKです。
これでしばらく様子を見てみて下さい。
画像をアップしても反映されない
まず、サーバー上のuploadフォルダを開いて見て下さい。そこでFTPソフトの「更新」を押してみて、デフォルトでindx.htmlがありますが、それ以外に.jpgなどの画像ファイルがあるかどうか確認下さい。
ある場合には単純に表示側のimgタグのパスが間違っていることが考えられます。設置によって階層構造を変えている場合に発生しやすいです。できれば配布している階層そのままで設置してみて下さい。
そこに画像ファイルが無い場合は画像がアップされていないということです。考えられることはuploadフォルダのパーミッションが間違っている(基本的にはその場合管理画面で警告が出ます)、または、サーバーのphp.iniの設定でアップロードファイルの容量制限に引っかかっている、GDライブラリがインストールされていないなどが考えられます。プログラム側で5MBに設定しても、サーバー側の設定が2MBの場合はサーバー側の設定が優先されます。特にさくらサーバーのデフォルトは2MBだったと思います。
サーバーの容量制限については以下ページで解説してますのでご確認、必要に応じて設定変更してください。
サーバーのphp.iniによるアップロードファイルの最大容量の確認と容量制限の変更
PHPのGDライブラリですが、これはPHP4.3以降標準でインストールされていますので、ほとんどのサーバーでは問題無いはずです。
ただ、サーバーによっては、デフォルトで「Off」になっている可能性もあります。
以下ページを参考に現在のphp.iniの設定を表示させ、
サーバーのphp.iniの設定確認方法
「gd」でページ内を検索してみてください。「GD Support」などがあれば動いていることになります。
逆に「gd」自体見つからない場合には「有効」にする必要があります。
php.iniの設定で
;extension=php_gd2.dll
部分の先頭のセミコロンを削除してapacheを再起動すればOKです。
php.iniの設定、変更手順などはサーバーによって違います。詳しくはマニュアル、または無いような意地悪なサーバーなら直接サーバーに問い合わせてみて下さい。
「GD」を有効にしたいのですが・・・と質問すれば回答してくれるかと思います。
データファイル(data/data.dat)を間違ってローカルのファイルで上書きしてしまった
バックアップ機能をオンにしていれば(デフォルトはOFF)、data/backup/内に保存されているバックアップファイルで復旧が可能です。このファイルはdata/data.datを単純にコピーしたものです。
ファイル名はバックアップ時の「年月日時分秒」となっています。
「例 backup20131002024103_data.dat(この場合2013年10月2日2時41分3秒ということ」
これをリネームしdata/data.datを上書きすればOKです。その場合、念のためパーミッションを確認下さい。666等書き込み可能である必要があります。ただし、バックアップは新規投稿時のみ作成されます。もし新規投稿後にクライアント等が「編集」、「削除」などを行っていると、その変更内容は反映されていませんので先祖返り(デグる)する可能性があります。必要に応じてクライアントに説明、確認等を行うのが良いかもしれません。
バックアップを行っていなかった場合には申し訳ありませんがデータの復旧は不可能となります。
念のためサーバー会社に問い合わせてみてもいいかもしれません。バックアップを取っている可能性があるかもしれません。
サーバー障害によるデータ全損失の場合には復旧は不可となります。
この場合も念のためサーバー会社にお問い合わせください。
可能であれば念のため定期的にデータファイルをダウンロードされることをおすすめします。
ぷららホームページサーバーで「Fatal error」 が出る(ぷららは設置不可です)
結論から申しますとぷららホームページサーバーでは動作しません。以下のようなエラーが出るはずです。Fatal error: Call to undefined function mb_convert_encoding() in ○○○
これは「mb_convert_encoding」関数がないよーというエラーで、
及び
Warning: date() [function.date]: It is not safe to rely on the system's timezone settings.
も出ます。これはタイムゾーンが設定されてませんよーのエラーになります。タイムゾーンは解決可能ですが、上記mb_convert_encoding関数はどうしようもありません。そのため、ぷららでは使用不可です。ぷららにも問い合わせましたが、正式に回答をいただいてますのでご参考まで
--------------------------------------------------------
恐れながら、弊社ユーザーCGIサーバーは「mb_convert_encoding」の関数に対応をしておりません。
また、現時点で今後対応の予定はございません。
ご要望に沿えず申し訳ございませんが、ご利用可能な範囲にてユーザー
CGIをご利用くださいますよう、お願い申し上げます。
--------------------------------------------------------
mb_convert_encoding関数は文字コードを変換する関数ですが、メールフォームにかぎらずPHPプログラムでは非常に良く使われるメジャーな関数です。
Yahoo、ぷららに限らずプロバイダ系全般に言えますが、制限や特別な設定が必要だったりとトラブルが非常に多いです。
本職では無いのでしょうがない部分もありますが、プロバイダ系は基本的には動作しないものとお考えください。
なのでホームページサーバーとしては極力使うべきではありません。(と断言できます(笑)もう、ちょっと怒ってますw)
たくさんの不具合報告をいただいています。
本文入力箇所(エディタ機能)がうまく機能しないことがある
管理画面の注意事項の箇所にも掲載しておりますが、GoogleChromeでは1文字目のみ英字入力になる不具合有り、
スマホは文字装飾未対応です。
またWPなどでも言えることですが、
IEはこのエディタ機能とは特に相性が悪く、IEの新バージョンが出ると不具合が出る可能性もあります(過去にありました)
またブラウザの機能によりタグを生成させるため、たとえば、IEの場合には、pタグが挿入されますが、その他ブラウザの場合にはpタグが入らなかったり、divタグになったりもします。
また文字色もfontタグで入ることもありますし、spanタグで入ることもあります。
一番安定しているのはFirefoxです。おすすめですが、クライアントにまで強要するのは難しいかもしれませんね。
こういったことが煩わしい場合には設定ファイルでエディタ機能をOFFにされることをオススメします。
※ただし、途中で変更してしまうとそれまでの投稿データの編集で問題が発生しますのでご了承ください。(過去の記事を再編集しない場合はOKです)
記事登録時に「403 Error - Forbidden ※指定されたページ(URL)へのアクセスは禁止されています。」とエラーが表示されてしまう。(ロリポップ系、CPIなど)
管理画面で登録ボタンを押すとエラー表示される場合があります。これは主にロリポップ系、CPIなどに導入されている「WAF機能」による可能性が高いです。以下ページを参考にこの機能をOFFにしてみてください。
ロリポップの新機能「WAF機能」をOFFにする
投稿したものが文字化けする(主にファーストサーバ、CPI、WebArena(suiteX)など)
以下ページに掲載されているサーバーの場合にはそのままでは問題があります。内容は若干異なりますが、対応方法はおなじになりますので、ご参考の上でご対応下さい。
https://www.php-factory.net/cms/detail.php?id=6
本文内の特定の文字が文字化けする
2015/11/12のアップデートで修正いたしました。詳細は「更新履歴」の「2015.11.12 v1.0.2アップデート実施」をご参照下さい。
すでに導入中の方で2015/11/12以前にダウンロードされた方は、大変お手数ですが、「更新履歴」の「2015.11.12 v1.0.2アップデート実施」の箇所を参考にパッチファイルにて修正いただきますようお願い致します。
画像アップ時のメモリ不足によるアップ失敗
(Fatal error: Allowed memory size of ●● bytes exhausted)
このプログラムは画像アップ時に設定ファイルで設定したサイズに自動で縮小されますが、この処理は比較的大きなメモリを消費します。
要するにサーバーのPCスペックに依存する部分になります。
(経験上、安い(PCスペックが低い)サーバーの場合に発生する可能性が高い問題であり、エックスサーバーなど中程度以上のサーバーであれば基本的には発生しません)
解決策としては、以下3パターンがあります
1,メモリの上限を上げる
これができるかどうかは微妙ですが、
PHPの設定で一応上げることができます。
※ただし、経験上この設定は無視される可能性があります。
(サーバー側が許可していない、またはそもそもPCのスペックが低いなど)
以下ページに変更方法を記載しておりますのでご参考下さい。
http://www.php-factory.net/trivia/05.php
2,縮小サイズを大きく設定する
デフォルトでは600pxに設定していますが、
これをたとえば1000pxなどでお試しいただく。
縮小率が高いほどメモリを消費します。
例 2000px → 1000pxへの縮小よりも2000px → 600pxの縮小のほうがメモリを多く食う。
逆にこれで解決した場合には、
メモリが原因だったということになります。
ちなみにですが、このプログラムは設定ファイルで設定したサイズよりも大きい場合にのみ縮小処理が実施されますので、
たとえば設定サイズを適当に10000とか現実的にありえない値に設定しておけば縮小処理を無効化することが出来ます。場合によってはこれで回避するということも考えられます。が、表示側ページが重くて大変かもしれません。。。
3,事前に縮小する
この場合、根本的な解決とはなりませんが、
サーバー移転が難しい場合には、
また上記の設定でうまくいかない場合には、
残念ながらこれしか選択肢は無いと思います。
ちなみに画像の縮小には「縮小専用」というフリーソフトがオススメではあります。ドラッグ&ドロップするだけで複数の画像ファイルを設定したサイズに一括(かつ一瞬)で縮小してくれます。
縮小するだけのことでわざわざPhotoshopなどを使うのは効率が悪いですからね。(クライアントが持っていない可能性も高いですし)
スマホで管理画面での本文の更新ができない
まずそもそもとなりますが、スマホでの更新は想定しておりません。また動作確認などもほぼ行なっておりませんので
基本的にはPCで更新作業を行なって下さい。
どうしてもスマホで更新したい場合でも文字装飾機能がONの場合、スマホは本文の編集が出来ません。これは文字装飾機能(エディタ機能)がスマホ未対応のためです。
そのためスマホで更新する場合には文字装飾機能をOFFにする必要があります。(設定ファイルでON、OFF可能です)
ただし、運用当初は文字装飾機能をONで運用していた場合で途中で文字装飾機能をOFFにしてしまうと、それまでの投稿を編集する際にhtmlタグなどが混じった状態となってしまうため、
現実的に記事を更新することができなくなってしまいます。(過去の投稿を編集しない場合はOKですが)
そのため現実的には途中での変更はできませんので、文字装飾機能を使うかどうかは最初に決定して下さい。
トップページや一覧ページで改行やhtmlが無効になる ※改行やHTMLタグを反映したい
デフォルトでは本文の抜粋部分はスペース的な都合や見た目のスマートさなどを考慮し、改行やHTMLタグなどをあえて削除した状態で表示しています。
ただ、これは簡単に変更可能としています。
top-umekomi.php、news.phpともソースコードの上部に「本文を抜粋表示する場合の表示文字数」という設定箇所がありますので探して下さい。コメントにもありますが、これを「0」とするだけです。
ただこの場合、すべての文章が表示されることになりますのでレイアウトや見た目に影響が出る可能性がありますので状況に応じて使用下さい。
「Warning: uniqid() expects at least 1 parameter, 0 given in ・・・」と表示される。
これはPHP4などの古いバージョンの場合に考えられる症状です。
エラーの内容は関数に「引数を設定していない」ということです。
ただ本来は引数は不要なはずで
公式サイトでも省略できることしか書いておらず、問題が起きるようなことには一切触れられていないため、なぜ必要なのかが謎ですが、
とにかく引数を付ければ解決します。
対象ファイル
※以下5ファイルです。
news-detail.php
admin/complete.php
admin/del.php
admin/edit.php
admin/include/function.php
これらを開き、ファイル内検索で「uniqid()」を検索して下さい。
※いずれのファイルも1箇所だけです。
これを以下に書き換えて下さい。
uniqid(1)
数字は何でもOKです。
要するに引数を付ければいいだけです。
こちらでお試し下さい。
ちなみにですが、uniqidを使っている理由はアップした画像ファイルを変更した場合にブラウザのキャッシュによって変更が反映されないことがあるため、その対策です。
なのでシステム上必須のものではありませんので削除してしまってもOKです。(あえてキャッシュさせたい場合など)
以上です。
画像を含む投稿時に「Warning: exif_read_data(●●)」と表示される。
iPhoneで撮影した写真の場合、縦写真が横写真として保存されてしまう場合があり、
その対策として、画像を回転させる処理を実装していますが、
その処理部分でエラーが出てしまっています。
極稀にサーバーによっては実行に必要な関数が存在しないことがあり、
その場合にエラーとなってしまいますので、この処理を無効化することで対処可能です。
対象ファイル:admin/put.php
修正箇所:171行目付近の以下の箇所
//画像の回転(iPhoneの縦写真が横写真として保存されてしまう問題の対策)
if(function_exists('exif_read_data') && function_exists('imagerotate')){
$exif_datas = exif_read_data($_FILES['data']['tmp_name']['upfile'][$key]);
if(isset($exif_datas['Orientation'])){
if($exif_datas['Orientation'] == 6){
$image = imagerotate($image, 270, 0);
}elseif($exif_datas['Orientation'] == 3){
$image = imagerotate($image, 180, 0);
}
}
}
こちらをまるっと削除すればOKです。
またはすべての行の先頭にスラッシュ2つ「//」を入れるか、CSSと同じように/*と*/ですべてを囲んでコメントアウトしてもOKです。
以上です。
プログラムの不具合等でデータが消えてしまうことはない?
プログラムのバグなどによってデータが消えてしまうようなことはシステムの仕様上ありえないです。
これはプログラムの性質上、最も優先すべきものでもありますので必要十分な検証と致命的な不具合が絶対に起きないような設計を行なっています。
また配布してからこれまで相当な期間が経過しておりますが、
そういった報告は一度も届いておりません。
私自身も受託開発案件の仕様によってはこのプログラムをベースにすることが多いためヘビーユーザーでもあります。
それでも万が一そういった致命的な不具合が発生した場合でも対処できるようデータファイルの自動バックアップ機能も付けていますので万全を期しています。
※デフォルトはOFF。ONにすることを推奨します。設定ファイル(config.php)で簡単に設定できます。
ただ、それでも唯一発生することが考えられる状況があります。それは複数人で同時に管理画面で更新作業を行うようなケースです。
データの保存方法はテキストファイルでの保存形式を採用していますが、
ファイル書き込み処理がまったく同時に行われてしまうとデータ損失する可能性が理屈上は一応あります。(マイクロ秒単位で同時など)
これはファイルオープンとファイルロックの処理の間にはどうしても極々わずかな隙(タイムラグ)が出来てしまうためですが、
そのタイムラグは一瞬(マイクロ秒単位)ですので、発生する可能性は限りなく低いです。(100万分の1秒単位で同時に更新した場合などに限られる)
それでもできる限り特定の人間のみが更新したほうがより安全と言えます。(更新する人数が増えるほどリスクは高まる)
ちなみにですが、複数人で更新するリスクはこの他にもあります。(むしろこちらは普通に発生すると思います)
たとえば特定の記事を二人で同時に更新している場合をイメージすればわかりやすいと思います。
一人目が編集画面を開いて文字を修正しています。その間に二人目が同じく編集ページに入って文字を修正します。
この時点でピンと来るかと思いますが、この段階で一人目が保存ボタンで保存して、二人目が同じく保存ボタンを押して保存したとします。
この時点で一人目の作業は無かったことになってしまいます。
一人目は当然文字を修正したものと思っていますが、実際には変更されていません。
これはいわゆるデグリ(先祖返り)です。
こういったリスクもあるので、
管理画面での更新作業はできる限り一人が行うべきでもあります。
1サイトに複数設置した場合に一度ログインすると他の管理画面にもログインできてしまう
同じサイト内に複数設置した場合で管理画面も複数に分けている場合、どれかにログインすれば、他の管理画面にも認証無しでログイン出来ます。
これはセッションの標準の性質であり、正常な動作ではあります。
またこれによって何らかの問題が起こるということも通常はないと思います。
そのサイトの管理者は通常は同じ人間と考えられるためです。(または少なくとも身内ではあるでしょう)
そのためそういった仕様でないと、管理画面ごとにログイン認証が必要になるため、むしろ面倒であるとも言えます。
ただ、たとえば管理画面ごとに担当者がいる場合でかつ担当以外の管理画面にはアクセスされては困るという場合には
以下手順の通り、セッション名を変更することで対応可能です。
1,以下ファイルを開いて下さい。
admin/include/admin_inc.php
2,セッション名を変更する。
以下記述部分を見つけて下さい。(1箇所しかないのですぐに見つかります)
session_name('PKOBO_NEWS01_CMS_SYSTEM');
こちらの「PKOBO_NEWS01_CMS_SYSTEM」部分を適当に変えて下さい。
例
session_name('PKOBO_NEWS01_CMS_SYSTEM2');
※末尾に2を追加しただけです。(半角英数字のみ使用可能)
セッション名が異なることでセッションが維持されなくなりますので、
これで意図していることが実現できます。
以上。
ただし、2017.05.25のアップデートでセッション名を追加しましたので、それ以前のプログラムの場合にはセッション名の記述はありません。その場合は上記セッション名「session_name('PKOBO_NEWS01_CMS_SYSTEM');」の記述をそのままコピペ下さい。
投稿時や編集時に「ページ遷移エラー(トークン)」が表示される
「ページ遷移エラー(トークン)」はCSRF対策のために実装しているセキュリティ上必要なワンタイムトークンが働いた場合に表示されるものですが、
以下のような条件でも表示されることがあります。
※ただ通常の操作では基本的には表示されることはありません。
表示される例としてはたとえば、
新規登録時であれば、
投稿内容の入力
→保存
→ブラウザの戻るボタン
→保存
のようなページ遷移で発生します。
投稿記事の再編集でも同じことが起きます。
または投稿画面を開いた状態で他のタブであらたに同じ投稿画面を開いた場合で、
初めに開いていたページで登録すると同じくページ遷移エラー(トークン)となります。
これは同じブラウザで同じページを2つ以上開いてしまうとトークン用のセッションが上書きされて書き換わってしまうためであり、正常な動作です。
またその他考えられることとしては、
セッションがタイムアウトした場合です。
たとえば投稿画面を開きっぱなしにして相当な時間が経過していると
セッションがタイムアウトして切れてしまい、結果エラーとなる可能性もあります。
※PHPのセッションはデフォルトでは約24分でかつ100分の1の確率でセッションが切れます。(分母はsession_start()が呼ばれた数)
※これは確率的には相当低いため、発生することはまずないでしょう。
こういった理由から通常の操作で表示されることはまずありませんので、
たまたまそういった操作を行ったということだと思います。
2021/04/15追記
ブラウザがChromeの場合でかつ特定のプラグインを導入している場合に、この症状が出るという報告がありました。
プログラム側では対処不可能ですので、ブラウザを変えるかプラグインをOFFにしていただくしかありません。
PHPのバージョンが7.4以降で登録時に「Deprecated・・・get_magic_quotes_gpc()」のエラーが表示される
配布版のプログラムではすでに修正済ですので、2021/06/23以降にダウンロードされたプログラムは無関係です。
【原因】
PHPのバージョンが7.4以降の場合、get_magic_quotes_gpc()関数が非推奨となったため、環境によっては管理画面での登録時にDeprecatedエラーが表示される場合があります。
【解決方法】
以下のファイルをエディタソフトなどで開いて下さい。
pkobo_news/admin/include/admin_function.php
こちらの229行目付近の以下の1行を削除して下さい。削除しても機能には影響ありません。
if (get_magic_quotes_gpc()) $str = stripslashes($str);
これでエラー表示が消えるはずですので確認して下さい。
get_magic_quotes_gpc()関数はmagic_quotes_gpcという設定がONかどうかチェックするためのものですが、
「magic_quotes_gpc」自体はPHP5.4で完全廃止されたため、本来は不要な記述ですが、古いバージョンでの利用も考慮し念の為に残していました。
ですので、PHP5以上であれば不要な機能なので削除して構わないのです。
カスタマイズ関連
本文入力箇所の文字装飾機能を解除(無効に)したい
設定ファイル(config.php)にてON、OFFが可能です。
※ただし、当初は文字装飾機能をONの状態で運用していて、途中でOFFに変更してしまうとそれまでの投稿データの編集で問題が発生しますのでご注意ください。(過去の記事を再編集しない場合はOKです)
※文字装飾機能はhtmlを出力することによって実現しているため、過去のデータにはhtmlタグが含まれており、そのhtmlタグがそのまま表示されてしまうわけです。
日付とタイトルを改行して表示したい
HTML、CSSをある程度理解されていることが前提となりますが、まずはブラウザで表示ページのソースコードを表示させてみて下さい。どのようなデザイン、レイアウトでも可能なように細かくclassを振っていますので、基本的にはどのような見た目にもできます。
CSSでdisplay:blockとしてもいいでしょうし、表示側ファイルのHTMLを直接編集して改行タグを入れても良いでしょう。いずれにしましても見た目の調整についてはご自身で行なっていただく必要があります。または有償にて対応致しますのでご相談下さい
本文内のPDF、エクセル、ワードファイルなどのアップ時にアイコンを表示させたい
対応しています。まずデフォルトではPDFをアップしますと本文内に「PDFファイル」という文字列が表示され、それにリンク設定されますが、この文字列はファイルの種類ごとに設定ファイルconfig.phpで指定されています。この文字列をimgタグにされれば実現できます。
config.phpの161行目付近で指定できます。アイコン画像はご自身でご用意下さい。(imgタグのパスは設定ファイルからの相対パスではなく、あくまでも表示ファイルからの相対パスとして下さい。もちろん絶対パスでもOKです)
詳細ページへのリンクを解除したい(一覧部分に全部表示させたい)【ソース有】
対応可能です。
ただし、デメリットして本文内の画像は表示できなくなります。(1枚目のみサムネイルで表示されます)
そのため複数の画像をアップする可能性がある場合には対応できませんのでご了承下さい。
本文、画像とも詳細ページのようにすべて表示できる方法を掲載しました。
これをされたい主な理由はおそらく詳細ページで表示するのではなく、一覧ページ内にすべて表示したい場合だと思います。
また抜粋本文についても抜粋解除が行えますので、文字装飾を維持したまま全文表示とすることができます。(抜粋解除方法は下記を参照下さい)
手順
1,本文抜粋を解除して下さい。
抜粋解除方法はtop-umekomi.php、news.phpとも「本文を抜粋表示する場合の表示文字数」という設定箇所がありますので探して下さい。コメントにもありますが、これを「0」とするだけです。
※これを行いませんと改行なども反映されませんので必ず設定下さい。
2,表示側に以下の記述がありますので探して下さい。
タイトルを表示する部分ですね。(top-umekomi.php、news.phpとも同じ記述です)
3,こちらを以下にして下さい。
これを行なっても直リンクや直ファイルの場合には正常にリンクされますので問題ありません。
あくまでも詳細ページへのリンクのみが解除されます。
4,top-umekomi.php、またはnews.phpの下記の記述を探して下さい。(top-umekomi.php、news.phpとも同じ記述です)
<?php if($data['newmark'] == 1) echo ' <span class="newMark">New!</span>';//New表示。タグ変更可(表示期間は設定ファイルで)?>
この下に以下をまるっとコピペ下さい。
5,元々のサムネイル表示とコメント表示を削除する
<!-- サムネイルと本文表示(不要な場合削除OK)-->
から
<!-- /サムネイルと本文表示(不要な場合削除OK)-->
までをまるっと削除して下さい。
以上、これだけです。
必要に応じてCSSなどで適宜調整下さい。
※ソースを表示すればセレクタなどを確認できます。
基本的にはCSSの調整だけでいかようもできます。
以上。
カテゴリアイコンをカテゴリごとにスタイルを変更したい
デフォルトで対応可能です。タイトル部分は以下のようなタグになっています。(ソースを表示すれば確認できます)
<li id="postID_48" class="cat-0 clearfix">
class属性の「cat-0」の「0」がカテゴリ番号になります。
この場合、設定ファイルでの1番目のものですね。
「cat-1」が2番めのカテゴリになります。
これをセレクタとして利用すればCSSでいかようにもできますね。
また属性やclassの追加についても問題ありません。
表示側のソースコードは自由に変更いただけますので、
該当箇所に追記すればOKです。
※ファイル内にコメントにて説明もありますのでご参考下さい。
HTML、CSSはシステムには直接影響しませんので、自由に設定いただけます。
この<li>タグも含めclassやIDを予め多く振っているのは、
あくまでもそれを利用して様々なレイアウトに対応するためになります。
一覧部分でサムネイル画像が無い場合に「No Photo」等の画像を表示したい【ソース有】
デフォルトで可能です。まずデフォルトではサムネイルが無い場合でもレイアウトを統一させるため、あえて空白を入れてありますが、これは表示側のファイル内で全角スペースを入れているだけです。(実際にはCSSでサイズ指定してます)
この空白部分をimgタグにすればOKです。
具体的にはたとえばtop-umekomi.phpでは以下の部分でサムネイルを表示していますが
ここの
dspThumb($data,100) : ' 'を
dspThumb($data,100) : '<img src="200-150-non.png" width="100" />'
にするだけです。(まぁコメントでも書いていますが)
画像のパス、サイズは環境に合わせて変更下さい。
一覧ページ(news.php)でも同じ記述部分を同じように変更するだけです。
サンプルデモにも反映していますので必要に応じてご参考下さい。
カテゴリナビゲーションを設置したい(カテゴリごとに抽出表示したい)【ソース有】
以下の記述を任意の箇所にコピペするだけでOKです。
すべてのカテゴリのナビゲーションが表示されます。
ナビゲーションのリンク先では選択したカテゴリの記事のみが表示されます。
HTMLタグ部分は自由に変更下さい。
※news.phpまたはtop-umekomi.phpで有効。
詳細ページにも表示したい場合には、「href="?」の箇所でリンク先のファイル名を指定して下さい。
例 <p><a href="news.php?cat=<?php echo $key;?>"><?php echo $val;?></a></p>
管理画面の一覧ページでカテゴリも表示したい【ソース有】
admin/index.phpのソースの下の方にあるヘッダ部に
<th>カテゴリ</th> (例 <th>タイトル</th>の下など)
を追加し、その下側に追加したヘッダ部と列を合わせる形で以下をコピペすればOKです。
1ページに複数のカテゴリを分けて表示したい(実装方法あり)
たとえば、新着情報とイベントを1ページに表示したい場合などです。
実現方法はiframeで表示する方法と直接埋め込み型で表示する方法の2パターンがあります。
ご希望の方法に合わせて以下をご参考下さい。
1,iframeで実現する方法
こちらはデフォルトで対応していますので至って簡単です。
URLパラメータによって表示するカテゴリを指定できますので、
これを利用します。
例(カテゴリ1のみ表示)
<iframe src="top-umekomi.php?cat=0" width="700" height="300" frameborder="0" scrolling="auto"></iframe>
URLパラメータのcat=0の「0」の部分がカテゴリ番号です。表示したいカテゴリ番号を指定して下さい。
※カテゴリ番号は設定ファイルでの順番ですが、0から始まることにご注意下さい。
このiframeタグを表示したい箇所に記述(コピペOK)するだけです。(2箇所でも3箇所でもOKです)
2,直接埋込み型で実現する方法
※ただし、これはトップページへの埋め込み用のファイル(top-umekomi.php)のみ有効な方法です。
一覧ページ用のnews.phpはそもそもページングが絡むため、この方法では実現できませんのでご注意下さい。
もしどうしても一覧ページに導入したい場合は上記1,のiframeでしか対応できません。
以下の2手順で実現できます。
手順1,top-umekomi.phpをエディタで開き以下の記述を探して下さい。
(1箇所しかありませんのでファイル内検索すればすぐに見つかります)
getLines2DspData($file_path,$img_updir,$config,'',$category)
こちらの「$category」の部分が表示するカテゴリを指定するものとなりますので、
こちらに表示したいカテゴリ番号を直接指定して下さい。(とりあえずは0とでもしておいて下さい)
例 getLines2DspData($file_path,$img_updir,$config,'',0)
※「0」の部分がカテゴリ番号です。カテゴリ番号は設定ファイルでの順番ですが、0から始まることにご注意下さい。
手順2,以下のコメント部分をまるっとコピペして下さい。(上下のコメントごとでOKです)
<!--▼▼トップページ埋め込み時はここから以下をコピーして任意の場所に貼り付けてください▼▼-->
ここはPHPやhtmlのソースです。
<!--▲▲トップページ埋め込み時 コピーここまで▲▲-->
コピペしたら、1,で行なったことと同じように以下の記述のカテゴリ指定部分の数字を変更して下さい。
getLines2DspData($file_path,$img_updir,$config,'',0)
たとえば1ページでカテゴリ1番目と2番目を表示したい場合は
1箇所目が
getLines2DspData($file_path,$img_updir,$config,'',0)
2箇所目が
getLines2DspData($file_path,$img_updir,$config,'',1)
とするだけですね。
以上、これだけです。
尚、コピペした場合、当然
<div id="newsWrap">や<ul id="newsList">のID属性が重複してしまうため、
適宜変更して下さい。(まぁ重複していても基本的には問題ないんですが本来はNGですので)
念のため必ず動作確認を行なって問題のないことを確認して下さい。
このとおりにやってもどうしても実現できない場合は遠慮なくご相談下さい。
SNSのボタンを各記事に付けたい(Facebookの「いいね!」や、twitterのツイートボタンなど)
可能です。詳細ページ用のファイル
news-detail.php
の任意の箇所に各SNS側が発行しているSNSボタン用のタグをコピペするだけです。
SNSボタンのコピペ用のタグはURLを指定しなければ、基本的に現在表示中のURLが自動設定されますのでこれを利用します。
当サイトの各ページの右上にあるSNSボタンもURLは指定してませんので、ご参考いただければと思います。
タイトルのみに設定されているリンクをliタグなど全体を囲みたい【ソース有】
以下手順にて対応可能です。
※これを実施してもタイトルのみの入力の場合はリンクタグは出力されませんのでご安心下さい。
※top-umekomi.php、news.phpとも同じ対応で実現可能です。
1,top-umekomi.php(またはnews.php)の<li>タグ(開始タグ)の直前(上)に以下の記述をコピペ下さい。
2,top-umekomi.php(またはnews.php)の</li>タグ(閉じタグ)の直後(下)に以下の記述をコピペ下さい。
これでliタグ全体がaタグで囲まれます。
3,このままだと同じリンクタグが入れ子で2つ存在してしまう状態となってしまい、よろしくないので
以下の記述を探して下さい。(1箇所しかありません)
<?php echo $data['title'];//タイトル表示?>
↓ こちらを以下のように変更してください。( title → title_text とするだけです。)
<?php echo $data['title_text'];//タイトル表示?>
以上。
問題がないかどうかソースなどを確認の上で十分にご確認下さい。
liタグがaタグで囲まれていて、正常にリンクできていればOKです。
尚、リンクタグの挿入箇所は特に制限はありませんので、liタグの外側でなくても構いません。(内側でもOK)
サムネイルに対してもリンクを設定したい【ソース有】
デフォルトではタイトルだけにリンク設定がされますが、サムネイルにも同じリンクを設定されたい場合ですね。
↑の全体にリンクする方法と基本的にはまったく同じです。
(↑の全体を囲む方法のほうが良い場合もありますので、どちらかを選択して下さい)
以下手順にて対応可能です。
※これを実施してもタイトルのみの入力の場合はリンクタグは出力されませんのでご安心下さい。
※top-umekomi.php、news.phpとも同じ対応で実現可能です。
1,top-umekomi.php(またはnews.php)の以下の箇所を探して下さい。
<?php echo (dspThumb($data)) ? dspThumb($data,100) : ' ';//サムネイル表示・・・長いので省略)?>
これの前と後に以下タグをそれぞれコピペするだけです。(挟むわけです)
前に以下をコピペして下さい。(aタグの開始タグが出力されます)
後に以下をコピペして下さい。(aタグの終了タグが出力されます)
以上。
サムネイル用の画像をアップしていない場合で、
かつアップ画像が無い場合に表示する画像(NoPhotoなど)も指定していない場合、
_のような文字が表示されてしまいますが、これは全角スペースがあるためとなります。
これを回避したい場合は、画像がアップされていない場合に表示する画像を指定するか、
(コメントでも書いていますが、dspThumb($data,100) : ' ' の部分の後ろの' 'の箇所が画像がアップされていない場合に表示される内容です。
ここにたとえば「NoPhoto」などと書いた画像ファイルのパスを指定すればOKです)
または
dspThumb($data,100) : ' '
の' 'を''として下さい。(スペースを削除する)
詳細ページでもカテゴリ名を表示したい【ソース有】
news-detail.phpに以下の記述をコピペすればカテゴリ名が表示されますのでお好きなところにコピペ下さい。
<?php echo h($dataArr['category']);?>
詳細ページで表示したカテゴリ名に各カテゴリ一覧へのリンクを設定したい【ソース有】
news-detail.phpに以下の記述をコピペすればカテゴリ名が表示されますのでお好きなところにコピペ下さい。
<a href="news.php?cat=<?php echo h($dataArr['categoryNum']);?>"><?php echo h($dataArr['category']);?></a>
※もしnews.phpのファイル名を変更していたり、階層が異なる場所に置いている場合は当然リンク先を適宜変更して下さい。
詳細ページをデフォルトのポップアップで開いている場合は
「target="_blank"」を付けたほうが良いでしょう。
一覧ページ(news.php)でカテゴリ名をページタイトルとして表示したい【ソース有】
これは主に一覧ページ(news.php)をカテゴリごとに分けて表示している場合用です。
以下の記述を表示したい場所にコピペするだけです。
これでカテゴリ名が表示されます。
※カテゴリの絞り込みはデフォルトではURLパラメータ、またはファイル内で直接指定の2パターンありますので状況に合わせてコピペ下さい。
URLパラメータでカテゴリを分けている場合
<?php echo (isset($_GET['cat'])) ? $categoryArr[h($_GET['cat'])] : '';?>
ファイル内で直接指定している場合(カテゴリごとにファイルを分けている場合など)
<?php echo ($category != '') ? $categoryArr[$category] : '';?>
以上です。
詳細ページの画像ファイルに画像ファイル自身へのリンクを設定したい(拡大表示など)【ソース有】
lightboxなどで画像を拡大表示したい場合など
画像にその画像自身へのリンクを設定したい場合は
以下をご参考下さい。
詳細ページ用のファイル「news-detail.php」内の以下の箇所(1箇所しかありません)
$upfileTag = '<img src="'.$dataArr['upfile_path'][$i].'?'.uniqid().'" />';//画像の場合のタグ
こちらを以下に変更して下さい。
$upfileTag = '<a href="'.$dataArr['upfile_path'][$i].'" target="_blank"><img src="'.$dataArr['upfile_path'][$i].'?'.uniqid().'" /></a>';//画像の場合のタグ
これで以下のようなタグになります。
<a href="画像のパス" target="_blank"><img src="画像のパス"></a>
※target属性はあくまでも必要に応じてです。
lightbox等の場合、特定の属性を追加する必要がありますが、
このaタグ部分に追加すればOKですね。
以上です。
未来日付の表示予約機能を無効化したい(未来の日付でも表示したい場合)
pkobo_news/admin/include/function.php の117行目付近の以下の箇所
※function.php内で1箇所しかありませんので検索すれば見つかります。
if($linesArray[7] == 1 && strtotime($linesArray[1]) <= strtotime(date('Y-m-d'))){//公開設定でかつ未来日付ではない場合のみ
↓以下として下さい。
if($linesArray[7] == 1){//公開設定でかつ未来日付ではない場合のみ
※「 && strtotime($linesArray[1]) <= strtotime(date('Y-m-d'))」部分を削除するだけです。
これで登録日に関係なく常に表示されるようになります。
トップページと一覧ページの設置階層を変えたい場合
トップページを一番上の階層、一覧ページをたとえば「news/」などのディレクトリに入れたい場合などです。
詳細ページへのパスは設定ファイル(config.php)で定義されていて、トップページと一覧ページで共通となっているため、
こういった場合にはトップページ側に以下の記述を追加することで実現出来ます。
※記述場所は上部であればどこでもOKですが「▽オプション設定▽」の上あたりでOKです。
$config['detailFilePath'] = 'news/news-detail.php';
尚、一覧ページ、詳細ページを別階層に設置する場合、
これらのファイル上部にある2箇所のパス部分も変更する必要があります。
※変更しないと表示されないのですぐに気付けると思います。
以下の記述です。
※pkobo_news/ディレクトリをnews/内に入れている場合は不要です。
include_once("./pkobo_news/admin/include/config.php");//(必要に応じてパスは適宜変更下さい)
$img_updir = './pkobo_news/upload';//画像保存パス(必要に応じてパスは適宜変更下さい)
アドバイス、仕様についてなど
管理画面内の「サーバー情報確認」のナビを非表示にしたい
設定ファイルでOFFにできます。(ただし2015.09.08以降ダウンロード分から)このサーバー情報はあくまでも設置者用のものになりますので、クライアントへ納品後などは非表示にされたいなどがあるかもしれません。(クライアントに突っ込まれても面倒かと思いますし)その場合には設定ファイルでOFFにして下さい。
config.php内の「管理画面ヘッダ部の「サーバー情報確認」のナビを表示する(0=しない、1=する)」となっている箇所です。
2015.09.08以前にダウンロードされた方で設定ファイル内に設定箇所が無い場合には、該当ページをエディタで開いて該当箇所を削除されるかCSSで非表示にするなどで対応下さい。
SSLで表示したい
もちろん対応しています。WPなどのようにややこしいことは一切ありませんので安心して下さい。
特に意識する必要すらありません。表示側、管理画面側ともSSLでそのまま問題なく表示できます。https経由でアクセスするだけです。
※非SSLのhttp通信による外部ファイルの参照などは一切行なっておりません。
また投稿記事内にアップした画像やPDFなどのファイルのパスはすべて相対パスとなっていますので、
非SSL環境からSSL環境に変わったとしてもまったく問題ありませんし、もしドメインが変わったとしても問題ありません。
(いずれも意識する必要すらありません)
※このあたりがWPとは大きく異なる部分でもあります。
尚、SSL自体の導入などはご自身にて対応下さい。(SSL自体はPHPとは直接関連がありません)
サーバーを引っ越し(移転)したい
至って簡単です。WPのようにややこしいことは一切ありませんので安心して下さい。
すべてのファイルをダウンロードしてそのまま新サーバーにアップするだけです。
サーバーによっては稀にファイル保存ディレクトリやデータファイルのパーミッション変更が必要な場合もありますが、その場合には管理画面内に赤字で警告が出るようになっていますので、
管理画面にログインすることですぐに分かります。
何も警告が出ず、投稿なども問題なくできていれば引っ越しは完了です。
※警告が出た場合はそのメッセージのとおりにパーミッションを変更すればOKです。
また投稿記事内にアップした画像やPDFなどのファイルのパスはすべて相対パスとなっていますので、
非SSL環境からSSL環境に変わったとしてもまったく問題ありませんし、もしドメインが変わったとしても問題ありません。
(いずれも意識する必要すらありません)
ただし、PHP環境も変わりますので必ず事前に設置&動作確認を実施して下さい。
管理画面の登録年月日の西暦のプルダウンが翌年までしか表示されていない
登録年月日の西暦のプルダウンは2007年から翌年までの西暦が自動で反映されるようになっているため翌年以降も問題ありません。
(意識する必要はありません)
尚、スタートの西暦を2007年よりも後としたい場合は
include/admin_function.php
の以下の箇所を変更すればOKです。(ファイル内に1箇所しかありませんので検索すれば見つかります)
$start = 2007;
YouTubeやVimeoなどを表示するため埋め込みコードを登録したい
標準で対応しています。本文入力欄の上部にある各アイコンの一番右端のHTML編集モードにした上で埋め込みコードをコピペするだけです。
表示順を逆にしたい(古いものが上にくるようにしたい)
以下手順で可能です。
管理画面側
以下ファイルを開き
admin/include/admin_function.php
以下の箇所を探して下さい。
※1箇所しないため検索すればすぐに見つかります。
array_multisort($index,SORT_DESC,SORT_NUMERIC,$index2,SORT_ASC,SORT_NUMERIC,$lines);
↓
array_multisort($index,SORT_ASC,SORT_NUMERIC,$index2,SORT_ASC,SORT_NUMERIC,$lines);
とするだけです。
$index,SORT_DESC → $index,SORT_ASC
としただけです。
表示側
以下ファイルを開き
admin/include/function.php
以下の箇所を探して下さい。
※1箇所しないため検索すればすぐに見つかります。
array_multisort($index,SORT_DESC,SORT_NUMERIC,$index2,SORT_ASC,SORT_NUMERIC,$linesTempArray);
↓
array_multisort($index,SORT_ASC,SORT_NUMERIC,$index2,SORT_ASC,SORT_NUMERIC,$linesTempArray);
とするだけです。
管理画面側と同じく
$index,SORT_DESC → $index,SORT_ASC
としただけです。
※その他のカスタマイズが必要な場合にはご相談下さい。別途お見積もりさせていただきます。
ご利用について
HTMLやCSSなどをある程度理解されている方を対象としています。
設置、カスタマイズ方法などのサポートは行っておりませんのでご了承ください。
設置法、HTMLタグ、CSS等に関するサポートは申し訳ありませんが有料にて承ります。
カスタマイズについてもすべてお見積りの上で有償対応となります。
もちろん不具合などがありましたら遠慮なく何でもご相談ください。
不具合などのお問い合せはこちら
有料サポートはこちら
ご利用規約
・無料版プログラムはフリーウェアです。ただし、著作権は放棄するものではありません。
・プログラムの著作権表示リンク(ページ下部にある当サイトへのリンク)を無断で削除することはできません。
(一律2,000円+消費税の削除依頼をいただいた場合を除く)
・プログラムの再配布、再販売は禁止です。
※ただしクライアントへの納品などでシステム費用、設置費用として請求されるのは問題ありません。
・プログラムによって何らかの不利益、損害が生じても一切の責任を負いません。
あらかじめご了承の上ご使用ください。
もし何らかのトラブルがあった場合には、ご相談いただければ解決策が見つかるかもしれません。
(クライアントへの原因の説明など)
・プログラムは全ての環境(サーバー)での動作を保証するものではありません。
・改変等は自由ですが、自己責任でお願いします。
・有料版をご購入いただいた場合、初期不良を除き、ご使用後の返金には応じ兼ねます。
・有料版(著作権リンク削除含む)は1サイト(同一ドメイン)内であれば複製の上で複数利用可能です。
2サイト目以降は都度サイトより購入申込みが必要になります。
※サブドメインはその性質上、別サイト(別ドメイン)とみなします。
ダウンロードいただいた時点で利用規約に同意したものとみなされます。
カスタマイズ、設置代行について
どのようなカスタマイズでもまずはお気軽にご相談下さい。お見積りをお出しします。
設置のご依頼・カスタマイズお見積もりの詳細はこちらです
IE(InternetExplorer)以外のブラウザの推奨
あくまでも文字装飾機能を使う場合のみの限定ですが(設定ファイルでOFFにできます)
IEは今も昔も変わらずブラウザとしては残念ながら他のブラウザに劣り、バージョンアップで新たな不具合が出ることもあります。またこの文字装飾機能のようなJavascriptとの相性が非常に悪いのも現実です。このあたりはWordPressでも何度も問題になっています。今後のIEのバージョンアップでも同様のことが起きる可能性もあります。(現在出ていないブラウザの検証は行えませんので)
もちろんクライアント的な問題も絡みますので現実的には難しいと思いますのであくまでも可能であればですが、
Firefox(最もおすすめ)、Chrome(1文字目が英字になる不具合あり)などIE以外のブラウザを使用されることをおすすめします。
実施しているセキュリティ対策について
当プログラムで行なっている対策をご紹介します。
一般的に考えうるリスクには対策を施しています。無料版だからこのぐらいでいいだろうというような妥協は一切していません。
注意事項(大前提としまして)
このシステムは管理者が更新を行うCMSシステムです。特定の人間(社内や管理者のみなど)のみが更新することを前提としています。不特定多数の人間が投稿できるような一般公開型の掲示板のような使用は絶対に行わないで下さい。
具体的な対策(この下に展開されます)
クロスサイト・スクリプティング対策(XSS)
表示側ではすべての表示要素に対してhtmlspecialcharsにて適切にエスケープ(サニタイズ)していますので、ページ上でHTMLタグ類が有効になることはありません。
唯一このシステムの都合上、本文入力欄のみHTMLを有効にする必要がありますので、この部分については、サニタイズを実施していません。
ただ、これはCMSの仕様上、管理者しか更新しないことを想定していますので、それが即問題となることではありませんし(管理者があえて閲覧者に危害を加えるようなものを記述することは無いと思いますので)、また下記「CSRF対策」も行なっていますので、問題ないと考えています。
クロスサイトリクエストフォージェリ対策(CSRFまたはXSRF)
投稿時、変更時、削除時ともワンタイムトークンにより、外部サイト経由でのCSRFを防止しています。
もちろん管理画面はそもそもログイン認証が必要なため、基本的にはそのようなことは発生しませんが、ログイン中のユーザーを悪意のある第三者が作成したページに誘導されてしまい任意のスクリプトを実行させることでデータ改ざんされてしまうというCSRFに対する対策になります。
またアップファイルは設定ファイルで指定したもののみ可能(ホワイトリスト式)となっていますので、PHPファイルやhtaccessなどがアップされてしまうこともありません。(逆に必要なファイル以外は許可しないで下さい)
またアップファイルは拡張子も含め強制的にリネームされますので、ファイル名による攻撃は完全に防ぎます。
ディレクトリトラバーサル対策
大前提としてアップファイルの元ファイル名は一切利用せず、すべて完全に一意のファイル名にリネームされ、ディレクトリを表すような文字列「/」や「..」などが有効になることはありません。また保存先も固定値としておりますので、意図しないディレクトリへのアップロードは出来ない設計になっています。(保存時は元ファイル名$_FILE[]['name']は使用していません「tmp_name」を使用しています)
またアップされるファイルの拡張子についても制限を設けています。(ホワイトリスト式で設定ファイルで設定可)また拡張子はシステム側で付与していますので、ファイル名で拡張子「.」が2つ以上になることもありません。(○○.php.jpgとされた場合にPHPコードが実行される脆弱性への対策など)
まぁそもそもCSRF(対策済)や管理画面がハックされない限り管理者が意図しないファイルをアップされるリスクはほぼありませんが、念には念の対策を行なっています。まぁ仮にハックされたとしても危ないファイルはアップできないためそもそもこの脆弱性自体は存在しないことになります。(管理画面がハックされた場合、当然記事を改ざんされるなどはあるかもしれませんが)
ログイン認証クラックの対策
ログインにはユーザーID、パスワードの入力が必要ですが、総当りされてしまうと現実的にはいつかは突破されるリスクがあります。そのためパスワードは出来る限り推測困難かつ長い文字列で設定することが最も重要な対策となりますが、ID、パスワードの入力ミスが特定回数連続で起こった場合には強制終了し、詳しい仕様はお伝えできませんが、総当りを連続で行えないような実装を行っています。
もしクライアントなど正規のユーザーが忘れてしまったなどでそういった事態に陥った場合には、設定ファイルでの正確なログイン情報を伝えて下さい。
またデータベースは使用していませんのでログイン情報はPHPファイル内にしか存在しないため漏洩のリスクは限りなく低いです。
(上記でも述べましたが、よりセキュリティを上げるため設定ファイルconfig.phpのパーミッションを444に設定下さい)
インジェクション対策
データベースは使用していないため基本的には問題ありませんが、セキュリティ上具体的には言えませんがパラメータは厳密にチェックしています。イレギュラーがあれば即強制終了します。まぁ個人情報を含むようなシステムではありませんのであえてこれを行うほど暇な人がいるとは思えませんが、念には念の対策を行なっています。
セキュリティには十分に配慮していますが、問題点などがございましたら遠慮なくご指摘いただけたらと思います。
旧ニュースプログラムからの移行について
申し訳ございませんが、旧プログラムとは互換性がなく、またデータ構造が変わるためそのまま移行することはできません。お手数ですが今一度管理画面よりご登録下さい。
更新履歴
2024/11/13 v1.0.5
画像をアップロードした際にサーバーによって「Deprecated: Implicit conversion from float・・・」が表示される問題の修正。admin/put.phpのみ修正。
既存のファイルを修正される場合はadmin/put.phpを開き、以下の記述を探してください。
※ファイル内で一箇所しかありませんのでファイル内検索ですぐに見つかります。
$new_image = ImageCreateTrueColor($new_width, $new_height);
この上に以下をコピペしてください。
以上、これだけでOKです。
2021/06/23 PHP8以上の場合にエラーとなる問題の修正
ただし、2021/06/23以前にダウンロードされた方が対象です。2021/06/23以降にダウンロードされた方は関係ありませんので無視して下さい。
【症状】
管理画面で投稿や編集の際にPHP7.4の場合は環境によってエラーが表示され、PHP8以上の環境では投稿や編集などが行えなくなります。(表示側には影響ありません)
【原因】
get_magic_quotes_gpc()関数がPHPバージョンが7.4で非推奨となり、PHP8以降では廃止となったため。
【解決方法】
以下のファイルをエディタソフトなどで開いて下さい。
pkobo_news/admin/include/admin_function.php
こちらの229行目付近の以下の1行を削除して下さい。削除しても機能には影響ありません。
※1箇所しかありませんのですぐに見つかります。
if (get_magic_quotes_gpc()) $str = stripslashes($str);
【説明】
get_magic_quotes_gpc()関数はmagic_quotes_gpcという設定がONかどうかチェックするためのものですが、 「magic_quotes_gpc」自体はPHP5.4で完全廃止されたため、本来は不要な記述ですが、古いバージョンでの利用も考慮し念の為に残していました。
ですので、PHP5以上であれば不要な機能なので削除して構わないのです。
2020.07.30 v1.0.4リリース
認証不備の脆弱性の指摘と修正方法について
-- 脆弱性に該当する製品名およびバージョン
※ver.1.0.3及びそれ以前
(バージョンはReadmeまたはconfig.php内に記載しています)
確認済対象ブラウザ:(Firefox/Chromeで確認)
-- 脆弱性の内容
特定の条件下において、遠隔の第三者に管理者権限で当該製品にログインされる問題。
この条件が成立するには第三者があなたのサイトのサーバー上に無断でファイルを設置する必要があることから、この問題が実際に発生する可能性は限りなく低いと思われます。これまでに実害の報告などは届いておりません。
ユーザーにとって利便性が良いため、あえてそうしていたということもありますので、
非常に判断が難しいものでしたが、今回の指摘を真摯に受け止め、また利便性よりも安全性を優先するという判断としました。
-- 脆弱性への対応方法と適用方法
以下手順で修正を行なってください。
1,pkobo_news/admin/内直下にある6つのPHPファイル(index.phpやregist.php)をエディタソフトで開いていただき、
「session_start();」を見つけて下さい。(ファイル内に1箇所しかないため検索すればすぐに見つかります)
2,この「session_start();」の上に以下1行をコピペして下さい。
※「PHPSystem」部分の文字は変更して下さい。英数字のみとして下さい。
例
session_name('PHPSystem123');
session_start();
※順番に注意して下さい。必ずsession_start();の上に追加下さい。
以上、これだけです。
もしすでに「session_name()」がある場合はすでに対策済のバージョンですので変更不要です。
尚、当サイトの管理画面があるプログラムを複数設置している場合で一度のログイン認証で相互に行き来出来たほうが良い場合はsession_nameの文字列を同じものとして下さい。
-- 謝辞
ご報告いただきました「三井物産セキュアディレクション株式会社 東内様」、
並びに情報処理推進機構 IPA様、JPCERT/CC 脆弱性ハンドリングチーム様にはこの場を借りて感謝申し上げます。
2018.11.10 修正対応
1,前回実施した、ごく一部サーバー(ロリポップ等)でWAFをONにしている場合の問題について修正を実施しましたが、修正漏れがあったために完全には改善できていませんでした。
具体的には画像をアップした記事を再編集した際に403エラーとなってしまっていました。(ファイルのリネーム処理部分の修正が漏れていました)
修正ファイル:admin/edit.php、admin/put.php
※設置中のものへ反映されたい場合はこの2ファイルを上書きすればOKです。
WAF機能がついているサーバーで、かつそういった問題が発生するサーバーは稀なため、実際のサーバーでは検証できていませんでしたが、今回は実際にWAF機能によって不具合が発生するサーバー上で検証できました。
※該当される方は少ないと思いますが、念の為の報告となります。
2,利便性向上のため、管理画面での画像アップ時にサムネイルを表示するようにしました。
修正ファイル:admin/js/common.js
※設置中のものへ反映されたい場合はこのファイルを上書きすればOKです。
2018.09.08 修正対応
1,ごく一部サーバーでWAFをONにしている場合に、投稿済の記事の再編集でアップ済みファイルを削除すると403(Forbidden)のエラーとなってしまうものを修正しました。原因はファイルを削除する際にファイルパスをPOSTしていましたが、それがWAF機能に誤検知されてしまっていましたので、再編集ページではパス部分を削除することで対処しました。(ロリポップで確認済)
修正ファイル:admin/edit.php、admin/put.php
※設置中のものへ反映されたい場合はこの2ファイルを上書きすればOKです。
2,曜日を表示する場合に、その曜日を囲っている()の右側の )が半角になっていたものを全角に修正しました。(表示側、管理画面側とも)
修正ファイル:admin/index.php、admin/include/function.php
※設置中のものへ反映されたい場合はこの2ファイルを上書きすればOKです。
2017.05.25 v1.0.3アップデート実施。
1,ごく一部サーバーの共有SSL環境でログイン認証ができない問題に対処するため、ログイン認証時のaction先のパスを空にしました。
2,セキュリティ向上の為、session_nameの名称を変更しました。
2015.11.12 v1.0.2アップデート実施。
本文の末尾が特定の文字の場合に文字化けするものを修正しました。(あくまでも本文の最後の文字に使った場合のみですので影響は少ないかと思います)
※(開発者メモ)rtrimがバイナリベースでマッチングされるため、区切り文字のバイナリデータとある全角文字のバイナリデータの一部がマッチしていまい、余計な削除が行われて結果文字化けしてしまう。そのため区切り文字をタブ(\t)に変更。
主な該当文字:ー、頼、回、応、辞、非、潜、“、斜、マ、聞、ボ、抜、語、補、込、作、ゼ、検、果、ぼ、神、ぜ、喜、<、>、ぞ、障、~、舞、証、州、格、呼、府、購、彼、類、|、浜、択、嶼、夜など。(これらが本文の最後にある場合、この文字だけ文字化けします。ので現実的には文字化けする可能性は非常に低いと思います)
該当バージョン:v1.0.1以下 (2015/11/12以前にダウンロード頂いたプログラムが対象)
※バージョンは設定ファイル(config.php)内上部に記載されています。
導入中の方で該当される場合は大変お手数ですが以下手順にて設置中のプログラムの修正をお願い致します。
※必須ではありませんが、出来る限り対応いただければと思います。
パッチファイルの適用方法(作業時間2~3分程度)
作業手順
【ご注意】データファイルを一括更新します。該当の文字列以外には特に影響ありませんが、念のため事前に必ずサーバー上のpkobo_news/data/data.datをダウンロード、または複製の上バックアップしておいて下さい。
1,まずは
以下ファイルをダウンロード下さい。
修正パッチファイルダウンロード
2,解凍いただき、patch.phpをpkobo_news/admin/内にそのままアップロードして下さい。
(アップ場所の間違いにご注意下さい。同じ階層にはregist.phpやedit.phpなどがあります)
2,ブラウザでこのファイルにアクセス(表示)して下さい。
3,ページの案内に従って作業を行って下さい。(作業後はpatch.phpを削除下さい)
以上になります。このたびのバグによりご迷惑、ご心配、お手数をおかけし大変申し訳ございませんでした。
その他のバグ等は現在のところ特に報告されておりませんが、お気づきの点がありましたら遠慮なくご連絡下さい。
2015.09.18 v1.0.1アップデート実施。一覧部分のサムネイルと本文の表示箇所でいずれも無い場合には無駄な空白を排除するためタグ自体も非表示となるよう修正。
2015.09.08 「登録日」の西暦のプルダウンが前年、当年、翌年のみでしたが、過去分の投稿を考慮し現在の年から10年前まで表示するよう修正しました。
管理画面の「サーバー情報確認」のナビゲーションを表示するかどうかを設定ファイルで変更可能としました。(デフォルトは表示)本運用後は煩わしい可能性もありますので必要に応じて非表示にして下さい。
2015.08.25 v1.0.0 旧ニュースプログラムの有料版を含む全機能+新着情報に必要なほとんどの機能を兼ね備えた多機能ニュースプログラムとしてフリー版の配布を開始しました。
ファイル構成、ソースコードもほぼゼロから設計しなおしました。旧プログラムとの互換性は一切ありません。
旧ニュースプログラムは今後廃止し、このプログラムにすべて移行する予定です。