2019年7月16日 (火)

SSL化を躊躇している管理人さんたちへ

管理・運営している「犬とゆく」をやっとSSL化した。
全くと言ってもいいくらい技術的に無知な私が手探りで、レトロなサイトをSSL化しましたが、最後の最後の方で「これをはじめから知っていたら、こんなに苦労しなくても良かったのに」と気づいたことを書きます。

私のように、今の技術にはとてもついてゆけないけど、20年以上ご自分のサイトを(WordPressなどを使わず自力で)運営されてきて「そろそろSSL化した方がいいのかも」とお考えの方は、ご一読いただけると「えっ、そうだったの?」とSSL化に前向きになれそうなことを書いておきます。
20年以上このスタイルでやっている人は思い浮かばないので、対象者はほとんどいないとおもいますが(苦)

○読まんでOK○

SSL化をした方が良さそうだと思いついてから何年経ったか分かりません。手をつけなかった理由は、私が「犬とゆくシステム」と呼んでいるプログラム。ソースを解析して周りをつけて再構築する。泥臭いことをやっています。
ソースの中にアドレスが出てくるので、ここに出てくる「http」を「https」に直すのがややこしかった。小心者の私は、http → https ではなく、http でも https でも適切に動くように修正を加えたのでややこしくなりました。

ほとんど場合、そんなことを考える必要はないとおもいます。単純に片っ端から「http」を「https」に書き換えればいいだけだと思いますし、リンク先も相対アドレスで指定していれば問題ないし。
ただ、切替えの時に一瞬で「http」を「https」に書き換えるのは不可能だとおもいます。その対応策が思い浮かばなかったこともあり、「http」でも「https」でも動くようにしてみました。

 

■ ここから本題 ■

・まず、サーバー自体を SSLする必要があります。
私はレンタルサーバーで運用していますので、そちらの設定が必要になりました。これは各社で違うと思いますので、サポートページをよく読んでみてください。
私が使っているレンタルサーバーの場合(私のドメインと物理ディレクトリーの設定が今風でなく、今となっては特殊なこともあり)サポートページに書かれている通りに行っても、何度かトライしてやっと切替わるという状態でした。ここは苦労したところです。
このSSL化にする設定時に証明書が必要になります。昔は全て有料でしたが、今は無料のものもありますので、私はそれを使いました。

.htaccess というファイルを使います。
長年サイト管理をやられている方は分かるとおもいますが、分からない方は以下の参考ページを見ながら勉強してみてください。

・移行のためにテストをするとき
自分以外の人がアクセスしたらメンテナンス中の表示なり、自分は操作できるようにします。
このページは必要なことだけ書かれていて参考になりました。
https://webtan.impress.co.jp/e/2009/06/16/5880
IPアドレスが入ってる箇所がありますが、ここに自分のアドレスを入れれば、自分だけ見ることができるようになります

サーバーがSSL化した時、http でアクセスされても https に飛ばす設定(その逆も)
以下のページを参考にしました。
https://qiita.com/foursue/items/58e74c4a8c946dd49e12?fbclid=IwAR2ZzjEHReVqYaJgpwrD4GD7SIPyhj8JFcgfyBCgc8oq384nO2gXiUXNcEc
https://qiita.com/gotohiro55/items/7daa988db23a5a8355c1?fbclid=IwAR3Hatd9CgWPBv_bM-nkCK1fMqxGufEXH0KWxPfqgeE81SRoxuasPBn6mOw
「除く」設定が必要な方はないとおもいますので、それ以外のところを読めは理解し易いとおもいます。

自分が作ったファイルを公開することも考えたのですが、セキュリティーのことがよく分かっていないので、それは控えます。
もし「教えて~」という方は直接メールなりメッセージください。

ちなみに私の場合(前の方で書きましたが)サーバー自体のSSL・非SSLの切替えを頻繁に行うことが簡単ではないことが分かってからは、サーバーは SSLで動かしっぱなしにして、上記の設定で、無理矢理 http へ飛ばす設定にしていました。
テストする時だけ(他の人から見ると)メンテナンス表示にし(中は他の人はアクセスできないようにして)https にしてテストを行っていました。

(2019.07.24 追記 ここから)

後日、サーバー作ってくれるアクセスログが見れなくなりました。無知な私なりに調べて分からなかったので、レンタルサーバーのサポートに問い合わせました。
その結果、.htaccessファイル にて http → https を指定していることが原因でした。
アクセスログを見るページは、http でアクセスしないとならないので、https にリダイレクトされてしまうとエラーになってしまうそうです。

http でアクセスされたときに、強制的に https に書き換えないとエラーになるのでは?、と思っていたのですが、この設定を外してもエラーになりませんでした。

ページ内に http://www.inutalk.info/ ~~~ (Sなしでアクセスされても)全く問題ありませんでした。
結果として、.htaccsess ファイルは必要なくなりました。

不勉強だし、何を勉強したらも分からない状況なので、周囲にご迷惑をかけまくって申し訳ありません。しかし、SSL化はした方がいいとおもうし…。

追記が入りましたが、以下、.htaccess で強制的に http に飛ばす設定について、のつづき。
(2019.07.24 追記 ここまで)

ここで問題が起きました。この期間に、外の人が(メンテナンスページでも)アクセスすると、そのアドレスの頭は https になり(難しいことをことになりますが、サーバー側の入口が違う)ブラウザはそれを記憶してしまうようです。
テスト終了後は http に戻しますが、その時、一度でも https でアクセスしたブラウザは http でアクセス出来なくなる(表示されなくなる)のです。

ブラウザのキャッシュやデーター、履歴ななどをクリアし、クリア直後にブラウザを立ち上げ直すと表示されます。
ただし幾つかのブラウザはそれでもダメなようです。
私が使っている範囲では、iOS の Chrome がダメでした。結局、Chrome を一度アンインストールして、再びインストールしたら表示されました。(iOS の Safari はキャッシュなどの削除で表示されました。)
このことは頭に入れておいた方がいいとおもいます。

 

■ a タグの基本的な仕様が変わっていた (@_@) ■
絶対参照のリンクの頭に http があるから問題になるのですが、実は、これ省略してしまっても大丈夫みたいなんです。
最近のことらしく、まだネット上を探してもあまり載っていませんが、こちらに書いてあります。
https://impov.hatenablog.com/entry/2014/04/24/005845 
絶対参照の場合、aタグで <a href="http:// ~~~"> と書きますが、<a href="// ~~~"> でも最近のブラウザであれば動きます。

もうほとんど作業が終わりに近づいたときに知りました。
はじめから知っていれば、絶対参照の箇所の http を取るプロセスを入れれば良かっただけなんです。サーバーがどちらで動いているか考える必要ないんです。

吃驚したし、自分の苦労はなんだったんだろうと悲しくなりました。

 

(@_@)
この20年間の技術の進歩は凄いです。
JavaScript をオンにしていない人向けの処理とか、クッキーをオンにしてくださいとか、今では考える必要ないみたいですね。
スマホの操作特性を考えた作りも求められていますが、それに対応するための、昔なかった meta タグで指定することがいっぱいあるようです。
この数か月、内部のことばかり弄っていましたが、ちょっと外に見える部分(HTMLやCSS)も勉強してみようかなと思っているところ。
WordPress などを使えばそんな必要もないのでしょうけど(笑)

私がそのようなものを使わなのは、みんなが使っているものが怖いから。WordPress もたま~に脆弱性がニュースになるし。
「犬とゆく」もアタックらしきはよく来ます。数も内容も驚くようなアクセスが来ますが、今のところサーバー内に入られるような被害はないです。被害らしきは、特定のページにアクセスが集中してしまい、年に一回のアクセスランキングの上位に入ってしまうことくらいです(笑)

| | コメント (0)

2017年4月 3日 (月)

php 5.3 から 7.0 へ (見事に文字化け)

「犬とゆく」で php を使うようになって15年以上経つ。使うといってもプログラムを組んで動くようになったら放置。なので進歩しない。
私は進歩しなくても、php は進歩してゆく。クラスとかオブジェクトは最低限の考えになっているようですが、昔からのコードにはそんなものはありません。それでも動いているのでいいのです

先日、サーバーの増強&諸々のバージョンアップがあった。php も 5から7へと。
メンテナンスが終わって「犬とゆく」を表示させてみたら、見事に文字化け。焦って、設定で、5.3 に戻す。

色々調べたら、php7 では、文字コードを utf-8 で処理することになっているそうだ。昔、utf-8 で作るのは面倒だったので、日本国内で一般的な、Shift-JIS で作ってきた。
さて、このまま5で続けても数年で使えなくなるだろう。7対応をしたい。たぶん、エンコードを変えるだけで動くのであれば当分延命出来る。

色々と調べた結果、以下の一文を他の出力に先だってしておけばいいことが分かりました。

header("Content-Type:text/html;charset=shift_jis");

分かってしまえば簡単なこと。これだけで現在、7で動いています。
日々触れている人には当たり前のことだと思いますが、年に1~2回しかいじらない人間にはこれだけのことを理解し、対応するのに一日かかってしまいました

 

その後、php7 に関する書籍を購入しようとネット上で探したのですがあまりない。世の中、本当にペーパーレスの時代がくるのかもしれませんね。

 

仕方ないので、ネット上で注意点を探して読んでた。本家のphp.netのドキュメントはこちら

冒頭に書いたようなクラスとかそういうものに関係することがほとんどで、私には関係ないと思っていたら、なんと、ereg系関数がなくなった!
焦って自分のコードを確認したら、何年か前に上手く動かなくなったので、preg_match に書き換えていたのですが、mb_ereg系が残っていました。
これについて調べたら、php7 でも  mb_ereg系は残っていました

 

さてさて、あと何年動いてくれるかな。

| | コメント (0)

2015年9月28日 (月)

Shift-JIS の 5C(\)問題 対処法

完全に個人的な備忘録です。

「犬とゆく」のサーバのphpバージョンが変わって、マルチバイト文字関連の仕様が変わったようだ。

今まで、5C(\)問題はなかったと思うのですが、一口コメントに \ が出ることがあるようになった。全て 5C を含む文字なので原因は分かったのですが、対処法がなかなか分からなかった。5Cを取るだけだと意図して入れたものもなくなってしまう。

調べたら、stripslashes という関数を使えばいいらしい。

http://php.net/manual/ja/function.stripslashes.php

 

もう何年もコーディングしていないので、これだけのことに苦労しました (~_~;)

誰か、メンテナンスを手伝ってくれませんか m(_~_)m

| | コメント (0)

2012年4月14日 (土)

mb_eregi

先日、4月11日のこと。
「犬とゆく」にいつも協力してくださっている人から、「一口コメントが変です」とメールが来た。

何もいじってないのに不思議。
次の日、調べてみたら、mb_eregi 関数の仕様が変わったみたい。

詳しいことは分かりませんが、「マッチしたら ・・・」の判定を、

 今までは、 mb_eregi ( ・・・・ ) == 1  としていたのですが、
 これを    mb_eregi ( ・・・・ ) != 0   に変更したら、

今まで通りに動くようになりました。

 

勝手に仕様変えないで


<その後(詳しくはコメント欄をみてください)>

すぐにまた不具合発生
!= 0 を ==1 に戻したら、動くようになりました。

何が起こっているか、誰か教えて 


<その後、また書けなくなって ・・・>

どうも mb_eregi は関係ないような気もしますが、今度は、!= 0 にしたことと、意味のない特殊な処理を入れたら、何故か期待通りに動くようになりました。

原因は今のところ不明。
php のバージョン・アップ関係のような気もしますが、実施されたのは、ここ数日ではないので、それも違うかなと。

さっぱり分かりません

| | コメント (3)

2012年3月21日 (水)

PHP 4 → 5

長いこと借りているレンタルサーバーの PHPバージョンが4だった。そして、register_globals が、off  だった。でも、on だと思ってコーディングをしていた。(5 は当然 on。)
4 らしく(?)クラスも極力使わないようにしていた。(Smarty を使ったときだけは仕方なく使った。)

なので、「5になったも問題ない!」と思い込んでいた。
しかし、移行したら、一部の form が動かない。php の ソースを確認してみると、どうも register_globals の関係のようだ。

調べた結果、GET の変数をきちんと取得していないのに、グローバル変数に同じ名前をつけていたので、偶然取得できていたことが判明

 

他にもないことを祈る

| | コメント (0)

2006年9月11日 (月)

Smarty テンプレートの中の定数

テンプレート・ファイルを書いていて、配列を使うことになった。
添え字を define で定義しようとしたら出来ないという。ならば、conf ファイルで定義すれば都合がいい、と思った。これも出来ない。

conf ファイルで    soeji = 0  と定義しておいて、
テンプレートで    {$hairetu[ {#soeji#} ]}   で使えるのかと思っていたがダメでした。

結局、テンプレート・ファイルの中で定数ではなく変数として定義して解決。

{assign var="soeji" value=0}

(意味が違うけど、動くから善し!)

==========================
122 0911 レストラン『シヨン』

テラスのみ。ベーグルセットを食べた。
ま、いいんじゃない、という感じ。
平日はお客さんがとても少なくて
ゆっくり利用できる。景色がグッド。
料金もグッド。
近所にあったら、日常的に利用したい。
Dog Site なるものがあったが、よく分からなかった。

| | コメント (0) | トラックバック (0)

2006年9月10日 (日)

バージョン 4 と 5

以前から Smarty を使ってみようと思っていたが、一人で作業するのには向いていないかな、と戸惑っていた。
実際、使ってみると、クラス定義、php(ロジック)、テンプレート(HTML)、定義ファイル、と最低4つのファイルを書かなければならない。テンプレート、定義ファイルは、書き方も特殊なので億劫に感じてしまう。

でも、使い始めた。
本を買って勉強したら、PHP のバージョンが違う。本は5、借りているサーバーは4。
コーディング的には、あまり変わらないということでやってみた。本の通りにやって躓いたこと二点。

■コンストラクタ と デストラクタ
これは本にも書いてあったので、すぐに気が付いた。

 4
  コンストラクタ ・・・・・・ クラス名と同じ関数名
  デストラクタ  ・・・・・・ な し

 5
  コンストラクタ ・・・・・・ __construct または、クラス名と同じ関数名
  デストラクタ  ・・・・・・ __destruct

■関数・変数のスコープ

 4
  関数や関数内ではない場所で定義した変数は、どこからも見える

 5
  それらにもスコープ指定がある。
  クラスを使用した時に使う。変数というより、クラスのプロパティー。
  それらに以下の宣言が出来る。

  public (デフォルト)
   どこからでも、参照可能
  protected
   同一クラス、または、派生クラスからのみ参照可能
  private
   同一クラス内のメソッドからのみ参照可能

この二点をクリアしたら動くようになりました。
これから Smarty そのものの実地のお勉強となります。年のせいにしたくありませんが、なかなか身につきません。何度も同じコトを調べたり。

以降は、Smarty で躓いたことを(自分が何度も調べないで済むように)、書いてゆくことになると思います。

==========================
121 0910 コパン

有名なパン屋さんらしい。ピザセットを食べる。
生地が薄くてビックリ。チーズや具の味を
邪魔しないし引き立てているくらい。

1,500円で、サラダとスープと飲み物が付く。
どれもいい加減なものはなく、グッド。
水もグッド。

| | コメント (4) | トラックバック (0)

2005年12月 8日 (木)

パラメーター付き自己アドレスの参照

PHP でスクリプトを書いていると、そのスクリプト自身へのリクエストをするために $_SERVER["PHP_SELF"] という変数を使うことは、誰でもご存知だと思う。
しかしこれは、パラメーターなしの裸のスクリプト名になる。

「犬とゆく」のフル画面モードでは、
http://www.inutalk.info/yuku/index/index.php?url=http://www.inutalk.info/yuku/in/_rep/_.htm

と、?以降に(GETで)パラメーターとして URL を入れている。これがないとページが表示できない。
htm ファイルならまだしも、php スクリプトも読み込む仕様になっているので、ここが取得できないと困ってしまう。

このパラメーター付きの自己 URL(?)の取得方法を調べたが、すぐには分からなかったので、備忘録としてここに書いておきます。

このような場合、使うのは、$_SERVER["REQUEST_URI"]
(最後は L ではなく I )

たぶん、また役立つ時がくるだろう。また、他の人のお役に立てれば幸いです。

| | コメント (0) | トラックバック (0)

2005年2月10日 (木)

register_globals

最近の php は、register_globals のデフォルトは「off 」になったと読んだので、それを前提にコーディングしていた。
今日、間借りしているサーバーの設定を確認したら「on 」。あらら・・・セキュリティーの問題は?

セキュリティーの問題は別にして、そういうことならコーディングは至って簡単。しかし、今まで「off 」だと思って書いていたので、これを「on 」用に書き直すのは悔しい。それに、将来サーバーを引っ越すかもしれないし。(こういう時にドメインを取っておくと強い!)

と強がりをいって、自分を虐めている今日この頃(そんな余裕あるのか!)

17 0210  MADO

| | コメント (0) | トラックバック (0)

2005年1月31日 (月)

ちゃんと勉強していないもんで・・・

行き当たりバッタリで、ちょっとしたプログラムを書いています。
PHP という言語はよく出来ていて、そんなやり方でも、キチンと動作するものが出来てしまいます。

調べながら、作業を進めていくうちに「あ、こんなのあったんだ。あんなに悩んだアソコは数行で済むのに、」と思うこともあります。

2004.12.11.の書き込みも、extract 関数の使い方を知らずに、あんなことを書いてしまいました。
言い訳として「各引数を必要に応じて処理する場合は、あの方法になるのかな」と思っています。

オオボケと思ったのは、file_get_contents を知らなかったこと。古典的な、open > read のループ > close をやってしまいました。(今、動いているので直す気、無し。)

そんな私のプログラムも、動くし、コードの見通しもそれなりにいい。 PHP って凄いな、と思っている今日この頃です。
ちなみに、作っているのはコレです(バナーの処理を悩み中)。

| | コメント (0) | トラックバック (0)

より以前の記事一覧