• ベストアンサー

[PHP]PCアクセス制限について

以下のように設定しましたが、「89」番目がエラーになってしまいます。 何が原因なのでしょうか? Parse error: syntax error, unexpected $end in /index.php on line 89 <?php if (isDoCoMoIP()) { } if (isAuIP()) { } if (isSoftBankIP()) { } function isDoCoMoIP(){ { require_once 'Net/IPv4.php';// PEAR Net_IPv4 //DoCoMo のIP帯域をセット $ip_list = array( '210.153.84.0/24', '210.136.161.0/24', '210.153.86.0/24', '124.146.174.0/24', '124.146.175.0/24' ); foreach ($ip_list as $ip) { if (Net_IPv4::ipInNetwork($_SERVER['REMOTE_ADDR'], $ip)) { print "DoCoMo"; return true; } } } function isAuIP(){ { require_once 'Net/IPv4.php';// PEAR Net_IPv4 // au のIP帯域をセット $ip_list = array( '210.230.128.224/28', '121.111.227.160/27', '61.117.1.0/28', '219.108.158.0/27', '219.125.146.0/28', '61.117.2.32/29', '61.117.2.40/29', '219.108.158.40/29', '219.125.148.0/25', '222.5.63.0/25', '222.5.63.128/25', '222.5.62.128/25', '59.135.38.128/25', '219.108.157.0/25', '219.125.145.0/25', '121.111.231.0/25', '121.111.227.0/25', '118.152.214.192/26', '118.159.131.0/25', '118.159.133.0/25' ); foreach ($ip_list as $ip) { if (Net_IPv4::ipInNetwork($_SERVER['REMOTE_ADDR'], $ip)) { print "au"; return true; } } } function isSoftBankIP(){ { require_once 'Net/IPv4.php';// PEAR Net_IPv4 //SoftBank のIP帯域をセット $ip_list = array( '123.108.236.0/24', '123.108.237.0/27', '202.179.204.0/24', '202.253.96.224/27', '210.146.7.192/26', '210.146.60.192/26', '210.151.9.128/26', '210.169.130.112/28', '210.175.1.128/25', '210.228.189.0/24', '211.8.159.128/25' ); foreach ($ip_list as $ip) { if (Net_IPv4::ipInNetwork($_SERVER['REMOTE_ADDR'], $ip)) { print "SoftBank"; return true; } } } return false; } print "PC"; ?>

  • PHP
  • 回答数2
  • ありがとう数0

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

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.2

質問文のコードだけ見ると、括弧の対応が取れてないような。 単なる転記誤りかもしれませんが。 まあsyntax errorだから、lintモードでチェックしてみるか、正しく動くまでコードを削って、そこからコードを追加していってどこで失敗してるか確認してみては。

natto048
質問者

補足

以下のように直してみました。 ですが、 ↓こんなエラーが出てしまいました。 Parse error: syntax error, unexpected '}' in /index.php on line 89 <?php if (isDoCoMoIP()) { } if (isAuIP()) { } if (isSoftBankIP()) { } function isDoCoMoIP(){ require_once 'Net/IPv4.php';// PEAR Net_IPv4 { //DoCoMo のIP帯域をセット $ip_list = array( '210.153.84.0/24', '210.136.161.0/24', '210.153.86.0/24', '124.146.174.0/24', '124.146.175.0/24' ); foreach ($ip_list as $ip) { if (Net_IPv4::ipInNetwork($_SERVER['REMOTE_ADDR'], $ip)) { print "DoCoMo"; return true; } } } } function isAuIP(){ require_once 'Net/IPv4.php';// PEAR Net_IPv4 { // au のIP帯域をセット $ip_list = array( '210.230.128.224/28', '121.111.227.160/27', '61.117.1.0/28', '219.108.158.0/27', '219.125.146.0/28', '61.117.2.32/29', '61.117.2.40/29', '219.108.158.40/29', '219.125.148.0/25', '222.5.63.0/25', '222.5.63.128/25', '222.5.62.128/25', '59.135.38.128/25', '219.108.157.0/25', '219.125.145.0/25', '121.111.231.0/25', '121.111.227.0/25', '118.152.214.192/26', '118.159.131.0/25', '118.159.133.0/25' ); foreach ($ip_list as $ip) { if (Net_IPv4::ipInNetwork($_SERVER['REMOTE_ADDR'], $ip)) { print "au"; return true; } } } } function isSoftBankIP(){ require_once 'Net/IPv4.php';// PEAR Net_IPv4 { //SoftBank のIP帯域をセット $ip_list = array( '123.108.236.0/24', '123.108.237.0/27', '202.179.204.0/24', '202.253.96.224/27', '210.146.7.192/26', '210.146.60.192/26', '210.151.9.128/26', '210.169.130.112/28', '210.175.1.128/25', '210.228.189.0/24', '211.8.159.128/25' ); foreach ($ip_list as $ip) { if (Net_IPv4::ipInNetwork($_SERVER['REMOTE_ADDR'], $ip)) { print "SoftBank"; return true; } } } } return false; } print "PC"; ?>

その他の回答 (1)

  • memphis
  • ベストアンサー率40% (975/2395)
回答No.1

{}のセットが合ってないのが原因です。 プログラムは良く見てましょう!

関連するQ&A

  • PHP PCアクセス制限

    アクセス振り分けPHPですが、 以下のように直してみました。 ですが、 ↓こんなエラーが出てしまいました。 Parse error: syntax error, unexpected '}' in /index.php on line 89 <?php if (isDoCoMoIP()) { } if (isAuIP()) { } if (isSoftBankIP()) { } function isDoCoMoIP(){ require_once 'Net/IPv4.php';// PEAR Net_IPv4 { //DoCoMo のIP帯域をセット $ip_list = array( '210.153.84.0/24', '210.136.161.0/24', '210.153.86.0/24', '124.146.174.0/24', '124.146.175.0/24' ); foreach ($ip_list as $ip) { if (Net_IPv4::ipInNetwork($_SERVER['REMOTE_ADDR'], $ip)) { print "DoCoMo"; return true; } } } } function isAuIP(){ require_once 'Net/IPv4.php';// PEAR Net_IPv4 { // au のIP帯域をセット $ip_list = array( '210.230.128.224/28', '121.111.227.160/27', '61.117.1.0/28', '219.108.158.0/27', '219.125.146.0/28', '61.117.2.32/29', '61.117.2.40/29', '219.108.158.40/29', '219.125.148.0/25', '222.5.63.0/25', '222.5.63.128/25', '222.5.62.128/25', '59.135.38.128/25', '219.108.157.0/25', '219.125.145.0/25', '121.111.231.0/25', '121.111.227.0/25', '118.152.214.192/26', '118.159.131.0/25', '118.159.133.0/25' ); foreach ($ip_list as $ip) { if (Net_IPv4::ipInNetwork($_SERVER['REMOTE_ADDR'], $ip)) { print "au"; return true; } } } } function isSoftBankIP(){ require_once 'Net/IPv4.php';// PEAR Net_IPv4 { //SoftBank のIP帯域をセット $ip_list = array( '123.108.236.0/24', '123.108.237.0/27', '202.179.204.0/24', '202.253.96.224/27', '210.146.7.192/26', '210.146.60.192/26', '210.151.9.128/26', '210.169.130.112/28', '210.175.1.128/25', '210.228.189.0/24', '211.8.159.128/25' ); foreach ($ip_list as $ip) { if (Net_IPv4::ipInNetwork($_SERVER['REMOTE_ADDR'], $ip)) { print "SoftBank"; return true; } } } } return false; } print "PC"; ?>

    • 締切済み
    • PHP
  • 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
  • PEAR::MailでPEAR.php?

    Mailを使ってメールを送信したいのですが、エラーがでます。 Warning: require_once(PEAR.php) [function.require-once]: failed to open stream: この PEAR.php はどこで入手できるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPのinclude_pathについて

    以下はPEARでExcelファイルを作成し、ダウンロードするプログラムです。 <?php require_once("Spreadsheet/Excel/Writer.php"); $workbook = new Spreadsheet_Excel_Writer('sample3-1.xls'); $worksheet =& $workbook->addWorksheet('サンプル'); $workbook->close(); print('<html>'); print('<head>'); print('<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />'); print('</head>'); print('<body>'); print('<p><a href="./sample3-1.xls">Excelファイル</a></p>'); print('</body></html>'); ?> このプログラムを実行すると、 Warning: require_once(Spreadsheet/Excel/Writer.php) [function.require-once]: failed to open stream: No such file or directory in C:\Inetpub\wwwroot\Test\src\excelsample.php on line 2 Fatal error: require_once() [function.require]: Failed opening required 'Spreadsheet/Excel/Writer.php' (include_path='.;C:\php5\pear') in C:\Inetpub\wwwroot\Test\src\excelsample.php on line 2 というエラーメッセージが出ます。 php.iniには、PEARのパッケージをインストールした際に ;***** Added by go-pear include_path=".;C:\php-5.2.17-Win32-VC6-x86\pear" ;***** と記述されているにも関わらず、エラーメッセージのpathはinclude_path='.;C:\php5\pear'となっており、原因がわかりません。 php.iniはC:\WINDOWSの直下に置いてあります。 PHPのバージョンはphp-5.2.17-Win32-VC6-x86で、Cドライブの直下にインストールしています。 WebサーバーはIISです。 eclipseを使っており、バージョン?はpleiades-e3.6-php_20110326です。 また、phpinfoのinclude_pathはLocalとMasterの両方が.;C:\php5\pearとなっています…。 Configuration File (php.ini) Path C:\WINDOWS Loaded Configuration File C:\WINDOWS\php.ini この2つはこの様になっており、これは2つの場所は一致していないといけないのでしょうか? 解決手段がまったくわかりません。 何かこのエラーについてわかることがあれば教えていただけませんか?

    • 締切済み
    • PHP
  • pear_info.phpも表示できません

    PCをサーバーにしてPHPの練習をしている初心者です。最近PEARを入れてDBパッケージをインストールしたのですが、機能しなくて困っています。試しにpear_info.phpを作ってブラウザで開くと下記の警告がでました。 ---------------------------------------------- <?php ini_set ("display_errors", "1"); error_reporting(E_ALL); require_once ("PEAR/Info.php"); //←line 5 $info = new PEAR_Info(); $info->show(); ?>  Warning: require_once(PEAR/Info.php) [function.require-once]: failed to open stream: No such file or directory in C:\Program Files\Apache Group\Apache2\htdocs\pear_info.php on line 5 Fatal error: require_once() [function.require]: Failed opening required 'PEAR/Info.php' (include_path='.;c:\php\includes;C\php\PEAR;') in C:\Program Files\Apache Group\Apache2\htdocs\pear_info.php on line 5 (コピーペーストすると\になりましたが、ブラウザの表示では/の逆向きです) ---------------------------------------------- DB::connectでも同様の警告が出ます。PHPとMySQLだけだと問題なく動くのでPEARのパスを確認したのですか、原因が分かりません。助言いただけるとありがたいです。 php.iniのパス  ;***** Added by go-pear  include_path=".;c:\php\includes;C\php\PEAR;"  ;***** phpinfoのinclude_path  .;c:\php\includes;C\php\PEAR;  (コピーペーストすると\になりましたが、ブラウザの表示では/の逆向きです) コマンドプロンプトから "C:\PHP>pear list" での表示  Archive_tar  1.3.2  stable  Console_Getopt  1.2.3  stable  DB  1.7.11 stable  MDB2  2.4.1  stable  PEAR  1.6.0  stable  Pear_info  1.6.1  stable  Structure_Graph  1.0.2  stable PCの環境  Windows XP  Apache  2.0.59  PHP 5.2.3  MySQL 5.0.41

    • ベストアンサー
    • PHP
  • pear_info.phpが表示できません

    PCをサーバーにしてPHPの練習をしている初心者です。最近PEARをインストールしたのですが、機能しなくて困っています。試しにpear_info.phpを作ってブラウザで開くと下記の警告がでました。 ---------------------------------------------- <?php require_once("PEAR/Info.php");//←line 8 $info = new PEAR_Info(); $info->show(); ?> Warning: require_once(PEAR/Info.php) [function.require-once]: failed to open stream: No such file or directory in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\pear_info.php on line 8 Fatal error: require_once() [function.require]: Failed opening required 'PEAR/Info.php' (include_path='.;C:\php5\pear') in C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\pear_info.php on line 8 かなりの時間を費やして原因を調べていたのですが、どうしても解決する事ができません。助言を頂けると非常にありがたいです。 php.iniのパス include_path = ".;c:/php/includes;C:/php/PEAR" また、phpinfoで Configuration File (php.ini) Path の項目は C:\WINDOWS となっています。 上記に記載したエラーで「include_path='.;C:\php5\pear'」と表示されている部分がありますが、C:\php5と言うフォルダは作っていません。C:\phpと言うフォルダならあります。 PCの環境  Windows XP  Apache  2.2.6  PHP 5.2.4

    • 締切済み
    • PHP
  • MDB2によるデータベースアクセス

    ができません。 次のものは動きました。 <?php require_once("DB.php"); $db=DB::connect("pgsql://gomiuser@localhost/gomidatabase"); $db->disconnect(); ?> が以下が動きません。 <?php require_once 'MDB2.php'; $mdb2=&MDB2::connect(pgsql://gomiuser@localhost/gomidatabase); if(PEAR::isError($mdb2)) { die($mdb2->getMessage()); } $mdb2->disconnect(); ?> Don't Find(出力) 何が悪いのでしょうか?

    • ベストアンサー
    • PHP
  • PHP PEARパッケージのincludeができない。

    PHP PEARパッケージのincludeができない。 お世話になっております。 phpのPEARパッケージのincludeができません。 行うと PHP Warning: require_once(File/CSV.php): failed to open stream: そのようなファイルやディ レクトリはありません in /var/www/httpdocs/XXXXXXXX.php on line 10 PHP Fatal error: require_once(): Failed opening required 'File/CSV.php' (include_path='.:/usr/share/pear') in /var/www/httpdocs/XXXXXXXX.php on line 10 となってしまいます。 エラーメッセージ中の/usr/share/pear上に確かに存在します。 何か他に条件などあるのでしょうか? お願いいたします。

    • ベストアンサー
    • PHP
  • PHP foreachを使ってループしたい

    こんばんは。 PHPで複数の宛先でメールを送信したいと思っております。 そこでメールフォームでまず mail.php foreach ($arr as $value) { print'<input type="hidden" name="mail[]" value="'. $value .'">'; } f-mail.php $_POST['mail']で取得しそれを$valとして、print_r($val);で表示すると Array ( [0] => アドレスA [1] =>アドレスB ) と表示されます。 その複数のアドレスを //PEAR::MailCu require_once '/Mail.php'; //PEAR::Mail_mimeCu require_once '/mimeDecode.php'; //送信データを設定する $recipients= $val; $new_from = 'hoge@hoge.com'; $subject = mb_encode_mimeheader(mb_convert_encoding("$subject1", "JIS", "auto"), "JIS"); $body =$body1; //メールを送信する $headers = array(); $headers['From'] = $new_from; $headers['To'] = $recipients; $headers['Subject'] = $subject; $headers['Sender'] = $new_from; $mail = Mail::factory('sendmail'); $result = $mail->send($recipients, $headers, $body); ・LoopでToを変更しながら繰り返し送信する事がしたいのですがforeachでどう設定していいかわかりません。マニュアルもみたのですが、混乱してしまったので ご指導、ご教授のほど宜しくお願い致します。

    • 締切済み
    • PHP