- ベストアンサー
i mode用チャットで無記名禁止にするやり方と携帯端末情報を取得するやり方を…。
初めまして。私は某i mode用のサイトを運営している管理者です。最近はサイトの訪問者数が増え、コンテンツも色々と増やしているのですが、チャットのcgiが無記名でも入れるようになっているのです。それで、無記名はは入れないようにするやり方と、荒らし対策で携帯の端末情報を取得するやり方を教えて頂きたいと思いこちらに書き込ませて頂きました。わかる方、良かったら教えて頂ければありがたいです。初心者で大変申し訳ありませんが、どうぞ宜しくお願い致します。後、これからcgiを更に詳しく勉強したいとも思ってますので、おすすめのcgiの本などもありましたら教えて下さい。宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
個体識別ですが、Docomoの場合は http://www.nttdocomo.co.jp/p_s/imode/make/tag/index.html の「utn」属性を参考にしてください。 vodafoneは http://www.dp.j-phone.com/dp/tech_svc/info/useragent.php のUserAgentに含まれるSerialが完全ユニークな番号です。 EZWEBは「サブスクライバID」というものがあります。 環境変数「HTTP_X_UP_SUBNO」にて取得できると思います。 CGIのソースですが、どうも私のPerlの知識では提示された分だけではわかりません(^^; ごめんなさい
その他の回答 (1)
- gentaro
- ベストアンサー率47% (105/221)
CGIと言ってもPerlとかPHPとかいろいろな言語があり、具体的にこうすれば良い、というのは実際のプログラムを見ないとわかりません。 名前を記入するフォームからデータを受け取ったら、プログラム内で、「記入されているかどうか」をチェックすればよい、としかお答えできません(^^; 携帯の端末情報ですが、環境変数「HTTP_USER_AGENT」で取得できます。 http://specters.net/cgipon/ モバイルCGIの部分が参考になりますよ。 ただし携帯では一般的に利用者を特定する個体識別は完全にはできません(絶対に無理という意味ではないですが) キャリアによっては携帯の製造番号を取得できるものもありますが。
補足
一応内容を記しておきます。記入されているかどうかをチェックすればよい…。すみませんよくわかりません…(´・ω・`) 後、固体識別はよく掲示板に書き込む時に携帯情報を送信しますか?と出る所があるのですが、それを表示したいのでやり方を知っている方がいらっしゃれば…と思いまして(´Д⊂ chat本体のcgi print "Content-type: text/html\n\n" ; print<<HTMHEAD ; <HTML> <HEAD> <META HTTP-EQUIV="Content-Type" CONTENT="text/htnml; charset=x-sjis"> <TITLE></TITLE> </HEAD> <CENTER> <br> <A HREF="$help_url">使い方</A><BR> </CENTER> HTMHEAD for($i=0 ; $i<$room_num ; $i++){ $memfile=sprintf("%s%d.mem",$room_name,$i+1) ; $roomcgi=sprintf("%s%s%d.cgi",$room_path,$room_name,$i+1) ; $para_m=0 ; $para_n=0 ; if(-e "$memfile"){ &memfileCheck() ; } &dispCondition($i+1) ; } # # 待ち合わせ用の掲示板を付ける場合は、ここをアクティブにする # #print "<HR><CENTER>\n" ; #print "<A HREF=\"chbbs.cgi\">伝言板</A>" ; print "<HR></CENTER>\n" ; print "[<A HREF=\"$ret_url\">戻る</A>]\n" ; print "$cgi_ver\n" ; print "</BODY></HTML>\n" ; exit(1) ; sub memfileCheck { open(IN,"$memfile") ; $buff=<IN> ; ($dum1,$para_n,$para_m,$dum2)=split(/=/,$buff) ; if($para_n){ $buff=<IN> ; $buff=<IN> ; ($dum1,$mst_t1,$mst_t2,$dum2)=split(/=/,$buff) ; $buff=<IN> ; ($dum1,$mst_nam,$mst_msg,$dum2)=split(/=/,$buff) ; ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time) ; $now=$sec+($min*60)+($hour*3600)+($mday*86400) ; $timelst=(6000-($now-$mst_t1)) ; $timenot=(300-($now-$mst_t2)) ; if($timelst<0 || $timenot<0){ $para_n=0 ; $para_m=0 ; } } close(IN) ; } sub dispCondition #($rnumb) { local($rnumb)=@_ ; if($para_m==0){ $para_m=30 ; } print "<HR>\n" ; print "Room$rnumb " ; if($para_n==0){ print "[<A HREF=\"$roomcgi\">入室</A>]<BR>\n" ; print "<FONT COLOR=blue>空室</FONT>\n" ; } elsif($para_n<$para_m){ print "[<A HREF=\"$roomcgi\">入室</A>]<BR>\n" ; print "[$para_n/$para_m] $mst_nam<BR>\n" ; print "$mst_msg\n" ; } else{ print "<BR><FONT COLOR=red>使用中</FONT>\n" ;