Perl勉強会・会員専用掲示板

NTサーバで記事が保存できません-[大内 雅司]

2005年9月19日(月) 21時32分
   [localhost]-Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)

加入しているプロバイダがNTサーバで、ロックファイルを使用している掲示板が保存できません。

RE:NTサーバで記事が保存できません-[大内 雅司] 2005年9月19日(月) 21時34分
[localhost]-Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)

NTでは、すでに存在するファイル名に他のファイルをリネームすることができません。 多少ロック機能は低下しますがリネームしない関数をご使用ください。sub data_save { $datafile =~ /(.+)\..+$/;   local($filename) = $1;   if ($filename !~ /.+/) { &error(bad_filename); }   local($tmpfile) = "$filename.tmp";   local($tmpflag) = 0;   foreach (1 .. 10) {     unless (-f $tmpfile) {       if (open(TMP,">$tmpfile")) {         close(TMP);         if (open(DAT,">$datafile")) {           print DAT @DATA;           close(DAT);           $tmpflag = 1;         }         unlink $tmpfile;         if ($tmpflag) { last; }      }    }    sleep(1);  }  $tmpflag;}

http://www1.megaegg.ne.jp/~kansai/

不要な改行-[大内 雅司]

2005年9月19日(月) 21時30分
   [localhost]-Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)

掲示板の記事の最後に沢山の改行を入力すると空白ばかりが表示され、他の記事がずいぶん後ろになってしまいます。 記事の最後にある改行を強制的に削除することはできませんか?

RE:不要な改行-[大内 雅司] 2005年9月19日(月) 21時31分
[localhost]-Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)

if ($QUERY{'comment'} =~ /\r$/) { $QUERY{'comment'} =~ s/\r$//g; }このコードは、受信したコメントから最後の改行コード(\r)を削除しています。 これだけなら最後の1つしか削除できないのでループにします。while (1) { if ($QUERY{'comment'} =~ /\r$/) { $QUERY{'comment'} =~ s/\r$//g; } else { last; }}このコードをフォームからデータ受信してデコード直後に挿入します。

http://www1.megaegg.ne.jp/~kansai/

リムネットを利用しています。-[大内 雅司]

2005年9月19日(月) 21時28分
   [localhost]-Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)

リムネットを利用しているのですが、こちらで紹介されているdomain_name関数ではドメイン名を取得することができません。 何か方法があるのでしょうか?

RE:リムネットを利用しています。-[大内 雅司] 2005年9月19日(月) 21時29分
[localhost]-Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)

リムネットの場合は環境変数$ENV{'HTTP_FORWARDED'}にドメイン名が格納されています。sub domain_name { local($_) = $ENV{'HTTP_FORWARDED'}; local($host) = ''; if (/(\d+)\.(\d+)\.(\d+)\.(\d+)/) {   local($ip) = "$1.$2.$3.$4";   $host = gethostbyaddr(pack('C4',split(/\./,$ip)),2);   if ($host eq '') { $host = $ip; } }  $host;}

http://www1.megaegg.ne.jp/~kansai/

アクセス統計-[大内 雅司]

2005年9月19日(月) 21時26分
   [localhost]-Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)

私のページは、トップページを、フレームで分割しています。 トップは「home.htm」、フレーム左が「contents.htm」、フレーム右が「index.htm」で、「index.htm」に、アクセス統計を呼び出すJavaスクリプトを貼り付けました。 これで、「home.htm」にアクセスがあっても、正常にカウントされるんでしょうか?

RE:アクセス統計-[大内 雅司] 2005年9月19日(月) 21時27分
[localhost]-Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)

アクセスは記録されますが、Javaスクリプトが正確なリンク先を返さなくなり、リンク統計が正確に収集できません。

http://www1.megaegg.ne.jp/~kansai/

返信ボード3の上にドロップメニューの順番について-[大内 雅司]

2005年9月19日(月) 21時25分
   [localhost]-Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)

返信ボード3の上にドロップメニュー(HPのリンク)があります。 これの順番をそろえたいのですがどうすればできるのでしょうか? dropmenu.txtの中の順番を変えても駄目でした。何かこの順番に法則等はあるのでしょうか? できれば自分で変更できるのが好ましいのですが・・・

RE:返信ボード3の上にドロップメニューの順番について-[大内 雅司] 2005年9月19日(月) 21時26分
[localhost]-Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)

このスクリプトでは連想配列を使用しているのでランダムに作成されます。 50音順で良ければforeach (keys %DROPMENU) {をforeach (sort keys %DROPMENU) {に変更することで並べ返ることができます。

http://www1.megaegg.ne.jp/~kansai/

 

Script By Terra