• 締切済み

error()が分かりません

アクセス制限をするためのルーチンを加えたいのですが、 下記のソースを動作中のPHPに追加すると☆印行でエラーが出ます。 PHPからのエラーメッセージ ---- Fatal error: Call to undefined function: error() in d:\xxxx\xxxx_com\Cgi-bin\xxxx\xxxx.php on line 47 ←☆行 加えたソース ---- $host = @gethostbyaddr($REMOTE_ADDR); if(is_array($denylist)){ while(list(,$line)=each($denylist)){ if(strstr($host, $line)) error('アクセス制限','あなたにはアクセス権限がありません。');  ☆ } } 何が問題なのかわかる方いましたらぜひ教授ください! お願いします。

noname#225081
noname#225081
  • PHP
  • 回答数2
  • ありがとう数2

みんなの回答

  • EEshiba
  • ベストアンサー率29% (45/152)
回答No.2

Fatal error: Call to undefined function: error() in d:\xxxx\xxxx_com\Cgi-bin\xxxx\xxxx.php on line 47  このままです。エラーメッセージの意味を調べましょう。

  • hssh
  • ベストアンサー率24% (12/49)
回答No.1

undefined function: error()

関連するQ&A

  • PerlからPHPに移植したアクセス制限

    下記は、CGIファイルから持ってきたスクリプトをPHPに変換してみたものです。 エラーが出るの出ます-> Parse error: syntax error, unexpected '/', expecting ')' in /home/users/1/raindrop.jp-5247423/web/tsukushinbo/bbs/bbs_header.php on line 32 どう修正すれば教えていただきたいです。 <?php #----------------# # ホスト名取得 # #----------------# function get_host(){ $host = $_SERVER{'REMOTE_HOST'}; $addr = $_SERVER{'REMOTE_ADDR'}; if($gethostbyaddr){ if ($host === "" || $host === "$addr") { $host === gethostbyaddr(pack("C4", split(/\./, $addr)), 2); $host === gethostbyaddr(pack($addr)); } } if($host === "") { $host = $addr; } } ?>

    • ベストアンサー
    • PHP
  • phpでのアクセス制限について

    $deny='.jp'; $host=gethostbyaddr($_SERVER["REMOTE_ADDR"]); if(strpos($host,$deny)===FALSE){ exit; とphpに記述して jp以外をアクセス制限しているのですが、これはスパム対策にも効果はあるのでしょうか? .htaccessが使えないので、phpに直接記述しています。

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

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

    • 締切済み
    • CGI
  • 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
  • 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
  • CGIにてソフトバンクがPCとして認識されます。

    掲示板のCGIなのですが、ソフトバンクではPC画面へ飛ばされてしまいます。下記の部分あたりではないかと思うのですが、書き直しで解決できるのでしょうか?このCGIを使いたいので、お願い致します。 #▼ホスト名・UA取得 $HOST = $ENV{'REMOTE_HOST'}; $ADDR = $ENV{'REMOTE_ADDR'}; $UA = $ENV{'HTTP_USER_AGENT'}; $SN = $ENV{'HTTP_X_UP_SUBNO'}; if ($UA =~ /^DoCoMo\/\d/) { $AGEN = "i-mode"; }elsif ($UA =~ /^Vodafone\/\d/) { $AGEN = "Vodafone"; }elsif (($UA =~ 'UP.B') && ($SN ne "")){ $AGEN = "AU"; }else { $AGEN="PC";} if ($UA =~ /Mozilla\/|MSIE|Netscape|Opera|Lynx|AOL|Gecko/) {$AGEN="PC";} if ($HOST eq '') { $HOST = $ADDR; } if ($HOST eq $ADDR) { $HOST = gethostbyaddr(pack('C4',split(/\./,$HOST)),2) || $ADDR; }

    • 締切済み
    • 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
  • 【 REMOTE_HOSTの値の取得方法について 】

    既製のCGIを設置するのがイッパイイッパイの 初心者ですm(__)m REMOTE_HOSTの値を取得して表示させたいのですが 当方レンタル中のサーバーの初期設定では取得できず 下記の如くの手順で取得するように表示してありましたが どうにも理解できず困っております。 下記の「Perl内」とは何処の事を指しているのか アドバイスを頂きたくお願い申し上げます。 ****以下、該当サーバーの説明文引用***** 【 REMOTE_HOSTの値の取得方法について 】 レンタルサーバーの処理速度を優先して、初期状態ではIPアドレスからDNSの参照をしないように設定している為、REMOTE_HOSTの値を取得したい場合はPerl内で下記の記述をして下さい。 $addr = $ENV{'REMOTE_ADDR'}; $host = gethostbyaddr(pack('C4',split(/\./,$addr)),2) || $addr;

    • ベストアンサー
    • Perl
  • ブラウザごとにIPが異なるのはなぜ?

    VistaマシンにApacheをインストールし、 ブラウザにlocalhostと入力し 表示されることを確認し、 PHPでアクセス履歴をとっていたのですが $today = date("Y.m.d.H:i:s"); //日付 $addr = getenv("REMOTE_ADDR"); $host = gethostbyaddr($addr); //アドレス firefoxでは 日付、IP(自分)、名前(自分) と表示されるのに IEでは 日付、IP(隣人)、名前(隣人) と表示されることに気付きました。 アクセス履歴なので 自分がアクセスした分はカウントしないようにしていたのに 自分がIEでみると隣人の名前でアクセスした状態になり 困っております。 前まではIEでも自分のIP、名前が表示されていたのですが なぜ切り替わってしまったのかわかりません。 何が原因か、どうしたらよいか、わかる方がいたら教えていただけないでしょうか。

専門家に質問してみよう