• ベストアンサー

NiftyのおまけスペースでPerlアクセスログ

を作ったのですが $ENV{"REMOTE_HOST"} で表示させてもIPアドレスでホスト名を得られません Niftyに聞くと特にホスト名を出さないようにはしてないと言うことです Niftyのおまけスペースで訪問者ホスト名を取得できるのでしょうか?

  • guuman
  • お礼率86% (1043/1206)
  • CGI
  • 回答数3
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • kirin_f
  • ベストアンサー率51% (44/85)
回答No.3

ご注意に 「アット・ホームページでは、DNSの逆引きは行っておりません。ホスト名は取得されませんのでIPアドレスをご利用ください。」 とあります。 ご存知かも知れませんが、 gethostbyaddr=DNSの逆引きです。

参考URL:
http://homepage.nifty.com/cgi/index.htm?d_cgi1
guuman
質問者

お礼

ありがとうございます やはりですね 残念です

その他の回答 (2)

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.2

両方ともIPアドレスになることがあります。 それはIPにホスト名を設定していない場合に起こります。 (ホスト名は人間が視認しやすいように付けた別名なので) ただ、全てIPになる場合は何かがおかしいです。 IPアドレスを強引に変換かければ直るかもしれませんね。 # 参考:Kent-web さんの aska.cgi より。 $host = $ENV{'REMOTE_HOST'}; $addr = $ENV{'REMOTE_ADDR'}; if ($gethostbyaddr && ($host eq "" || $host eq $addr)) { $host = gethostbyaddr(pack("C4", split(/\./, $addr)), 2); } if ($host eq "") { $host = $addr; }

参考URL:
http://www.kent-web.com/
guuman
質問者

補足

ありがとうございます ホスト名が出ないときにはgethostbyaddrを使ってます 両者とも常にIPです Niftyに電話かけてもプログラマが出るわけでないので埒があかないのです 自分のPCで受け取ったIPにgethostbyaddrを通してみると確かにホスト名が出てきます Niftyが一番くさいのです

  • shidho
  • ベストアンサー率45% (138/303)
回答No.1

$ENV{"REMOTE_ADDR"}ならIPアドレスが返ってきませんか? たぶん、負荷がかかるのでREMOTE_HOSTへの変換はしていないのだと思いますが。

guuman
質問者

補足

ありがとうございます IPアドレスが帰ってきてます IPとホストをともに表示させているのですが両方ともIPになってしまっています Niftyに電話したのですが特に何もしていないので出るのでは?という回答でした 実際にはどうなのでしょうか?

関連するQ&A

  • アクセスログでホスト名を

    $ENV{"REMOTE_HOST"} で表示させてもIPアドレスがほとんどです 訪問者のドメインネームが出やすくするにはどのような環境変数を使えばいいでしょうか?

    • ベストアンサー
    • CGI
  • $ENV{'REMOTE_HOST'}について

    CGIにて$ENV{'REMOTE_HOST'}を取得したところ スパム投稿なのですが、$ENV{'REMOTE_HOST'}が IPアドレスの値である142.54.182.186が入っていました。 普通はkd182249232116.au-net.ne.jp などという形になると思うのですが 142.54.182.186 となっていることが通常ありえるのでしょうか? リモートホストを取得し、IPアドレスの形式であった場合、 この投稿者を弾いてしまっても問題ありませんか?

    • ベストアンサー
    • CGI
  • 送信者のIPを取得するには

    現在メールフォームを作っています。 送信者の情報を取得する作りにはしていません。 迷惑メールが届き出してからでは遅いので、 ホスト名やIPアドレスを取得するフォームにしたいのですが、 <INPUT TYPE="hidden" NAME="env_report" VALUE="取得したい情報の属性"> という記述をCGIファイルに書けばいいのでしょうか。 また、下記の記述をどこに書くのかも分かっていません。 REMOTE_HOST 送信者(入力者)のホスト名 REMOTE_ADDR 送信者(入力者)のIPアドレス どなたかご教授をお願いします。

  • ページのアドレスを取得する記述方法を教えてください。

    たとえば、IP、HOSTを取得するには、 $host = $ENV{'REMOTE_HOST'}; $addr = $ENV{'REMOTE_ADDR'}; if(!$host && $addr){ $host = (gethostbyaddr(pack("C4",split(/\./,$addr)),2))[0]; } と記述して、 センドメール部分に、 $host , $addrをどこかに記述します。 これと同じように、ページのアドレスを取得する記述はどうすればいいのか教えてください。

    • 締切済み
    • CGI
  • Perlでの$ENV{REMOTE_ADD}の信ぴょう性を教えてくださ

    Perlでの$ENV{REMOTE_ADD}の信ぴょう性を教えてください。 Perlによる、CGIサイトを運営しています。 IPアドレスを$ENV{REMOTE_ADD}で取得し、Firewall内プライベートアドレス(10.*.*.*)以外はloginをしないと内容が表示されないようにスクリプトをつくり、Firewallの内外から動作確認し、きちんと動いていたのでそのまま運用していました。 ところが、先日海外(ハワイ)に行った際、アップルストアでそのサイトにアクセスした際にloginなしで内容が表示されてしまいました。 アップルストアに置いてあったPCなので、IP偽装などは行っていないと思われますので、どうして見えるのだろうかわかりません。 $ENV{REMOTE_ADD}で取得した値は信ぴょう性がないのでしょうか?それとも、10.*.*.*はグローバルアドレスとして使用可能なのでしょうか?

    • ベストアンサー
    • Perl
  • CGIの時間の環境変数

    ちょっとタイトルがあっているのか、イマイチ心配なのですが(汗) フォームのCGIを作っています。 登録情報がメールで届くようにしています。 ホスト名とかIPアドレス、ユーザーエージェントは下記でできました。 $host = gethostbyaddr(pack("C4", split(/\./, $ENV{'REMOTE_ADDR'})), 2); $addr = $ENV{'REMOTE_ADDR'}; $HTTP_USER_AGENT = $ENV{'HTTP_USER_AGENT'}; フォームに登録してくれた曜日とか時間を取るやり方がわかりません。 どなたかお知恵をお貸しください m(__)m

  • IP/ホスト連続投稿チェック機能が上手く行かない。

    なんでだろ?? ###+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ## SUB >>> ホスト取得処理 ###+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ sub get_HostAgent { $Host = $ENV{'REMOTE_HOST'}; $Addr = $ENV{'REMOTE_ADDR'}; if ($Host eq '') { $Host = $Addr; } if ($Host eq $Addr) { $Host = gethostbyaddr(pack('C4',split(/\./,$Host)),2) || $Addr; } $H_A = "$Host"; } ホスト取得ルーチンにある変数で、 いろんな掲示板の中のP/ホスト連続投稿チェック機能だけ抜き出して、 もう何十個も試したけれど、上手くいきません。 カスタマイズしてる会員掲示板に、 IP/ホスト連続投稿チェック機能を付けたいのですが上手くいきません。 二重投稿チェックはあるのですが、、 ↓↓↓ #--二重投稿チェック--# if ($r1 eq "$name" && $r4 eq "$street<>$title" && $r5 eq "$comment") { &lock2; &error("二重投稿は禁止です"); } より極めるために、以下を利用したいのです。。 ↓↓↓ #--IP/ホスト連続投稿チェック--# if ($Addr = $ENV{'REMOTE_ADDR'} && $^T - $time < 120) { &lock2; &error("連続投稿はできません。<BR>時間をおいてから書き込みして下さい");} 宜しくお願い致します。 どこがおかしいのかサッパリです。 なんとか機能を追加できるようにお願いしますろ

    • 締切済み
    • CGI
  • HOSTが表示されない。

    お世話になります。 早速ですが、サイトで調べ、 以下のコーディングでipアドレスと、ホスト名?を表示したいのですが、 perlのシミュレーションで実行すると表示されるのですが、 私が借用しているサイト(infoseek)ではipアドレスしか表示されません。 (ipアドレスを、直接$addrにセットしても同じ結果です。) サイトにより、制限等が掛けられているのでしょうか。 コーディングの誤りであれば指摘していただきたくお願いします。 $addr = $ENV{'REMOTE_ADDR'}; $host = gethostbyaddr(pack("C4", split(/\./, $addr)), 2); print "$host\n"; print "<br>\n"; print "$addr\n"; 以上、宜しくお願いします。

    • ベストアンサー
    • Perl
  • Perlを使ったアクセス制限方法

    CGIのページにアクセス制限を掛けたいと思い 検索エンジンを使い色々探しまして下記のアクセス制限方法を見つけました。 http://easycgi.xrea.jp/perltips/acclimit.htm を参照して CGIの最初(#!/usr/bin/perl の次の行)に下記スクリプトを埋め込みました。 sub check { @hosts = ('hoge.ne.jp','hoge.co.jp'); $host = gethostbyaddr(pack("C4", split(/\./, $ENV{'REMOTE_ADDR'})), 2) || $ENV{'REMOTE_ADDR'}; foreach $i (@hosts) { if ($host =~ /$i/) { print "アクセスが許可されていません。\n"; exit; } } } リモートホストでアクセス制限を行いたいのですが 上記の方法を試しても、hoge.ne.jpとhoge.co.jpからアクセス出来てしまいました。 htaccessを使わずにCGIページへアクセス制限を掛ける方法はないでしょうか? 何かアドバイス頂けると助かります。

  • [perl・php]gethostbyaddrは重い?

    今まで、REMOTE_ADDRを取得してアクセスログに記録していたのですが、最近、下記の存在を知りました。 $host = gethostbyaddr(pack("C4", split(/\./, $ENV{'REMOTE_ADDR'})), 2); ただ、これで、多大な負荷がかかるようならやめようと思うのですが、どの程度の負荷になるのでしょうか? ご存知の方、回答、宜しくお願い致します。

    • ベストアンサー
    • Perl