エントリー

カテゴリー「制作」の検索結果は以下のとおりです。

PHPで可逆暗号化

PHPでは mcrypt_generic() を使えば可逆暗号化ができ、mdecrypt_generic() で復号化できます。…が、使い方がちょっとややこしかったのでメモ。関連する関数を色々と呼び出す必要があります。

具体的には、以下のコードで暗号化ができます。

<?php

//暗号化するデータ
$plain_text = 'これは秘密のメッセージです。';

//暗号化&復号化キー
$key = md5('KQAHGOEUXD');

//暗号化モジュール使用開始
$td  = mcrypt_module_open('des', '', 'ecb', '');
$key = substr($key, 0, mcrypt_enc_get_key_size($td));
$iv  = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);

//暗号化モジュール初期化
if (mcrypt_generic_init($td, $key, $iv) < 0) {
  exit('error.');
}

//データを暗号化
$crypt_text = base64_encode(mcrypt_generic($td, $plain_text));

//暗号化モジュール使用終了
mcrypt_generic_deinit($td);
mcrypt_module_close($td);

//結果を表示
echo "<!DOCTYPE html>\n";
echo "<html lang=\"ja\">\n";
echo "<head>\n";
echo "<meta charset=\"utf-8\" />\n";
echo "<title>暗号化テスト</title>\n";
echo "</head>\n";
echo "<body>\n";
echo "<h1>暗号化テスト</h1>\n";
echo "<dl>\n";
echo "<dt>暗号化前</dt><dd>" . $plain_text . "</dd>";
echo "<dt>暗号化後</dt><dd>" . $crypt_text . "</dd>";
echo "</dl>\n";
echo "</body>\n";
echo "</html>\n";

?>

この場合、これは秘密のメッセージです。 という文字が暗号化されます。KQAHGOEUXD は、暗号化と復号化に使うパスワードのようなものです。この値を知っている人だけが、このデータを復号化できます。

実行すると、以下のように暗号化前の文字と暗号化後の文字が表示されます。

暗号化テスト

暗号化前
  これは秘密のメッセージです。
暗号化後
  eVVX5OPG0Vj4L49cuq8A3KT1R2nljAIPn74vAw0d/QbYQ1CfUApMlqSpSkyDjDvi

復号化は以下のようにします。

<?php

//復号化するデータ
$crypt_text = 'eVVX5OPG0Vj4L49cuq8A3KT1R2nljAIPn74vAw0d/QbYQ1CfUApMlqSpSkyDjDvi';

//暗号化&復号化キー
$key = md5('KQAHGOEUXD');

//暗号化モジュール使用開始
$td  = mcrypt_module_open('des', '', 'ecb', '');
$key = substr($key, 0, mcrypt_enc_get_key_size($td));
$iv  = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);

//暗号化モジュール初期化
if (mcrypt_generic_init($td, $key, $iv) < 0) {
  exit('error.');
}

//データを復号化
$plain_text = mdecrypt_generic($td, base64_decode($crypt_text));

//暗号化モジュール使用終了
mcrypt_generic_deinit($td);
mcrypt_module_close($td);

//結果を表示
echo "<!DOCTYPE html>\n";
echo "<html lang=\"ja\">\n";
echo "<head>\n";
echo "<meta charset=\"utf-8\" />\n";
echo "<title>復号化テスト</title>\n";
echo "</head>\n";
echo "<body>\n";
echo "<h1>復号化テスト</h1>\n";
echo "<dl>\n";
echo "<dt>復号化前</dt><dd>" . $crypt_text . "</dd>";
echo "<dt>復号化後</dt><dd>" . $plain_text . "</dd>";
echo "</dl>\n";
echo "</body>\n";
echo "</html>\n";

?>

eVVX5OPG0Vj4L49cuq8A3KT1R2nljAIPn74vAw0d/QbYQ1CfUApMlqSpSkyDjDvi は、先のコードで暗号化した文字列です。KQAHGOEUXD は、暗号化したときと同じ値を指定します。

実行すると、以下のように表示されます。

復号化テスト

復号化前
eVVX5OPG0Vj4L49cuq8A3KT1R2nljAIPn74vAw0d/QbYQ1CfUApMlqSpSkyDjDvi
復号化後
これは秘密のメッセージです。

Perlで特定フォルダ内の全文検索

Windows7でファイル内の文字列を検索したかったのですが、インデックスを作成してみたりフォルダオプションで「ファイル名と内容を常に検索する」に設定してみたりしても、何故か全文検索になってくれませんでした。

専用の検索ツールをインストール…とも思ったけど、後々使えるかもしれないので全文検索ツールをPerlで書いてみた。

##################################################
#ファイル内検索プログラム
##################################################

use strict;

print '検索ワード:';

my $input = <STDIN>;

chop($input);

&search('./', $input);

<STDIN>;
exit;

### 全文検索
sub search {
  my($dir, $word) = @_;

  opendir(DIR, $dir);
  my @dir = sort { $a cmp $b } readdir(DIR);
  closedir(DIR);

  foreach my $file (@dir) {
    if ($file eq '.' or $file eq '..') {
      next;
    }

    my $target = "$dir$file";

    if (-d $target) {
      &search("$target/", $word);
    } else {
      my $flag = 0;

      open(FH, $target);
      while (my $line = <FH>) {
        if (index(lc($line), lc($word)) >= 0) {
          $flag = 1;
        }
      }
      close(FH);

      if ($flag) {
        print $target . "\n";
      }
    }
  }

  return;
}

search.pl とかの名前でファイルを作成して、上の内容を書いておきます。あとはダブルクリックで実行すれば、検索文字を入力できる画面になるので、文字を入力してエンターキーを押します。検索対象は、search.pl を置いたフォルダ内全てです。(PerlがインストールされたWindowsを想定。)

エラー処理が無かったり、文字コードの異なるファイルの検索を想定していなかったり…と色々問題はありますが、ちょろっと検索するくらいなら十分でした。

ただ、EmEditorがインストールされた環境なら「フォルダを右クリック → EmEditorでファイルから検索」を実行すれば全文検索ができると教えてもらったので、実は専用ソフトをインストールする必要も検索ツールを作る必要も無かったという…。_(。゚⊿ 」∠)_

ショッピングカートプラグインと注文管理プラグイン(正式版)

ようやく正式版を公開できました。それなりに長い道のりだった…。_(:3 」∠ )_

PHPでファイルアップロードサイズの上限を変更

とっくにメモしてあると思ったらメモしていなかったので、コピペ&調整で使えるようにメモ。

PHPのデフォルト設定では2M以上のファイルはアップロードできないけど、.htaccess ファイルを作成して以下の内容を書けば上限を変更できる。php.ini の編集権限があれば、そちらで設定してもOK。

php_value max_execution_time 600
php_value memory_limit 512M
php_value post_max_size 288M
php_value upload_max_filesize 256M

サイズは upload_max_filesize < post_max_size < memory_limit となるように設定する。場合によってはApache側の設定も必要。

以下、参考ページ。

ショッピングカートプラグインと注文管理プラグイン(ベータ版)

ショッピングカートプラグインと注文管理プラグイン(どちらもアルファ版)を公開しました。

一週間ほど様子を見てから、問題なければ正式版として公開したいと思います。

以下、アルファ版に対していただいた意見への返信です。

アマゾンのような、ログインしてカートに入れると保存される機能やレビュー(星)機能もあるといいです!

ログインしてカートに入れると保存される機能は、注文管理プラグインに実装しました。

レビュー投稿は、別プラグインとして作る予定リストに入れておきます。

注文者が配送方法を選ぶ形式の他に、計算表内の最安の配送方法を自動的に選択されて注文の合計金額に反映されるような設定にできるとありがたいです。

あと、送料をサークル側が負担する場合もあるかと思うので、この項目自体を表示・非表示できたほうがいいのかも?とも思いました。

都道府県を選択するまで最終的な送料を決定できないので、最安の自動選択は難しいです。配送方法が固定の場合にいちいち選択しなくてもいいように、一番上の配送方法をデフォルトで選択済みにできるようにしました。

現仕様だと支払い方法は項目が一つでも必須選択項目として出てきています。

選択肢がないならわざわざクリックさせるのもなぁと思うので、これも項目自体、フォームに反映させるかさせないかの選択肢があってほしいです。

配送方法と同じく、一番上の支払い方法をデフォルトで選択済みにできるようにしました。

現状ではファイルアップロードの形式のみですが、URL指定で通常のページ(ページ機能使った小説本文のサンプルとか)を指定できるといいです。

その際はURLを別窓(_blank)指定で開ける選択肢があるといいなと思います。

「オプション」として入力項目を追加できるので、それでサンプルページのURLを掲載する方法を解説したいと思います。

商品一覧ページでも印刷形式(オフセット等)やページ数など詳細を表示されていてほしいです。

でも表示はなるべく簡易にしたい人もいると思うので、これも表示・非表示を選べるといいと思います。

迷ったのですが、デフォルトで商品一覧でもそれらを表示するようにしました。不要な場合、templates/plugins/catalog/default.html を編集して削除すればOKです。

表示を追加するのは難しいかもしれませんが、削除するなら難しくないかなと思うので。

現状、15禁と18禁の選択のみですが、カテゴリ同様に項目のメンテナンスをしたいです。

視覚的に「全年齢」を項目に入れたかったり、「20禁」もあるかもしれませんし。

files/plugins/catalog_defines/targets.csv を編集すれば項目を増減できます。データ形式は機能解説の「対象の編集」に記載しました。

該当する商品がない項目は非表示をデフォルトにして欲しいです。

標準機能のカテゴリー一覧などで、該当0でも項目を表示させているのでそちらに合わせて「常に表示」としました。

年齢制限のある作品は、現状、その個別ページを開いた時にtarget画面に自動できりかわり、認証前には一覧には表示されなくなっていると思います。

これを、認証しなくても一覧に表示できるかどうかを選択できるようにはできないでしょうか?

「デフォルトで15禁に認証済み」「デフォルトで18禁に認証済み」のように、訪問者の初期値を設定できるようにしました。設定方法は機能解説の「設定の編集」に記載しました。

初めて注文する人用に通販利用方法が説明してあるページを作成

普通にfreoのページ機能などで作るか、テンプレートを編集して説明を掲載すればいいかなと思うので、未対応です。そういう意味でなければ詳細をお知らせください。

一つのリンク先にサンプル画像を原寸で並べて表示する

templates/plugins/catalog/view.html を編集すれば可能です。

1種類の商品をn個以上はカートに入れられない

商品登録時、「一度に購入できる最大数」で設定できます。

連絡事項の入力内容に特定の単語が含まれていないと注文完了できない

そのうち機能追加したいと思います。

情報入力画面にチェックボックスを追加(おまけにメッセージカードを付けていいですか?などの希望を取りたいからです)

そのうち機能追加したいと思います。

注文後お礼画面にリダイレクトする

templates/plugins/catalog/order_complete.html が注文完了画面ですが、これを編集すればリダイレクトさせることも可能です。

入金方法によって内容の違う自動返信メールを送信する

ちょっと無理矢理気味な方法になりますが、注文内容によって送信されるメールの内容の一部を変化させることはできるので、そのうち解説を用意したいと思います。

「商品追加しました」「メールアドレスが届かない方がおられますので~」などの事務連絡用ツイッターをナビゲーションに表示

Twitter公式のウィジェットをテンプレートに埋め込めばOKです。

ショッピングカートプラグインと注文管理プラグイン(アルファ版)

ショッピングカートプラグインと注文管理プラグイン(どちらもアルファ版)を公開しました。

汎用性は高くしたつもりですが、薄い本とかCDを個人で売ることを主に想定しています。

商品サイズに応じた配送方法を選択してもらうことができたり、配送方法ごとに支払い方法や地域ごとの送料を設定できたり、年齢認証を設けることができたり、印刷用ページをHTMLテンプレートで編集したりブラウザ上で直接いじったり。などなど。

今はまだ仕様変更が容易なので、「こんな風になっていた方がいい」「こんな機能があった方がいい」「これは意味が解らない」とかあれば、教えてもらえると嬉しいです。

縦書 for Twitter

3月14日からTwitterのWeb版で改行が反映されるようになったので、その日のうちに縦書でツイートするためのツールを作成してみた。

ねとらぼ、ニコニコ、mixiなどなど、色々なところで紹介されたのでちょっと嬉しい。これまで旬の話題に乗じて何か作ることはほとんど無かったけど、タイミングがいいと一気に広まることがあるのだなぁ…と思ったり。

毎回何か思いつくわけではないけど、またいつか何かあって何か思いついたら作るとします。(`・ω・´)

max_input_vars対策にデータをまとめて送信

PHP5.3.9以降では max_input_vars という設定が設けられており、入力データ数が多すぎる場合は自動的にデータがカットされるようになっています。初期値は 1000 なので、入力欄を1500個並べても、PHP側で受け取れるのは1000個までということです。

この設定は、一例ですが .htaccess

php_value max_input_vars 2000

このようにすれば緩和することができます。(この場合、PHP側で受け取れるのは2000個までということです。)

ですがPHPの設定変更を許可されていない環境で、どうしても大量の値を受け取る必要がある時のために、jQueryプラグインでデータをまとめて送れるようにしてみました。

入力欄が大量に並ばない設計にすればいいですが、今更プログラムの設計を変えるのは難しいよ。という場合に。

最近いじったjQueryプラグイン

最近自分用に作ったjQueryプラグイン。

最近いじったjQueryプラグイン。

PHPばかり触っていて、あまりJavaScriptで色々作れず…。_(。゚⊿ 」∠)_

メディア管理機能強化のための下調べ

主にfreoのメディア管理機能強化のために色々と調べていたけど、どれも自分の技術で実現可能っぽい。

具体的には、ブラウザ上で画像をトリミングしたり、縮小・反転・回転したり、画像に直接何か書いたり、サイズが違ってもレイアウトが崩れないようにグリッドで並べたり。

ブラウザ上で画像をトリミング
よくあるペイントツールみたいに、範囲を指定して切り抜き。以前に作ったもの。
画像を反転
ImageMagickなら命令一発で反転できる。GDには反転命令が無いみたいなので、ピクセル操作で反転。
画像を回転
ImageMagick・GDともに命令一発でできた。あと、画像の縦横比率を保持して縮小…は、普段から使っているので何も難しいことは無い。
画像をグレースケールに変換
ImageMagick・GDともに命令一発でできた。
ブラウザ上で直接描画
以前に作ったもの。画像に手書き文字を書き加えて上書き保存…を作るのも(手間はかかるかもだけど)多分難しくは無い。画像と手書き文字をJavaScriptで一枚の画像に合成するのは難しいかもだけど、サーバーサイドで合成すればいいし。
縦横比の異なる画像をグリッドで表示
もっと手こずるかと思ったけど、文字の水平位置を揃えないのなら特に難しいことは無かった。画像一覧は、基本的にこんな表示が良さそう。
縦横比の異なる画像をトリミングして表示
サイズの比率が違う画像とか大きい画像とか極端に小さい画像とかを、CSSでトリミング&サイズ調整して一覧表示。こんな表示もアリかも。

ページ移動

ユーティリティ

カテゴリー

検索

エントリー検索フォーム
キーワード

過去ログ

過去ログ表示フォーム
キーワード

Feed