サイト運営の話」カテゴリーアーカイブ

PHPの勉強を始めました

2019年1月1日

新年に入って、時間に余裕が出来たので、PHPの勉強を始めました。
PHPはWeb上で動作するプログラム言語です。

最近、公開APIなどで、いろいろな有益なデータが公開されるようになっているのですが、そのデータをホームページ上で処理して利用するのにPHPが向いているようです。

公開API活用ガイド (I・O BOOKS)
PHPの絵本
よくわかるPHPの教科書 たにぐち まこと著
を購入していたのですが、まずは「PHPの絵本」から読み始めました。

2019年1月3日

本を読んでいて、ちょっと理解しにくいところがあって、実際に動作させたくなって、パソコン上で動作できる環境を整えようと思いました。
メルカリで購入した本で、XP環境で説明してあったりして現状に合わない部分があって、ネットで調べました。

いろいろ設定したのですが、うまくいかなくて、結局XAMPPを利用する事にしました。
https://webkaru.net/php/setup/

これで、やっとスタートしました。ここまで来るのに1日以上かかりました。

とりあえず、XAMPPのShellでコマンドプロンプト上でPHPの動作の確認ができるようになりました。

PHPの絵本を読んでいて変数(ローカル変数とグローバル変数とスタティック変数)の扱いの違いが理解しづらかったです。
判っている人が書いた参考書って、判らない人がどこが判らないのか判らず書いているので、読んでて判らないんですよね・・・
まあ、判らない人が参考書を書ける訳ないんですけど・・・・
こういうのは自分でプログラムの内容を変えてみて結果どうなるか確認するのが一番理解しやすいんですよね。

<?php
$x = 2; $y = 2;

function funcscope(){
$x = 0;
global $y;
static $z;
$x++; $y++; $z++;
print “\$x=$x, \$y=$y, \$z=$z”;
print “\n”;
$x++; $y++; $z++;
$x++; $y++; $z++;
print “\$x=$x, \$y=$y, \$z=$z”;
print “\n”;

}
print “\$x=$x, \$y=$y, \$z=”;print “\n”;
funcscope();
print “\$x=$x, \$y=$y, \$z=”;print “\n”;
funcscope();
print “\$x=$x, \$y=$y, \$z=”;print “\n”;
?>

上記がscope.phpというプログラムの場合に動作した結果

# php scope.php
$x=2, $y=2, $z=
$x=1, $y=3, $z=1
$x=3, $y=5, $z=3
$x=2, $y=5, $z=
$x=1, $y=6, $z=4
$x=3, $y=8, $z=6
$x=2, $y=8, $z=

スタティック変数の場合は初期値は0で関数内のみで存在する値で値はプログラム内では記憶している
グローバル変数の場合は関数外でも存在し値はプログラム内では記憶している
ローカル(普通の)変数の場合は関数内の値と関数外の値は別に存在している。関数内の変数の値は関数外では記憶していない

コマンドプロンプト上で動作させるだけでは、あまり役に立たないのでApache上で動作させたいと思い、Apacheの起動をしてみました。
でも、XAMPPのApacheで使うPort 80が他で使われていてApacheの起動ができません。

https://php1st.com/946
を参考にコマンドプロントでnetstat -nao を動作してローカルアドレスの数字が80のPIDを調べると4でした。
タスクマネージャーの詳細を確認するとSystem (NT Kemel & System)になっていました。

http://lovee7.blog.fc2.com/blog-entry-35.html
を参考に、[Windowsのスタートボタンを右クリックしてコントロールパネル] → [プログラム] → [プログラムと機能] → [Windowsの機能の有効化または無効化]で「Windowsの機能」ダイアログを表示させます。
「インターネット インフォメーション サービス」の項目を開いて、「World Wide Web サービス」のチェックを外しました。

XAMPPを管理者として実行(アイコンを右クリックで管理者として実行)する。
Apacheが起動しました。

パソコンによっては、それでもダメな場合もあり、その時には
「インターネット インフォメーション サービス」の項目を開いて、「Web管理ツール」のチェックを外すと解決しました。

Attempting to start Apache service.
が表示されましたが、それ以降進みません。
https://lightning2014.ensyutsubu.com/blog/post-6335/
を参考にして
XAMPP Control Panelで「Apache」の左側についたチェックを押すと×マークになります。
これでApacheの起動するようになりました。 ここまでの道は長かったです。
結局、最初にXAMPPを使わないでApacheが動作しなかった原因も、Port 80が他で使われていた事が原因だったようです。

c:/xampp/htdocs/ に動作するPHPファイル(例えば test.php)を設置してあれば
XAMPP Control PanelでApacheとMySQLをStartさせて
http://localhost/test.php
でtest.phpを動作させることができます。

2019年1月4日

実際にPHPのファイルを動作させてみましたが、日本語は文字化けしました。
c:/xampp/php/ のphp.iniを書き換えると解決するということなんですが、
PHPの絵本では、文字コードEUC-JPにすると書いてあったので、その通りにしても解決しなく
本が古いので、新しい環境(Windows10)に合わせたほうが良いのかなと思って
https://techacademy.jp/magazine/2412 を参考に
文字コードUTF-8にして保存してみたのですが、やっぱり解決しません。

2019年1月5日

結果的には文字コードUTF-8にするのが正解だったのですが、PHPのファイルを作る際にも、UTF-8で入力しなければいけなかったのです。
https://hombre-nuevo.com/programming/%E3%80%90php%E3%80%91%E6%96%87%E5%AD%97%E5%8C%96%E3%81%91%E5%AF%BE%E7%AD%96%E3%81%AE%E3%81%9F%E3%82%81php%E3%82%92%E6%97%A5%E6%9C%AC%E8%AA%9E%E5%8C%96%E3%80%90xampp%E3%80%91/
が参考になりました。

これで、やっと日本語を使ったPHPのファイルをパソコン上で動作させる環境が整いました。
これだけの事で、これほど苦労させられるなんて、先が思いやられます。

次はサーバー上で動作できるように設定です。
サーバーでの設定の変更は、サーバーごとに違うんだと思いますが、自分が利用しているサーバーcoreserverの場合は、coreserverにログインして、サイト設定でPHPのバージョンをphp72に変更です。

早速、XAMPP上で動作したphpファイルをFTPでアップロードして、属性を全部実行可(755)に設定し動作を試してみました。
無事動作しました。やったね!

2019年1月12日

XAMPP上で、phpファイルとhtmlファイルの両方を動作させるプログラムを試してみたのですが、htmlファイルで文字化けしてしまいました。
htmlファイルのみシフトJISにすると正常に動作しました。

「PHPの絵本」を読んでいると、突然、訳のわからない関数やコマンドが出てきて、何の説明もないので、頭がパニックになり頓挫して眠くなり、なかなか進みません。
それで、判らない英単語が出たら、その都度ネットで調べる事にしました。
それで、なんとなく理解できるようになりました。
こんなものは理解しようと思って、どんだけ考えてもダメです。
分らない事は、考えるのではなく調べるのが一番です。

「PHPの絵本」って超初心者向けで評判が良いので購入したのですが、PHP書くと実際にどんなことができる?っていう意味では良い本ですが、実際にプログラムを作ってみたいなあという用途には向いていないようです。
プログラムの参考書って、スキルのない初心者が理解できるようなのって無いんですよねえ・・・

2019年1月13日

「PHPの絵本」を読んで、いきなり知らない関数や構文が出てくると、相変わらずストップしてしまいます。

ネットで調べたりして少しずつ進んできたのですが、ネットで調べても、どうしても意味が分からない部分があったのでYahoo相談室で聞いてみました。

for($i=0; $i<count($enq1); $i++) {
if($_POST[‘quest’][‘Value’] == $i) {
$ans1 = $i;
break;
}
}
でifの条件の意味が分からなく、特に$_POSTの後に[ ][ ]と2つ並んでいるところが、どういう扱いになっているのか理解できなかったのです。

ありがたいことに、すぐに回答していただけました。
$_POSTの後に[ ][ ]と2つ並んでいるところは、二次元の配列を表現しているということでした。
$_POST[‘quest’][‘Value’] の値が、0~ $enq1 の配列の数までのどれであるかを調べて $ans1 にセットしているということです。
お陰で、少しわかってきました。

1行目の$iは数字(もしくは数字のような観念)で、要素の全部をチェックするという働きで、2行目の$iはデータの内容(値 今回の場合は文字列)を表しているって事のようです。

プログラム言語はBASICやFORTRANを基に理解しようと思うのが理解しづらい原因でもあったようです。
PHPって、プログラムを最初から全部作っていくというより、決まった構文(関数)を、いろいろ組み合わせてシステムを構築していく言語のようです。
どういう構文(関数)があるか知っておくことが重要のようです。

サンプルプログラムを見ていると、どの部分が最初から決まった構文(関数)で、どこがそのプログラムのオリジナルな部分なのか見分けがつかないので、決まった構文(関数)を見て、なんでこうなるんだと余計な事を考えて嵌まってしまいます。

2019年1月14日

全部が理解できたわけでは無いけど、「PHPの絵本」をこれ以上追及しても進歩しないと思ったので、次の段階として「よくわかるPHPの教科書 たにぐち まこと著」を読むことにしました。

「よくわかるPHPの教科書 たにぐち まこと著」は初歩的なところから順序を追って説明しているので勉強しやすいと思います。
先に「よくわかるPHPの教科書 たにぐち まこと著」を読んでから「PHPの絵本」を読めばよかったと思います。

実際に、プログラムを打ち込んで動作させてみました。
なんと改行が動作しません。¥nも¥r¥nも動作しません。”ダブルクオートで囲んで
でやっと改行になりました。
print (”
“);
時間の表示をしたら、時間がずれていました。

PHPのバージョンによって動作が違うようです。先が思いやられます。

2019年1月20日

「よくわかるPHPの教科書 たにぐち まこと著」は基礎からわかりやすく説明されていて、学習が順調に進んでいます。
とりあえず基礎編を読み終わりました。

関数を知るために「PHP逆引きレシピ 第2版」をメルカリで入手しました。1280円でした。

公開APIをサイトで利用するという目的に近づいてきているような気がしています。

2019年1月21日

「PHPによるWebアプリケーション 2版 / 西沢直木」をアマゾンで購入しました。454円でした。

PHPの勉強に、かなり気合が入ってきました。

2019年1月22日

「PHPによるWebアプリケーションスーパーサンプル活用編 第3版」をメルカリで購入しました。700円でした。

2019年1月24日

「よくわかるPHPの教科書 たにぐち まこと著」を参考に、実際にコードを打ち込んで動作してみました。

動作しません・・・・・・

PHPがバージョン7(PHP7)になってから、データベース関連のコマンドが全部変わったようです。

mysqlがmysqliに変わって、パラメータの記述方法も変わったようです。

なんで、こんな重要なコマンドを変更するかなあ

参考書も、PHP7に対応した良書が存在しないだし、先が思いやられます。

mysqlをmysqliに変更して動作させると

Warning: mysqli_select_db() expects exactly 2 parameters, 1 given in C:\xampp\htdocs\index.php on line 3
のエラーが表示されました。
mysqli_select_db()は2つのパラメータを期待します。
という内容の表示のようです。

ネットで探しても解決法が見つかりません。

2019年1月25日

「mysqli_select_db()は2つのパラメータを期待します。」の解決法が判りました。
PHP7になって、データーベースの接続に関する書式が全く変わってしまったようです。

以前はxampp(パソコン上でPHPを動作させ練習する環境)では
mysql_connect(‘localhost’,’root’,”)or die(mysqli_error());
mysql_select_db(‘データベース名`) or die(mysqli_error());
でデータベースに接続できたのが
$link = mysqli_connect(“localhost”, “root”, “”) or die(mysqli_error($link));
mysqli_select_db($link,’データベース名’) or die(mysqli_error($link));
としないとけないようです。

mysqli_query(‘SET NAMES UTF8′); もmysqli_query($link,’SET NAMES UTF8’);

に変更しました。

「よくわかるPHPの教科書 たにぐち まこと著」はPHP5用の教科書ですが、これだけ違うと話になりません。
「よくわかるPHPの教科書 PHP7対応版」も発売しているようなので、入手しようと思います。
「よくわかるPHPの教科書」はわかりやすいし、同じ本でPHP5用とPHP7の両方持っていれば、仕様の違いが判って、他の参考書を利用するのにも役に立ちます。
PHP7対応の参考書って本当に少ないんです。

ちなみにPHPには公式のPHPマニュアルというものがあるそうです。
http://php.net/manual/ja/index.php
でも、自分の知りたいことを探すのは簡単ではありません。

2019年1月26日

「よくわかるPHPの教科書 たにぐち まこと著」のサンプルプログラムをPHP7で動作するように改変できました。
「よくわかるPHPの教科書 PHP7対応版」は買わなくても大丈夫かな。

2019年1月30日

「よくわかるPHPの教科書 たにぐち まこと著」の2つめのサンプルプログラム(掲示板)に、かなり苦戦しています。
PHP5とPHP7の違いもあるのですが、記入漏れもあるし、プログラムの不備もあるし、説明不足もあるし、初心者がこの本で勉強しようとすると、かなり躓いて断念する可能性が大きいのではないかと思います。
とはいえ、この本より初心者向けで判りやすい本は無いんですよねえ・・

2019年1月31日

相変わらず「よくわかるPHPの教科書 たにぐち まこと著」の2つめのサンプルプログラム(掲示板)に苦戦しています。
なんとかサンプルプログラムのソースファイルを入手できないか、ネットで調べたら見つかりました。
マイナビBOOKSというサイトにソースファイルの圧縮データと正誤表がありました。
https://book.mynavi.jp/support/pc/php/

購入した本は第9刷で間違ったところは訂正済みの本でした。
でも、ソースファイルと本の内容が一致しません。ソースファイルには本に掲載されていない内容が含まれています。そりゃ無いよって感じです。

ひょっとしたらと思って、「よくわかるPHPの教科書【PHP7対応】」のサンプルプログラムもあるのではないかと思ったらありました。
https://book.mynavi.jp/supportsite/detail/9784839964689.html
さっそくダウンロードしました。このサンプルプログラムを参考に、学習しようと思います。

これで「よくわかるPHPの教科書【PHP7対応】」無しでも学習できそうです。

2019年2月3日

「よくわかるPHPの教科書 」で勉強していると、PHPをマスターする際にはSQLの理解が必須だということがわかり、SQLの参考書「これならわかるSQL 入門の入門 五十嵐貴之著」を購入しました。

2019年2月8日

「よくわかるPHPの教科書【PHP7対応】」の掲示板のサンプルプログラムで、どうしても理解できない部分があって、YAHOO知恵袋で相談しました。すぐに答えてくれる方がいて、参考になりました。

$member = $db->prepare(‘SELECT COUNT(*) AS cnt FROM members WHERE email=?’);
$member->execute(array($_POST[‘email’]));
$record = $member->fetch();
if ($record[‘cnt’] > 0) {
$error[‘email’] = ‘duplicate’;
}

の1行目について最初のemail=?の意味はプリペアドステートメントを利用する際のお約束で、?の内容を後から指定するっていう意味で、メールアドレスの入力で?の中身が変わったり、「自動で」SQL実行時に必要なエスケープを施してくれるメリットがあるから?を使っているそうです。
$db->prepare() でプリペアドステートメントとしてデータベースdbにおいて、email=?の条件に合致するデータの数をcntとするという内容の$memberというSQL文 を指定します。

2行目は画面で入力した値($_POST[‘email’])をemail=?の?に代入し、$memberの内容を実行する。

3行目は結果を取得してcntの値を$recordという配列として登録

4行目は$memberの内容を実行して得られた条件を満たすデータ数$record[‘cnt’]が0より大きい(つまり他にもある)場合には$error[‘email’]にduplicateという文字を登録する

という処理のようです。
プリペアドステートメントの勉強も必要なようです。

https://www.ibm.com/support/knowledgecenter/ja/SSEPGG_9.1.0/com.ibm.db2.udb.apdv.php.doc/doc/r0022472.htm
https://bituse.info/php/35
も参考になりました。

2019年2月9日

「これならわかるSQL 入門の入門 五十嵐貴之著」の勉強を始めました。
なかなか分かりやすいです。ただ、XAMPP上でMySQLを操作する方法が本の操作方法と違うので戸惑いました。
データはネットからダウンロードできるのですが、txtデータなので、UTF-8で保存しなおして、インポートすると使えました。

コマンドラインの入力はXAMPP上でMySQLのAdminからSQLのボタンをクリックして入力します。

2019年2月10日

「これならわかるSQL 入門の入門 五十嵐貴之著」の勉強が完了しました。
入門の入門なので初歩的な内容だと思うけど、SQLについて、かなり理解できたと思います。
読んでよかったです。
これでPHPの理解が深まると思います。
「PHPの絵本」を、もう一度読んでみようと思います。

2019年2月11日

「PHPの絵本」を改めて読んでみました。
PHPのプログラム見て、文法的に、なんかよく理解できないなあと思っていたところが、ちゃんと説明されていたりして勉強になりました。
「PHPの絵本」はサンプルプログラムが理解しづらいし、説明も不親切だし、データのダウンロードもできないのですが、初歩的な文法は丁寧に説明されていてわかりやすいです。
サンプルプログラムは無視して読んだ方が良いと思います。

PHPの勉強を始める場合は、「これならわかるSQL 入門の入門 五十嵐貴之著」を勉強してから、「PHPの絵本」をサンプルプログラムを無視して勉強し、その後「よくわかるPHPの教科書【PHP7対応】」を読むことをお奨めします。それを終わってから「PHPの絵本」を読み直すのも良いと思います。

2019年2月17日

「よくわかるPHPの教科書 」の掲示板のサンプルプログラムについて勉強しています。
テキストの説明が丁寧では無いので、ちょっとしたところで判らなくなります。
ネットやPHPの他の参考書を見ても理解できない場合は、「Yahoo相談室」に相談しました。
PHPの詳しい人が根気よく説明して下さって、かなり理解が深まりました。どれだけ感謝してもしきれません。

POSTデータ($_POST)とセッションデータ($_SESSION[‘セッション名’])が同じ値のデータであっても、header(‘Location: でページが変わった場合、セッションデータは記憶されたままですがPOSTデータは消えてしまう

fetch() を使うのは、データベースから値を取得する際に使い、POSTデータ($_POST)とセッションデータ($_SESSION[‘セッション名’])を使う場合には不要。

のform内の処理が終わると、そのページの先頭に飛ぶ。

ちなみに、「よくわかるPHPの教科書 」の掲示板のサンプルプログラムについて、
サンプルプログラムをダウンロードしてXAMPP上で動作させると、
Notice: Undefined index:
が大量に表示されるし、会員登録で写真の表示がされず、会員登録後の掲示板投稿で投稿内容が登録されず投稿画面に戻ります。
正常に動作しないプログラムだと判ると、ソースファイルで勉強するモジベーションが下がります。

2019年2月21日

会員登録後の掲示板投稿で投稿内容が登録されず投稿画面に戻る件は、投稿データベースのフィールド名が一箇所入力ミスしていました。

会員登録で写真の表示がでない件は、画像のアップロードがされていませんでした。
でも、会員登録のデータベースには画像のファイル名が登録されています。
いろいろ調べて、原因がわかりました。画像ファイルのアップロード先のフォルダmember_pictureの位置が間違っていました。

2019年2月23日

返信投稿した場合、返信元のメッセージという言葉だけの表示では物足りないので、返信元のメッセージの内容の一部を表示するように変更してみました。

返信元のメッセージの部分を

<?php
$countm=$post[‘reply_post_id’];
$sql = “SELECT * FROM posts WHERE id=?”;
$messages = $db->prepare($sql);
$messages->execute(array($countm));
$messagem = $messages->fetch();
echo “返信元 “.substr($messagem[‘message’],0,20).”・・・”;
?>

に書き換えました。正常に動作しました。
reply_post_id は、返信元のIDです。

ちょっと自信がついてきました。

2019年4月14日

PHPも、かなり上達して、PHPを利用した実用的なプログラムもいくつも作りました。
https://kimassi.net/yadoitiran
https://kimassi.net/hudousan/hudousan
https://kimassi.net/hudousan/1/kodate1
https://kimassi.net/toire.html

メルカリで「詳細!PHP7+MySQL入門ノート/大重美幸著」を購入しました。1600円でした。
PHP7になってから、特にMySQLとの接続のコマンドが大幅に変更になったので、古いテキストだと使えない部分が多いんです。
1冊くらいは、PHP7に対応している本を持っていないと不便なんです。

2019年4月15日

「詳細!PHP7+MySQL入門ノート/大重美幸著」が届きました。
サンプルプログラムは無いですが、基本的な重要点がわかりやすく説明されている良書だと思います。

Google AdSenseの設定には悩まされる

2018年10月13日

Google AdSense の収入ってサイト運営者にとっては、ありがたいのですが、スマートフォンが主流になって以来、Google AdSense の広告の入れ方が複雑になって、結構悩まされます。

基本的には、GoogleAdSenseのサイトでレスポンシブ型の広告コードを作成して、htmlのソースで広告を入れたい場所に広告コードを挿入すれば良いはずなんです。

でも、そのままの形で挿入したら、スマートフォンなどモバイル環境だと広告が表示されるのに、PC環境では、広告が表示されないという現象が起きました。

Googleのサポートに相談したら、PC環境でも広告が表示される方法を教えてくれました。

https://support.google.com/adsense/answer/6307124?hl=ja#exact

上記に基づいて改変した広告コードを使う場合、<head> ~ </head>の間にJavascriptのコードと広告を入れたい場所への広告コードを両方とも挿入しないといけないので、ちょっと面倒です。
ちなみに、ホームページでは元々の広告コードでは広告が表示されませんが、WordpressやMovableTypeのブログでは元々の広告コードでも広告が表示されるので、ホームページだけ改変した広告コードを使う事にしました。
ページによってバナーが大きすぎ、画面が乱れる場合は、
@media(min-width: 800px) { .example_responsive_1 { width: 728px; height: 90px; } }
の部分を
@media(min-width: 800px) { .example_responsive_1 { width: 468px; height: 60px; } }
に変えます。(.example_responsive_1の部分は設定によって各自違うかもしれません

MovableTypeの記事の後に、広告を入れる場合は、MovableTypeの管理画面の
デザイン・・・テンプレート・・・テンプレートモジュールにおいて
テンプレートモジュールの作成をクリックします。
テンプレート名を設定して(仮にgoogle)、下のボックスに広告コードを挿入し保存します。
デザイン・・・テンプレート・・・インデックステンプレートの
メインページをクリックします。
<$mt:Include module=”記事の概要”$> の次の行に
<$mt:Include module=”google”$> を挿入します。
作成したテンプレートモジュールのテンプレート名がgoogleでなかったら、そのテンプレート名にします。
変更を保存して全ページ再構築すれば広告が表示されます。
同様に
デザイン・・・テンプレート・・・アーカイブテンプレートの
カテゴリ別記事リストの <$mt:Include module=”記事の概要”$> の次の行に
<$mt:Include module=”google”$> を挿入します。
デザイン・・・テンプレート・・・アーカイブテンプレートの
記事にも<$mt:Include module=”google”$> を下記の位置に挿入します。

<mt:If tag=”EntryBody”>
<div class=”asset-body e-content” itemprop=”articleBody”>
<$mt:EntryBody replace=”<br />”,”<br>” regex_replace=”/<img([^>]+) \/>/g”,”<img$1>”$>
<$mt:Include module=”google”$>
</div>
</mt:If>

WordPressの記事の後に、広告を入れる場合は、プラグインのAd Inserterを利用して希望の場所に広告を入れるようにします。

従来の広告の他に、自動広告というの出来ました。
自動広告を表示したい全てのページの<head> ~ </head>の間に、自動広告用のコードを挿入します。

MovableTypeで自動広告を利用する場合は、
デザイン・・・テンプレート・・・テンプレートモジュールの
HTMLヘッダーに自動広告用のコードを挿入します。

WordPressで自動広告を利用する場合は、管理画面の
外観・・・テーマの編集・・・header.php
を編集します。
<head> ~ </head>の間に、自動広告用のコードを挿入してファイルを更新をクリックです。

最初は控えめに広告が表示されていたのですが、とんでもない場所に大きな広告が表示されるようになって、デザイン的に乱れるし、広告の数が多くてウザったいので、設定を変える事にしました。

とりあえず、広告の数を減らそうということで、GoogleAdSenseのログインした後のトップページの左上の三をクリックして広告の設定をクリックします。
広告掲載率を選択します。
収益の推定値が99%程度になるように青丸のスライドして設定します。掲載可能な広告の割合が72%になりました。
全体の広告から安い広告28%が表示されない設定となります。
安い広告が無くなるのは良い事です。

これで、かなり広告の表示が減りました。実際には72%より、かなり減ってるように思います。半分よりもっと少なくなっているように感じます。広告表示されるページのほうが少ないくらいです。当初は広告報酬の激減が予想されます。
しばらくすると、広告表示が増えるのかもしれないので様子見です。

表示される広告の種類も設定します。
GoogleAdSenseのログインした後のトップページの左上の三をクリックして自動広告をクリックします。
全般設定の鉛筆マークをクリックすると全般設定の変更ができます。

テキスト広告とディスプレイ広告をonにすると広告の種類が増えて広告の出現率が増えます。
あまり制限を加えると高額の広告まで排除してしまう可能性が大きいのでonにしておきました。

インフィード広告もonにしておきました。
モバイル環境の時だけ、記事の途中に広告表示する設定です。
実際にはPC環境でも記事の途中に広告表示します

記事内広告もonにしておきました。
記事内の段落と段落の間に広告表示する設定です。

関連コンテンツもonにしておきました。
モバイル環境の時だけ、自分のサイトの他のページを紹介する設定です。

アンカー広告ももonにしておきました。
モバイル環境で、上端に広告表示する設定です。

モバイル全面広告はoffにしておきました。

この設定で、広告の出現率は増しましたが、サイトのトップページやブログでデザインが極端に乱れる場合も多いので、対処しました。

GoogleAdSenseではドメイン、フォルダ、ページ毎に、広告の種類を設定できるのです。
GoogleAdSenseのログインした後のトップページの左上の三をクリックして自動広告をクリックします。
新しいURLグループをクリックします。
URLを追加をクリックします。
特定の広告条件を設定したいドメイン、フォルダ、ページを1つずつ全部追加します。
特定の広告条件を設定したいドメイン、フォルダ、ページにチェックを入れて、次へをクリックします。
新しいURLグループに、サイトのトップページやブログを入れました。
後は、URL グループの広告設定をして新しいURLグループ名を設定して保存します。

新しいURLグループのテキスト広告とディスプレイ広告はoffにしました。
新しいURLグループのインフィード広告もoffにしておきました。
新しいURLグループの記事内広告もoffにしておきました。
新しいURLグループのモバイル全面広告もoffにしておきました。

これで、それほど違和感が無くなりました。

ブログ(WordPress)のGoogle Adsense表示前にあらわれる黄色の背景色が気になっていたのですが、ネットで調べて対応策を見つけました。
外観・・・テーマの編集・・・css
style.cssの編集画面になりますので

ins {
background: #fff9c0;
border: none;
color: #333;
text-decoration: none;
}

ins {
background: none;
}

に変えると解決します。
解決しない場合は、他のcssでもinsの設定をしてある場合もあるので、チェックします。
自分の場合は、editor-style.cssも変更しました。

2018年10月15日

パソコン環境のトップページで相変わらず変なところに大きな広告が入ったりするので、トップページでは自動広告のスクリプトを削除しました。
Google Adsenseってなんか、説明通りに動かないんだよなあ・・・・

2018年10月20日

広告掲載率を大幅に下げました。
掲載可能な広告の割合を72%から40%に下げました。
収益の推定値が90%程度という事です。
全体の広告から安い広告60%が表示されない設定となります。それで収益10%減なら、そのほうが良いです。
実際には以前より1/5程度に広告の露出が減っているように思います。

2018年10月24日

さすがに、Google Adsenseの収益が大きく下がりました。印象としては半分程度の下げです。
ここは自分のサイトの価値を信じて、しばらく強気で頑張ります。

2018年10月28日

Google Adsenseの収益が戻ってきました。
Google Adsenseの1件あたりの広告報酬が上がっているのだと思います。
安い広告を排除した分、高額40%の中に入るよう、広告費(入札)を上げてきているのだと思います。

2018年10月31日

Google Adsenseの収益が順調に伸びています。
Google Adsenseの1件あたりの広告報酬が上がっているのだと思います。作戦成功です。

2019年1月23日

Google Adsenseの収益が順調に伸びています。
掲載可能な広告の割合を40%から20%に大幅に下げました。
収益の推定値が79%程度という事です。
広告の数が5分の1に減っても収益の下落が20%ですむなら、そのほうが良いです。

2019年1月25日

Google Adsenseの収益が3分の1程度に減りました。
まあ短期的には、そうなるのは予想できていました。
少なくとも2週間は様子を見ようと思います。

2019年1月27日

Google Adsenseの収益が2分の1程度で推移しています。

2019年1月30日

昨日の収益は掲載可能な広告の割合を20%に下げる前の水準に回復していました。

2019年2月2日

ここ数日、収益は掲載可能な広告の割合を20%に下げる前の水準に回復しています。

2019年2月5日

収益が完全に回復しています。

2019年2月11日

時々、収益がガクっと落ちる日があります。
1クリックあたりの収益は上がっても、広告自体の数が少ないのでバラつきがあるのだろうと思います。

2019年3月6日

収益は、掲載可能な広告の割合を20%に下げる前の水準に完全に回復しています。

WordPressの掲示板bbpressのメールの通知

2018年10月7日

きまっし金沢の全面更新とモバイル対応化に際して、掲示板設置について悩まされました。

従来から使っている掲示板YY-BOARDのモバイル化は成功したのですが、YY-BOARDは古い投稿は過去ログになって記事の内容を見つけにくくなるので不都合なのです。
元々、過去の情報を探すには、過去の投稿の全てを遡らないといけないので不都合だったのです。
Googleの検索にも引っかかりにくいし、SEO対策上も弱いんです。

それでMovableTypeで掲示板専用のテーマを利用してみました。色とか設定を変えないといけない点が多々ありそうですが、使えそうな気がしました。
MovableTypeは無料で利用するにあたっての制限があるので、あまり多用したくないのですが仕方ありません。

MovableTypeの掲示板は、投稿の制限が大きいです。サインインしないと投稿できないんです。
サインインの認証方法をyahooとかgoogleとか幅広く設定しました。
コメント投稿に対してメールアドレスを必須項目から外しました。
コメント入力フォームについて、電子メールに(任意)を加えて、urlの入力を削除しました。
コミュニケーションの設定で コメントはすべて自動的に公開するに設定しました。

MovableTypeの掲示板はモバイル対応になっていませんでした。
テーマを改変しようと思ったのですが、テーマの場所が見つかりません。

テンプレートのメインページをクリックすると右側にヘッダー(グローバルテンプレート)という項目があったので
の上にを挿入しました。
これだけだとモバイル環境では文字は大きくなるだけで、全体を見るにはスクロールしないといけないので使えません。
MovableTypeの掲示板を使うのは断念しました。

WordPressのbbpressという掲示板を試してみたのですが、投稿時や新たなトピック作成時に管理者へのメール通知が出来ないので、投稿があっても気が付かないんです。
ネットで、subscribe2を使ってメール通知ができる方法が紹介されていたので試してみたのですが、どうもうまく行きません。
subscribe2が機能していないようです。subscribe2を使うのは断念しました。

WordPressのbbpressはモバイル対応になっているので魅力的です。頑張ってメールを届く方法が無いか試行錯誤しました。

フォーラムを新規作成でタイトルと説明を記入してして、フォーラムの属性をフォーラムに選択して、コメント投稿を許可で公開します。
一番上のフォーラムを表示をクリックすると新規作成したページが表示されます。
フォーラムのタイトルの下の行に購読というリンクが表示されるのでクリックします。
自動権限グループ 登録済みの訪問者にフォーラムの役割「参加者 」を自動的に付与しました。

これで、そのフォーラムに別IDでトピックを新設するとメール通知がありました。
返信投稿も別IDでしてみたのですがメール通知がありません・・・・・

ちなみに、設定・・・フォーラム・・・購読 にチェックを入れてあります。
購読にチェックを入れると、
ユーザーが気になった掲示板・トピックを「購読」できるかどうかを設定できます。掲示板を購読した場合、その掲示板に新規トピックが投稿されると登録アドレス宛に通知が届きます。また、トピックを購読した場合、そのトピックに新規コメントが投稿されると登録アドレス宛に通知が届きます。
という事なんですがメールは届きません。

最初から整理してみました。
現状では新たなフォーラムは自分しか作れないので、その時に購読にクリックすると、読者がそのフォーラム内にトピックを立ち上げると、メールが届きます。
そのまま放置しておくと、それ以降そのトピックにコメントがあってもメール通知はしません。
新たにトピックが立ち上げられた時に、そのトピックの購読をクリックしておけば、そのトピックにコメントがあった時にはメール通知があります。
これなら使えそうです。

 

不可解なメール

スパムメールってそれなりに来ますが、メールソフトをThunderbirdに変えてからは、随分減りました。

今回、とても不可解なメールが届きました。

あまりにも、美味しすぎる話で、眉唾物です。しかもgmail・・・・・

ちゃんと記事の中身を読んで依頼してるし、以前に、同じようなメールが来てたのは記憶してるんです。

でも昔の記事に5万円の広告効果が無いのは、いくらなんでも判断できます(笑!)

ちなみに、安田幸子 デジタルマーケティング会社で検索すると、それほど多い件数では無いんですが、ブログのコメントに同じような投稿がされているのが、ひっかかりました。
それが、投稿されているブログの内容に共通点があるんです。工作とか自作でなにかしている記事ばかりなんです。

On 2018/10/02 20:59, Sachiko Yasuda wrote:
>
> ウェブサイトの管理人様へ
>
> 以前イギリスのデジタルマーケティング会社の要請でご連絡させて頂きました安田幸子でございます。この度プロジェクトの変更に伴いまして、条件に変更が加えられ、また謝礼金が大幅に増額(追記5万、新規7万)されましたので、貴サイトのように信頼あるサイトで再検討して頂きたくご連絡しております。
> 貴サイト内2017年4月23日記事 https://kimassi.net/zak/?p=16315を拝見させて頂き、現在クライアントと行っているプロジェクトに是非ともお力添えを頂けないかと思い、ご連絡をさせて頂いております。
>
> ご依頼したい内容といいますのは、本記事に「AC-DCコンバータ」というキーワードを使って指定ウェブページにリンクする短文を追記していただくことなのですが、貴サイトではそのようなご依頼に対する対応は可能でしょうか。
>
> 例えば、アンカーテキストは当クライアントの社名xxxと指定されておりますが、アンカーテキストの入った短文は、例えば、記事内に「特にUSB出力ACアダプタ
> については発熱するなど性能差が大きいようで安物は買わない方が良いようです。」という箇所がございますが、この後に「AC-DCコンバータ搭載ACアダプターはオンラインではアマゾンのほかにもxxxのような電子部品専門店でも販売されています。」というような感じの文を挿入して頂いても大丈夫です。記事の主旨に背かない範囲でのお願いです。書き方は自由です。
>
> リンク短文を記載していただく際のお願い事は以下の通りです。
> 1.同記事上に当クライアント取り扱い製品について競合サイト(アマゾンやモノタロウなど)の製品記事リンクが貼られていないこと。この点は既に私が確認しております。本記事内には問題になるリンクはございませんので、現状のままで大丈夫です。
>
> 2.アンカーテキストを「当クライアント社名」としていただくこと
>
> 3.貼っていただく当クライアントのリンクは記事内に短文の中に一つのみ貼って頂くリンクにno follow タグが貼られていないこと。
>
> 4.記事内に当クライアントの競合でない第三者ウェブサイトへのリンクが一つあること。例えば「LINE」という言葉をアンカーテキストにしてhttps://line.me/ja/のようなサイトへリンクを貼っていただくような感じでも大丈夫です。しかしながら、全く別の言葉をアンカーテキストにして、全く別のサイトへリンクを貼って下さっても結構です。競合でないこと、no follow タグが貼られていないことが重要になります。第三者リンクについては、ご協力が得られた場合には例となるリンクをこちらからもご案内できますのでご安心ください。
>
> 5.記事内に貴サイト別記事に誘導する内部リンクが1つあること。例えば「facebook」をアンカーテキストにして、サイト内https://kimassi.net/zak/?p=15095 のような別記事にリンクを貼って頂いても結構です。しかしながら、全く別の言葉をアンカーテキストにして、全く別の記事へリンクを貼って下さっても結構です。no follow タグが貼られていないことをご確認ください。
>
> 6.作業後記事が公開される前に弊社担当者が修正などの必要がないかどうか確認させて頂きます。公開前の確認が難しい場合にはそうお知らせください。
>
> これらの依頼内容に対して謝礼金をお支払いさせて頂く次第です。
>
> 謝礼金金額についてですが、貴サイトで所定の金額等を設けていらっしゃいますようでしたら、そちらをご遠慮なくお伝えいただければ前向きに検討させていただきます。ご希望がございません場合には、弊社では既存記事でのご協力に対しては50000円をお支払いしております。
>
> また、上記のように追記でリンクを加えられ、内容を修正して頂いた記事を日付、題名等変更して頂いて新規記事として元々の記事とは別URLで掲載して頂ける場合には、新規記事としてみなされますので、謝礼金は70000円をお支払いしております。新規記事でのご対応の場合には記事内の文字数は500文字以上、クライアントのリンクが記事上部に記載されるようにお願い致します。
>
> 掲載期間につきましては特に設けてございませんが、1か月以上でしたら大丈夫です。その後に追記を元に戻されても、新規記事を非公開にされても別段罰則などはございません。
>
> もし他に独自ドメインで運営されておられるサイトがございましたら、そちらでも応募が可能かどうかクライアントと確認できますので、ご興味がおありでしたらドメインをお知らせください。
>
> また今回のプロジェクトに参加して頂ける場合には参加サイト数に制限がございますため、10月12日の期日厳守で修正或いは執筆された記事を公開、請求書の段階まで進めることが可能なサイト運営者のみが応募可能になっております。期日に遅れた場合にはお支払いが保証出来かねますのでその点ご留意ください。本プロジェクトのチームは10月12日まで毎日稼働しておりますので、期日ぎりぎりでも対応が可能ですのでご安心ください。
>
> もしご興味がおありでしたらクライアント情報、謝礼金のお支払い詳細をメールでお伝えしたいと思います。セキュリティ上お返事をいただけますまでこれらの詳細をご案内できませんことをご理解して頂けると幸いです。
>
> お忙しい中恐縮ではありますが、メールでお返事頂けますと大変助かります。
>
> また貴重なお時間を割いて最後までお読みいただき、ありがとうございました。ご懸念、ご要望などありましたら何でもお気軽にご相談ください。可能な限り誠意をもって対応させていただきます。
>
> どうぞよろしくお願い致します。
>
> 安田幸子