現在、HPの大規模改修中(自鯖移行中)でせっかくなのでHSPでCGIでもやってみようかと思いました。
自分のパソコンで試しているうちは順調にHP上でHSPのCGIが動いていたんですが、
一部の友達から"CGIが読めない"との連絡をもらいました。
自分のパソコンでは問題なく動いていたのでWWWサーバーのソフトの設定がわるいとは思えません。
動かないとの指摘を受けたのは
http://alphonse.mine.nu/kodakaku/new/
の左側のカウンタ+メニュー部分です。
どなたか同じ経験をなされている方、
または、解決策をご存知の方、ご意見をよろしくおねがいします。
ちなみに私のPC環境は
Vista + IE7
2000(Sp4) + IE6
です。読めなかった友達の共通点はみなXPだったことです。
ちなみにHSPに付属されているCGIのサンプルは自分の環境で実行した場合、
問題なく動作していましたが、XPの人間ではエラーになるそうです。
最後に上記カウンタ部のソースを記載しておきます。
#runtime "hsp3cl" #include "comm.as" #include "mod_getenv.as" #packopt type 0 #packopt name "count" #packopt runtime "hsp3cl.hrt" mes "Constent-type: text/html\n\n" dim n : n = 4 dim i dim count sdim buff,16 sdim path,64 sdim file,512 : notesel file sdim num sdim ipadd sdim cc sdim week,3,7 sdim month,3,12 week(0) = "Sun" week(1) = "Mon" week(2) = "Tue" week(3) = "Wed" week(4) = "Thu" week(5) = "Fri" week(6) = "Sat" month( 0) = "Jan" month( 1) = "Feb" month( 2) = "Mar" month( 3) = "Apr" month( 4) = "May" month( 5) = "Jun" month( 6) = "Jul" month( 7) = "Aug" month( 8) = "Sep" month( 9) = "Oct" month(10) = "Nov" month(11) = "Dec" getenv cc, "HTTP_COOKIE" getenv ipadd, "REMOTE_ADDR" ipadd = strmid(ipadd,0,3) path = "log.txt" exist path if( strsize = -1 ){ count = 0 }else{ noteload path noteget buff,0 count = int( buff ) if((int(ipadd)!= 192)&&( cc = "" )){ count++ } } path = "side.html" exist path if(strsize == -1 ){ mes "ファイルが見つかりません。" } noteload path repeat notemax noteget buff,cnt if( buff != ""){ if( No_sidespace(buff) == "<put_counter>" ){ num = set_zero(count,n) repeat n i = peek( num , cnt ) - '0' mes "<img src=\"count/" + i + ".png\" border=\"0\">" loop } if( No_sidespace(buff) == "<put_cookie>" ){ ; mes "<meta http-equiv=\"Set-Cookie\" content=\" count = 1 ; expires = " + week(gettime(2)) +"," + gettime(3) + "-"+ month(gettime(1)-1) +"-0000 14:59:59 GMT; \">" mes "<meta http-equiv=\"Set-Cookie\" content=\" count = 1 ; expires = " + week(gettime(2)) +"," + gettime(3) + "-"+ month(gettime(1)-1) +"-"+gettime(0)+" 14:59:59 GMT; \">" } if( (No_sidespace(buff) != "<put_counter>")&&(No_sidespace(buff) != "<put_cookie>")){ mes buff } } loop file = "" noteadd "" + count, path = "log.txt" notesave path
side.html内の<put_counter>をカウンタとして画像に置き換えます。
No_sidespace(文字列)は文字列の前後の空白を削除した文字列を返す関数でcomm.asに記述、
set_zero(数字,桁数)は数字を数字を指定桁数の文字列として返す関数、
例えばset_zero(23,4)なら0023となります。これもcomm.asに記述されています。