Perl Xampp 2020年11月10日 12:06   編集
Xamppに同梱されているPerlはバージョンが古いので、ActivePerlの最新版に入れ替えていたが、ActivePerlよりさらに新しいバージョンが公開されているStrawberryPerlに入れ替えてみた。(現在ActivePerlの最新版は5.28だが、StrawberryPerlでは5.32が出ている。)

http://strawberryperl.com/から最新版のstrawberry-perl-5.32.0.1-64bit.msiをダウンロードする。インストール先を指定できるので、今まで使っていたC:\xampp\perlにインストールしてみたが、なんかうまくいかない(c:\usr\local\bin\perlがperl.exeのパスになるためには、C:\xampp\perlではなくC:\xamppにインストールすべきだったような感じ)。
結局C:\xampp\perlは元に戻して、デフォルトのインストール先C:\Strawberryにインストールすることにした。
続きを読む
counter:2,118
Perl 2020年10月15日 14:13   編集
いまさらだが、XamppのPerlをバージョン5.28にアップデートすると、いくつかエラーが発生するようになった。エラーログを見ると
Can't locate init.cgi in @INC (@INC contains: ./lib C:/usr/local/site/lib C:/usr/local/lib)
というようなエラーがあちこちで発生している。init.cgiが@INCの中に見つからないというエラーで、カレントディレクトリにあるモジュールの読込で発生している。確かに@INC contains ではカレントディレクトリは含まれていないようだ。
セキュリティの関係でバージョン5.26から@INCにカレントディレクトリが含まれないようになったらしい。
とりあえず動くようにするには
require 'init.cgi';
というような行でエラーが発生しているなら
require './init.cgi';
に変更して明示的にカレントディレクトリであることを表記して読み込むか、スクリプトの最初の方で@INCにカレントディレクトリを追加しておけばいいようだ。
@INCにカレントディレクトリを追加する方法としては
push(@INC,'.');
あるいは
use lib '.';
などがある。pushだと@INCの最後に、use lib だと先頭に'.'が追加される。
推奨されているのは
use FindBin;
use lib $FindBin::Bin;
これはFindBinモジュールを読み込んで、それによって利用できるようになるパッケージ変数$FindBin::Bin(実行スクリプトのあるディレクトリパス)を@INCに追加することになる。
これだと@INCの先頭に'C:/xampp/htdocs/local/test' のようなパスが追加されることになる。
counter:4,488
PHP 迷惑投稿対策 2020年03月25日 19:58   編集
Kent-Webのサポート掲示板で教えてもらったjQueryのslidelockというスパム対策機能を、この用語集作成PHPのbbsプラグインで使えるようにしてみました。→PHP/用語集作成
タイトル
投稿者
編集パスワード
コメント
添付
キーワード
counter:9,284
Xampp PHP 2019年11月16日 14:07   編集
いつのまにかXamppの64bit版がでていた。というか64bitに変更されたのかな。
同梱のPHPも64bitになっているようで、これで2038年問題も解消されたようだ。(PHPの時間ログについて参照) 32bit版ではエラーになっていた
$epoc_sec =  2147483648;
echo date("Y/m/d H:i:s",$epoc_sec);
も問題なく実行できる。
これはローカルだけの問題でWEBサーバーの方はとっくに64bitになっていたのかもしれない。ここのサーバーのPHPも64bitになっているようだ。
counter:3,458
PHP 2018年05月25日 16:37   編集
ローカルPCにインストールしているXamppをアップデートしてPHPのバージョンがPHP7.2.5になったらあちこちで警告が出るようになりました。

create_function()は非推奨

まず、create_function関数が非推奨になったためにその警告が出ます。
create_functionを使わず、ネイティブの無名関数を使ったほうがいいということです。具体的には
create_function( '$a,$b', 'return strlen( $b ) - strlen( $a );' )

function($a,$b) { return strlen( $b ) - strlen( $a ); }
に変えます。

each()も非推奨

このほかeach()関数も非推奨になっています。mpdfモジュールで
while(list($file,$info)=each($this->images)) {
という部分で警告が出ているので、
foreach ($this->images as $file=>$info) {
と変更すると警告は出なくなりました。

非配列に要素を追加すると警告

mpdfモジュール関係ではcssmgr.pdfで
if (!isset($attr['ID'])) { $attr['ID']=''; }
のような行でも警告が出るようになりました。
$attr['ID']がsetされてなかったら、''を代入するという処理です。$attrが未定義の場合も問題ないはずでなぜエラーになるかわかりませんでしたが、調べてみると$attrの型がstringになっている場合もあって、その状態で実行するとエラーになっているようです。エラーを回避するためにとりあえず上記の式の前に
if (isset($attr) && !is_array($attr)) { $attr = array(); }
を追加するとなんとかエラーが出なくなりました。

文字列の計算をすると警告

$tm1 = microtime();
$tm2 = microtime();
echo $tm1 - $tm2;
を実行すると警告が出るようになりました。microtime()は、現在の Unix タイムスタンプをマイクロ秒単位で返す関数ですが、デフォルトではfloatではなく、
'0.84479900 1527156353'
のような文字列を返しています。PHP7.1ではこの文字列のまま計算しても適当にfloatに変換してくれていましたが、7.2では警告が出るようになりました。microtime(True)を指定するとfloatを返しますが、小数点以下の桁数が減るので、文字列のままにした方がより精度の高いマイクロ秒が得られます。文字列は小数部分と整数部分をスペースで区切っているので、小数部分だけを抽出するために
list($tm1) = explode(' ',microtime());
list($tm2) = explode(' ',microtime());
echo $tm1 - $tm2;
のように変更すると警告は出なくなりました。

配列の追加

キーが数値の配列に追加する場合は
array_push('abc')
とするより
$array[] = 'abc';
の方が速いらしいということで、もっぱら下を使っていますが、追加する変数の型が配列になっていないとエラーが出るようになりました。たとえば
$array = '';
$array[] = 'abc';
はエラーになるので、$arrayの型がarray以外になっている可能性がある場合は、
unset($array)
あるいは
$array = array();
と初期化しておく必要があります。これは[]を使って配列を追加する場合だけでなく、配列型になっていない変数を配列として扱おうとすると、同じようなことが起こると思われます。

バージョン7.2では、型について厳格になったようです。別の型ということになっているのにその型ではできない処理をしようとしたら、前のバージョンではその処理が行える型に変更したりする部分もあったが7.2以降ではエラーや警告を出すということになっているようです。
counter:4,784
CGI 2018年03月01日 10:31   編集
時間単位での細かい予定を書き込み、グラフ表示する予定表です。バグなどありましたら、CGIサポート掲示板までお願いします。
スパム投稿対策を追加しました。(2018/01/25)
誰でも入力・閲覧できるが、編集・削除は入力者のみというモードを追加しました。(2017/03/29)
続きを読む
counter:6,927
迷惑投稿対策 2017年05月22日 16:34   編集
Clip Board改造版のサンプルとして設置している掲示板に、また新しいタイプのスパムが来ているようだ。こちらも調査したい。
まだ投稿キーも搭載されていない頃のバージョンをベースに改造したものだったが、改造版投稿キーに入れ替えていたので、そこそこスパムはブロックできていたようだ。オリジナルのClipboardの最新版に更新した上で、URLを引き継ぐためにディレクトリ名とcgiのファイル名は以前のclip/clip.cgiに戻した。改造版の方もとりあえずディレクトリ名を変更して残しておくことにする。

掲示板(YY-BOARD)と同様に、ひらがなチェック、投稿IDチェック、ダミーフィールド処理を追加し、どの処理が有効かログを残すことにする。

掲示板2の方はアクセスが少ないが、投稿IDを送ってこないというタイプのスパムがいるようだ。これは初めてのケースだ。投稿キーはクリアし、スタイル指定で隠したダミーフォールドの値は送ってきているのに、hiddenを指定したinputタグに気づかないのも不思議だが、単純にオリジナル掲示板CGIで送られるはずの値を送っているだけかもしれない。
いずれにしても、新しいタイプではなく、むしろ古いタイプのスパムのようだ。投稿IDを送ってこないので、時間を計測する必要も無く、その時点で拒否するだけで済むので対策は簡単だ。
と思っていたら、掲示板の設定ミスで投稿IDがフォームにセットされていなかったことが判明^^;
ひらがなチェックや投稿キー、ダミーフィールドにも引っかからず、投稿IDだけで拒否していたスパムもあるようなので、気になる。ダミーフィールドに引っかからないということは、HTMLを見ていないという可能性も残っているが。

それと、フォームにアクセスせず、いきなり投稿してくるタイプがあることも拒否ログを見てわかった。

こちらの掲示板はスパム投稿の頻度は低いが、たまに来るものの中に投稿ID、ダミーフィールドどちらも突破してくるスパムがある。やはりJavaScriptを使わざるを得ないか。
counter:5,736
迷惑投稿対策 2017年03月24日 20:53   編集

リンク元 ユーザーエージェント

スパム投稿の動向を分析するためで環境変数でリンク元やユーザーエージェントをログに残してみたが、こうした情報もスパムかどうか判定するヒントになるかもしれない。
リンク元はPerlの場合、環境変数$ENV{'HTTP_REFERER'}で得られる。たとえばこのページのリンクから掲示板にアクセスしたら
http://shade-search.com/sts/term/term.php
がHTTP_REFERERになる。いったん掲示板を開いて掲示板の他のページから移動した場合は掲示板CGIのURL たとえば
http://shade-search.com/sts/fsw/yybbs/yybbs.cgi?type=2
のようなものになるはずだ。
続きを読む
counter:7,212
迷惑投稿対策 2017年03月03日 21:03   編集
掲示板の迷惑投稿を防ぐ方法としては、ロボットではなく人が投稿していることを確かめるため、ロボットには読めないはずの画像による文字を読ませて入力させたり、複数の画像から質問に該当するものを選択させたり、掲示板に投稿する利用者に一手間かけさせるものが多い。
ここでは、なるべくユーザーに余計な手間をかけさせず、スパムを防止する有効な方法がないものか考えていきたいと思う。

投稿ID方式

フォームに隠しパラメータを仕込んでおいて、その値を送ってこない投稿は不正投稿としてブロックするという対策法は昔からある。しかしフォームのhtmlを解析しているのか、正しい隠しパラメータを送信してブロックを回避するスパム投稿は多いので、これだけではあまり効果のある対策とはいえない。フォーム表示のたびにランダムな値に変更しても同様だ。
しかし、最近これに投稿までの時間を計測して、あまりに早いものはスパムとして判断してブロックするという対策がどこかで紹介されていた。
続きを読む
counter:7,273
2017年02月28日 16:37   編集
タイトル
投稿者
編集パスワード
コメント
添付
キーワード
[1] [2] [3] [4] [5] [6] 過去ログ 投稿順に表示 スレッドごとに表示
  • 詳細予定表の動作環境について 2017/01/31 14:36 櫻井  返信  編集
    詳細予定表1.15を使わせていただいていますが、サーバーのperlバージョンが5.18の時には問題なく動いていたのですが、5.24にアップしてから動かなくなってしました。
    5.24での使用は無理でしょうか?アドバイスお願いいたします。

  • Re: 詳細予定表のカスタムについての相談です。 2017/01/25 15:31 貴田  返信  編集
    管理人様

    お世話になっております。
    ご返信いただきありがとうございます。

    >「(1) 誰でも編集可能 誰でも閲覧可能」モードに、利用者は自身が入力したもののみ編集できる機能を追加した感じです。

    これが可能と回答頂けて大変感激しております。

    重複登録を避ける機能までは必要ありません。
    あくまで利用者が予定表閲覧時に「この時間は既に他の人の予約が入っているな」と分かればいいのです。
    もし重複登録があった場合は、管理者が該当の予定を登録した利用者に連絡の上、修正か削除する予定です。

    是非宜しくお願い致します。
  • Re: 詳細予定表のカスタムについての相談です。 2017/01/24 19:53 管理人  返信  編集
    >「(1) 誰でも編集可能 誰でも閲覧可能」モードに、利用者は自身が入力したもののみ編集できる機能を追加した感じです。
    これは可能だと思いますが、
    同時間帯の重複登録を避ける機能はないので、

    >同時間帯の重複予約防止のために、予約の空き状況を利用者全員が確認できるようにしたい

    これはちょっと難しいですね。
  • Re: 詳細予定表のカスタムについての相談です。 2017/01/24 18:38 貴田  返信  編集
    管理人様

    ご返信いただきありがとうございます。

    「管理者のみすべての(あるいは選択した)個人ページの予定を閲覧、編集可能にすることで実現できると思います。」とありましたが、
    仮に利用者毎の個人ページを登録した場合、個人ページの予定はメインの予定表には表示されません。(独立した予定表ですよね?)
    同時間帯の重複予約防止のために、予約の空き状況を利用者全員が確認できるようにしたいので、各利用者が個人ページで登録した予約(予定)をメインの予定表にも反映・表示させていのですが、それは可能でしょうか?

    または利用者毎に個人ページを設定するのではではなく、予定表は1つとし、利用者毎にはユーザー名とパスワードのみを発行し、自身が入力した予定のみ修正・削除できる仕様は可能でしょうか?
    「(1) 誰でも編集可能 誰でも閲覧可能」モードに、利用者は自身が入力したもののみ編集できる機能を追加した感じです。

    ※いずれの仕様でも管理者は全ての予定内容を修正・削除できる機能は欲しいです。

    こちらの希望ばかりお伝えして申し訳ございませんが、ご検討いただきますようお願い致します。
  • Re: 詳細予定表のカスタムについての相談です。 2017/01/23 12:49 管理人  返信  編集
    詳細予定表は、現在以下の3つの編集モードが選択できます。

    (1) 誰でも編集可能 誰でも閲覧可能
    (2) 管理者のみ編集可能 誰でも閲覧可能
    (3) マルチモード (2)に加えて、個人ページを作成可能 個人ページは作成者のみ閲覧可能

    貴田さんの希望されることは、この(3)のマルチモードにさらに
    管理者のみすべての(あるいは選択した)個人ページの予定を閲覧、編集可能にすることで
    実現できると思います。

    実は同じような要望を以前いただいたことがありますが、
    手つかずのままでした。
    近々バージョンアップで対応しようと思うので、
    しばらくお待ちください。
  • 詳細予定表のカスタムについての相談です。 2017/01/18 16:05 貴田  返信  編集
    日頃は大変お世話になっております。
    詳細予定表を店舗の予約管理用に使わせていただいておりますが、
    仕様を変更できないか相談したくて連絡させて頂きました。

    希望の仕様は、
    ?管理者(店舗関係者)以外に、予定表訪問者(店舗会員)も空き時間に予定を入力できる。
    ※管理用パスワードを会員に教えれば現状でも可能ですが…

    ?会員は自身が入力した予定のみ変更・削除できる。(Aさんの予定をBさんが変更・削除することはできない)
    ※現状管理用パスワードが1つのため、この使い方ができません。

    ?管理者(店舗関係者)は予定の入力と会員が入力したものを含む全ての予定を変更・削除できる。

    以上です。

    変更の可否や請けて頂ける場合の費用等、ご回答いただけると幸いです。
    宜しくお願い致します。
    貴田
  • Re: マルチアップローダのイメージファイルの閲覧仕様について 2015/09/09 20:42 管理人  返信
    すみません。このスレッドに気づきませんでした。
    もう2か月ぐらい過ぎているので、
    もう見てらっしゃらないかもしれませんがお答えします。

    普通ならアップロード先のURLを指定すればアップロードされたファイルを直接ブラウザで表示出来るはずですが、
    multiuploadはセキュリティのため、アップロード先のディレクトリへの直接のアクセスをいっさい禁止していますので、
    ご希望の処理をするのは残念ながら難しいです。
  • マルチアップローダのイメージファイルの閲覧仕様について 2015/07/16 19:53 蛮人  返信
    マルチアップローダについてなのですが
    アップロードされているイメージファイルをダウンロード選択をしてから閲覧するのではなく
    リンクをクリックしたらブラウザによって開く、というようにするにはどうしたらいいのでしょうか
    当方プログラミング知識がないためよろしければご教授ください。
  • Re: 改良して・・・に返信いただきましてありがとうございま 2014/04/27 22:44 watapi  返信  編集
    (^^)

    詳細スケジュールは、この連休にも大活躍しております。
    妻がスマホで確認できるので便利だと。時間単位のスケジュールは好評です。
    今までは一般的な日にち単位でしたが、今は時間単位です。
    深夜作業の次の日は明け休みで買い物に付き合ってという家族のスケジュールにも私が
    寝ている間にわかるので便利です。

    >その例でいうと、各家族ごとにschedule.cgiを設置し、
    >さらに別のschedule.cgiですべてのログを見に行って表示するようにカスタマイズしました。

    なるほど!!!って思いましたが・・・改造するとなると1日作業ですね。。。(あまり詳しくないので)

    >閲覧OKな新たな個人モードを追加 って便利かもしれません。。。

    色は・・・仕事、帰省、買い物、予防接種・・・などなど。使ってるので個人では色別にできない状況です。。。

    たとえば・・・
    普段は、父、母、娘、息子と個別で入力しておいて
    家族全員モードでログインすると、以下のように表示されたらいいなと。


    4/27 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ...........

     父 |------------仕事------------|
     母         |-料理教室--|
     娘                |-----かいもの-----|
     息子                     |---塾-----|

    なんて一方的に希望書きまくりですいません。
    無料で提供していただいてるのでめんどくせいやつだなーと思われたくないので
    気が向いたら改造していただけると幸いです。

    ホント便利です。ありがとうございます。


  • Re: 詳細スケジュール できれば・・・改良してもらいたい部分が。。 2014/04/17 20:53 管理人  返信
    使っていただいてありがとうございます。

    そういう使い方もあるんですね。
    といいながら、実は似たような使い方をしたことがあります。
    その例でいうと、各家族ごとにschedule.cgiを設置し、
    さらに別のschedule.cgiですべてのログを見に行って表示するようにカスタマイズしました。

    今のバージョンでは個人専用の入力ができますが、閲覧も個人専用になってしまうので、
    閲覧OKな新たな個人モードを追加するか、管理者設定で個人の情報を表示できるようにすると何とかなるかなと思います。

    そのうち改造してみたいと思います。

    現状のままでやるなら、家族ひとりひとりの色を決めておくと、わかりやすいかなと思います。
  • 詳細スケジュール できれば・・・改良してもらいたい部分が。。 2014/04/14 23:57 watapi  返信  編集
    (^^)
    ついに探していた予定表に出会えました。
    ありがとうございます。よく考えられたスケジュールです。
    いつまでも家族の予定表として使っていきたいと思います。
    と、いうのも、私が夜間、休日も仕事だったりして、事前に家族に連絡するもうまく伝わらず
    ホワイトボードでやっていたのですが、時間を書くのが面倒で。。。
    パパは明日、いるのかいないのか。。。みたいな。
    で、そこは解決しました。
    ですが、この予定表に、家族全員の予定が表示されていたらなんと素晴らしいことか。。。
    無理かもしれませんが、次期バージョンで実現できたらうれしいなー!と思います。

    素敵なCGI作成ありがとうございます。これからもお仕事頑張ってください。
  • Re: 詳細予定表version1.14のパスワードについて 2014/02/12 11:10 管理人  返信
    Digest::MD5モジュールが使用できる場合は、パスワードの暗号化にMD5を使うようにしたので、
    8文字を超えるパスワードでも使えるようになりました。

    MD5が使えないサーバーの場合でも、crypt関数で16文字までは認識できるようにしましたので、
    お試しください。
  • Re: 詳細予定表version1.14のパスワードについて 2014/02/08 14:44 aki  返信  編集
    ご返答ありがとうございます。
    仕様ということで了解をいたしました。

    8文字までは同じパスワードを複数設定して使用していましたため、
    今後パスワードは8文字以内でつけるようにしたいと思います。

    早々にご回答をいただき、ありがとうございました。
  • Re: 詳細予定表version1.14のパスワードについて 2014/02/08 13:55 管理人  返信
    これはおっしゃるとおりの仕様になっています。

    詳細予定表にかぎらず、パスワードを登録するタイプのCGIでは、
    セキュリティのため、すべてcrypt関数で暗号化した上で保存しているのですが、
    このcrypt関数が9文字以降を無視するためにそうなってしまっています。

    しかし考えてみれば、パスワードの文字数は多いほど安全性は高いので、
    暗号化せずにそのまま保存したほうが、むしろセキュリティが保てるという場合もあるかもしれません。

    9文字目以降を分割してもう一度cryptするといった方法もあるかもしれないので、
    パスワードに関してはもう一度検討してみたいと思います。
  • 詳細予定表version1.14のパスワードについて 2014/02/07 21:50 aki  返信  編集
    こんにちわ。詳細予定表を使わせていただいております。

    詳細予定表のパスワードについてです。
    管理者用のリンクからログイン時に、8文字までは照合し、9文字以降は無視されているように思います。

    下記のようなかんじです。
     1234567890 とパスワード設定をした場合に、
     12345678xxxxx 9文字目以降は何を入れても合致する。

    ご確認をいただければありがたく思います。よろしくお願いいたします。
  • Re: 詳細予定表の利用規約 2013/09/27 14:04 管理人  返信
    CGIの利用について」をアップしました。
    http://shade-search.com/sts/fsw/wiki.cgi?p=CGI%A4%CE%CD%F8%CD%D1%A4%CB%A4%C4%A4%A4%A4%C6
  • Re: 詳細予定表の利用規約 2013/09/26 20:31 岡  返信
    返信ありがとうございます。
    利用規約(ライセンス条件)の作成お願いいたします。
  • Re: 詳細予定表の利用規約 2013/09/26 20:07 管理人  返信
    そういえば、特に作ってなかったですね。
    あったほうがいいので、作ることにしますが、現状はないということになります。

    個人・法人に限らず自由に使用することができるが、著作権は放棄していません
    というスタンスになるのかな。
  • 詳細予定表の利用規約 2013/09/26 19:49 岡  返信
    詳細予定表の利用規約(ライセンス条件)のようなものはありますでしょうか?
  • Re: マルチアップローダ Macintosh 2013/04/18 13:14 Fra  返信  編集
    管理人様
    お世話になります。僅かですがお役に立つ事ができて光栄です。

    当方では、主にこちらからファイルを送るためにマルチアップローダを利用させていただきます。

    そのため、

    当社スタッフだけが、管理者が作成したユーザーアカウントにユーザーパスワードでログインし、ファイルを受け取る相手は常にゲストログインしてもらいます。

    先方からファイルを送ってもらう時は、こちらからマルチアップローダで空メールを送り、先方にファイルのアップロードだけをしてもらう。

    そのようなシンプルな使い方を考えています。

    気が付いた事がありましたら、またご連絡します。
[1] [2] [3] [4] [5] [6] 過去ログ 投稿順に表示 スレッドごとに表示
counter:17,481