[Ajax + PHP] Web2.0的にHTMLソースを隠す方法

MooToolsで遊んでる時になんとなく思いついた。

HTMLソースを完全に隠すことは無理っちゃ無理だけど、サイトの内容をパクられたりしないように防御する事は出来る。
主要な柱は以下3つ。

  • ファイルの置き場所を隠す
  • ソースを読めなくする
  • アクセスを弾く

ロボット対策、右クリック禁止、Flashサイト化、HTMLソースそのものの暗号化するなど色々あるけど、
Web2.0とか言われている時代なのでAjaxを使う方法もアリなんじゃないかなと思ったわけです。

クローラーにキャッシュされず、メールアドレスも拾われず、右クリックしても無駄、「ソースを表示」選んでも主要部分は見えない。
それらの需要を大体カバーするサイト制作方法についての解説とサンプル。

簡単なデモを作ってみた
(デモはサンプルと構成が異なります)

サイト構成例

  • index.html
    メニューボタン、コンテンツ表示エリアを置く
  • style.css
    スタイルシート
  • view.js
    表示とかHTTPリクエストの制御をする
  • reqest.php
    view.jsからのリクエストを受けてページ内容を返す
  • page/about.php, gallery.php, contact.php
    表示するコンテンツページ

続きを読む

[PHP] ページング機能の仕組みとか作り方とか

ページング機能というのは、「複数に分かれたページの前後ページへ移動するためのナビゲーションリンク」のことで
このブログにも下の方に次のページへ移動させるためのページ番号リンクがありますよね。それです。
名称はページングだったりページネーションだったりしてますが、海外だとpaginationの方が一般的なようです。

先頭の何ページ目かまではページ番号、それ以上は三点リーダーとかでぼかしたりするGoogleライクなものや、
前後への矢印だけしか表示させなかったりするものなど、スタイルは色々ありますが
これが自作しようとすると結構面倒臭い。そしてプログラミング初心者だとまず仕組みが良く分からない。
結構よく使うのに作り方や仕組みの解説をあんまり見ない気がするので書いてみます。

10周年記念にVue.js版を書きました!
[Vue] ページネーション機能の作り方とコンポーネント作成入門

2019/09/12 Vue版に合わせて全面的に書き換え&動作サンプル追加しました

続きを読む

[PHP]闇鍋ジェネレーター

オンラインで闇鍋! はいはいはいはい、意味あんの?とか言わないそこ。 直接見る 登録された具材からランダムで1つ選んで表示。 選ばれた具材は都度削除されていくって仕組みです。 パスワードはpassです ランダムで何かする … 続きを読む

[PHP]各曜日ごとの日替わり・特定の日付で表示させる

日曜~土曜の曜日ごと、または特定の日付で表示をさせるサンプル。
定期的に開催されるイベント告知やトップページのお知らせなどに。

携帯サイトでも使えます。

<?php
$time = time();
$day =date("j",$time);
$jpweek = array("日曜日は","月曜日は","火曜日は","水曜日は","木曜日は","金曜日は","土曜日は");
$event = array("sunday","monday","tuesday","wednesday","thursday","friday","saturday");
$week = date("w", $time);
?>

<?php
print date("Y年n月j日",$time).$jpweek&#91;$week&#93;."<br />";
print $event[$week];
?>

続きを読む

[PHP]サイト内のページに外部のRSSを表示する

前にwordpressでRSSを取得して表示という記事を書いたが、普通のWebサイトでもRSSの表示は出来る。
ヘッドラインとしてトップページにブログのRSS表示するもよし、ニュースリンクとしてランダム表示するもよし。
使うのはWordpressで使われてるのと同じRSSパーサーMagpieRSSです。

手っ取り早く動作を見てみる::

  1. magpierss-0.72ダウンロードして解凍
  2. 表示したいページと同じ階層にフォルダUP
  3. 表示したいページをPHPにする
  4. 表示したいページにrequire('magpierss-0.72/rss_fetch.inc');を書く
  5. $rss = fetch_rss($url);として、$urlに表示したいRSSのフルパスを書く
  6. print_r($rss);を書く

cacheディレクトリは自動的に作成される。(magpierssフォルダ内の不必要なものは削除してもいい)
ずらずらっとRSSが表示されると思います。が、多分文字化けしてるはず。

続きを読む

[PHP]テンプレートエンジンとベンチマーク

PHPで動作するテンプレートエンジンはちょっと使いたいだけならクラスタイプが便利ですが、速度が気になるところ。
Smarty Benchmarksで主なテンプレートエンジンのベンチマークサンプルが見れます。
使われてるベンチマークのソースも入手できるので自分で比較を試したい時に便利かも。

テンプレートベンチマーク
上の画像はvar_loop 50 iterationsの結果。
10と比べると順位が入れ替わってるんですが、smartyは高機能だから仕方ない感じだろうか。

続きを読む

[PHP]Wiki記法テキストのHTML置換サンプル

最近よくやるwiki記法っぽく書いたテキストのHTML置換サンプルソースです

  • [br]を改行タグに変換
  • ||で囲まれた文字にstrongタグを追加
  • ”で囲まれた文字にemタグを追加
  • [[説明文>リンク先のURL]] 説明文へリンクを張る
  • color(色名){文字} spanタグで文字色変更

続きを読む

[PHP]オブジェクト指向プログラミング

初心者な自分用メモ、みたいなもんです…。
把握までの過程をメモってるので同じく初心者には分かりやすいかも?
考え方はJavacriptも同じだと思う。

名称

とりあえず呼び方がややこしい。初心者はまずここが覚えられない。

  • メソッド(method)
    クラス内にある関数(function)のこと
  • プロパティ(property)
    クラス内の変数(variable)のこと。メンバ変数も同じ意味
  • コンストラクタ(Constructor)
    初期化用のメソッド。オブジェクト生成時にやりたいことを入れる
  • 継承(Inheritance)
    クラスを元に新しいクラスを作る。上手いこと作らないとかえって面倒なことになるらしい

続きを読む

[PHP]可変変数について

こういうことできないのか…と思ってたことが出来る事が判明。 $hoge1 $hoge2 $hoge3 … と末尾だけ違う連番の変数があって各変数をifで検証したいとき ifに$hoge + $i って書いてforとかで繰 … 続きを読む