WEB開発や保守に日々壁にぶつかってしまうノート

Flexion DevNote

カテゴリー: PHP

【PHP】IPアドレス範囲の判定はこうだった

GoogleやBingのBotに対してログを残さないようにしていますが、PHPでIP範囲を特定し無効化する必要があったため、functionをつくってみました

//IP範囲チェック
function chkIpRange($accept){

  $remoteIp   = $_SERVER['REMOTE_ADDR'];

  list($acceptIp, $mask) = explode('/', $accept);
  $acceptLong = ip2long($acceptIp) >> (32 - $mask);
  $remoteLong = ip2long($remoteIp) >> (32 - $mask);
  if ($acceptLong == $remoteLong) {
    return 1;
  } else {
    return 0;
  }
}


$rec	= 0;

//Botチェック(以下はGoogleなどのIP群)
if( chkIpRange('66.249.64.0/19') ) $rec	= 1;
if( chkIpRange('66.249.92.0/24') ) $rec	= 1;
if( chkIpRange('72.14.192.0/18') ) $rec	= 1;
if( chkIpRange('74.125.0.0/16') ) $rec	= 1;

//処理飛ばす
if($rec == 1) return;

アクセスしてきたIPアドレスが、サブネットマスクを含んだ指定のIPアドレスに該当するものかどうか、これで判断して処理を分けることができまいした。

【php】simplexml_load_file が突然動かなくなった?(自己署名証明書を許容する必要があった)

ブログサイトから/?feed=rss2で取り込み後、自社DBにセットするバッチが急に動かくなりました。
file_get_contentsやcurlで、いろいろ試行錯誤もしましたが、成功に至らず。。。

結論、以下のように、自己署名証明書を許容する必要がありました。

$url     = 'https://xxx.com/?feed=rss2';
$context = stream_context_create(array('ssl'=>array(
    'allow_self_signed'=> true,
    'verify_peer'      => false,
)));
libxml_set_streams_context($context);
$xml = simplexml_load_file($url);

//print_r($xml)
//うまく動けました

ちなみに、 file_get_contents もSSL処理に似ている感じでした

$postUrl    = 'https://xxx.com/xxx/index.php';
$postPost   = array('xxx' => yyy);
$postData   = http_build_query($postPost, "", "&");
$postHeader = array(
  "Content-Type: application/x-www-form-urlencoded",
  "Content-Length: ".strlen($postData)
);
					
$postOptions = array(
  'http' =>array(		
    'method'  => 'POST',
    'header'  => implode("\r\n", $postHeader),
    'content' => $postData
  ),
  //SSL処理
  'ssl' =>array(
    'verify_peer'       => false,
    'verify_peer_name'  => false
  )
);

$postJson  = file_get_contents($postUrl, false, stream_context_create($postOptions));
$postArr   = json_decode($postJson, true);

//print_r($postArr)

さくらレンタルサーバ:CRONでPHP実行してみました

共有レンタルサーバタイプですが、昔は独自で管理したがって、いっぱい自社サーバへ移管しましたが、、特にメール管理や様々のセキュリティ特にWAF機能が充実されて、あとは独自無料SSL機能も。自社に移管したドメインをどーんとレンタルサーバへ移管しました😀

使い勝手もありますが、さくらレンタルサーバは、やはり便利!そして安い、そして機能が充実(余計な使わない機能が搭載していない)

さて、かつては専用サーバでコマンドでやることが、レンタルサーバでも一発実行しました。

cd /home/****/www/bash/; /usr/local/bin/php index.php 1> /dev/null

##「****」はご契約されたID名となります。

ということで、超簡単でした✌

Roundcubeの本文と添付ファイルの文字化け解決方法はこれだ!

お客様からRoundcubeでどうにも文字化けされるとの連絡がありました、毎回ではありませんがまれに発生するそうでした。Roundcube古いバージョン1.0.9使っていたので、即座に1.3.4にアップグレードしましたー

数日たつと、やはり改善されていないということで、困りました。

https://qiita.com/neilli-sable/items/0444e6cd11f51a977a3f

roundcube/program/lib/Roundcube/rcube_charset.php

roundcube/config/defaults.inc.php

早速上記の対策を実施したところ、そこからは再発できなかったようで、安心しました(感謝)

Roundcubeの文字化け対策

さくらサーバーでPHP最大アップロードファイルサイズを変更する方法発見

自作の画像変換PHPが動かくなったー
ふっと思ったら、 新型iPhoneに機種変更後、画像サイズがぐーんと重くなった可能性がありました、案外的中!

p.iniでファイルアップロード上限値を変更する!

https://www.vektor-inc.co.jp/post/sakura-upload-max-filesize/

これで解決!




Powered by WordPress & Editor by Flexion Counsulting Inc.