10 月 15
ユーザエージェントから携帯キャリアを判別します。
$agent = $_SERVER['HTTP_USER_AGENT'];
if(ereg(”^DoCoMo”, $agent)){

}else if(ereg(”^J-PHONE|^Vodafone|^SoftBank”, $agent)){

}else if(ereg(”^UP.Browser|^KDDI”, $agent)){

}
以上
10 月 4

PHPファイルを静的に見せる方法。

今回は、apacheのmod_rewriteモジュールを.htaccessを動かす。

以下mod_rewriteの設定は完了しているものとします。

.htaccessファイルの記述例

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9a-zA-Z_\-]+)\.html$ $1\.php [L]

これで例えばtop.htmlと入力したときに、top.phpを処理できます。

ちなみに、2行目3行目は、実在するファイル、ディレクトリの場合には書き換えしませんということ。

 

また、動的なファイルを静的にする例。最後の行を次のように変更します。

RewriteRule ^([0-9A-Za-z]+)/([0-9A-Za-z)]+)\.html$ file.php?var1=$1&var2=$2 [L]

これで、例えば dir/say.html のアクセスがあった場合に、file.php?var1=dir&var2=say

の結果を返します。

9 月 27

PHPでランダムな英数字で文字列を作る場合は・・

てくめも@coop さんより

<?php
/**
 * ランダムな文字列を生成する。
 * @param int $nLengthRequired 必要な文字列長。省略すると 8 文字
 * @return String ランダムな文字列
 */
function getRandomString($nLengthRequired = 8){
    $sCharList = “abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_”;
    mt_srand();
    $sRes = “”;
    for($i = 0; $i < $nLengthRequired; $i++)
        $sRes .= $sCharList{mt_rand(0, strlen($sCharList) - 1)};
    return $sRes;
}
// 使ってみる
echo getRandomString() . “\n”;
?>

毎回、考えていたのでこうやってまとめてもらえると助かります。ありがとうございます。

9 月 10

PHPは今や5系が主流で、もうすぐ6系が出るとのうわさもありますが、

昔からのアプリケーションを使っている場合などは4系にせざるを得ないときがあります。

さて、2008年9月10日現在、PHP4系の最終版、 4.4.9のwindows版は致命的なエラーがあるとのこと。

現時点では4.4.8にしておきましょう。

ちなみにご存知の型が多いと思いますがテスト環境構築には

XAMPPをおすすめしますよ!(多分今は5系ですが)

7 月 26

頭では認識していても、今日も実装でミスってエラーにしてしまったので記録しておきます。

SQL文、WHERE句がORDER BY句よりも先に記述しなければなりません。

(PHP + MYSQLの経験上。ドキュメントでは未確認。)

そうしないとFatal Errorに。

7 月 22

OPENPNEでUTF-8にSJISが混ざった。

よく調べてみると、phpmyadminもなぜか一部SJISで出力される。

php.iniを調べるも、特に問題点が分からない。

httpd.confはどうだろう?他にも文字コードに関する設定ファイルあっただろうか。

MYSQLも対象か。

<解決策>

php.iniに、SJISのスクリプトが動くための記述があり。

こいつが今回の犯人らしい。

基本的にサーバ内はUTFなのでこれをすべて削除し、SJISの該当ディレクトリの.htaccessに以下を追記。

php_value mbstring.language Japanese
php_value mbstring.internal_encoding SJIS
php_value mbstring.http_input auto
php_value mbstring.http_output SJIS
php_value mbstring.encoding_translation On
php_value mbstring.detect_order auto
php_value mbstring.substitute_character none

これで、SJISのPHPもUTF8も問題なく動く(ハズ)

7 月 22

date(’Y/m/d H:i:s’,strtotime(”+7 day”))

でOK!

strtotime(”+7 day”)で1週間後のタイムスタンプ

date(’Y/m/d H:i:s’,strtotime(”next Sunday”))

なども可

7 月 18

PHPから携帯にメールを送るときは、半角カタカナとか、文字化けに悩むことが結構多い。。。

そんな場合は、

  • mail関数を使う。(mb_send_mailでなく)
  • 本文文字コードはISO-2022-JPを使う

で解決!こんな感じ

   $From = joey@hogehoge.com;

   $to = joey@bogeboge.com;

   $subject = “テストだよ”; 

      $mail_body = base64_encode(”ヘイ、ジョーイ”); 
  // カナは半角カナで!
      $mail_body = mb_convert_encoding($mail_body,”ISO-2022-JP”,”SJIS”);

      $header  = “From: $From.\n”;
      $header .= “Return-Path: $From.\n”;
      $header .= “Reply-To: $From.\n”;
      $header .= “Message-ID: {$MessageID}\n”;
      $header .= “MIME-Version: 1.0\n”;
      $header .= “Content-Type: text/plain;charset=ISO-2022-JP\n”;
      $header .= “Content-Transfer-Encoding: base64\n”;
      $header .= “X-Mailer:PHP/”.phpversion();

   if(!mail($to,$subject,$mail_body,$header)){
    echo “失敗”;
   }else{
    echo “成功”;
   }

上記でばっちり!

7 月 15

foreach文は入れ子でも動くみたい。

  foreach($hensu['hen'] as $key => $value){
   …
   foreach($hensu['hen'][$key] as $key2 => $value2){
  …
   }
  }

もっといい方法もあるのだろうか

© PHPress since 2008