ユーザエージェントから携帯キャリアを判別します。
$agent = $_SERVER['HTTP_USER_AGENT'];
if(ereg(”^DoCoMo”, $agent)){
}else if(ereg(”^J-PHONE|^Vodafone|^SoftBank”, $agent)){
}else if(ereg(”^UP.Browser|^KDDI”, $agent)){
}
以上
ユーザエージェントから携帯キャリアを判別します。
$agent = $_SERVER['HTTP_USER_AGENT'];
if(ereg(”^DoCoMo”, $agent)){
}else if(ereg(”^J-PHONE|^Vodafone|^SoftBank”, $agent)){
}else if(ereg(”^UP.Browser|^KDDI”, $agent)){
}
以上
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
の結果を返します。
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”;
?>
毎回、考えていたのでこうやってまとめてもらえると助かります。ありがとうございます。
PHPは今や5系が主流で、もうすぐ6系が出るとのうわさもありますが、
昔からのアプリケーションを使っている場合などは4系にせざるを得ないときがあります。
さて、2008年9月10日現在、PHP4系の最終版、 4.4.9のwindows版は致命的なエラーがあるとのこと。
現時点では4.4.8にしておきましょう。
ちなみにご存知の型が多いと思いますがテスト環境構築には
XAMPPをおすすめしますよ!(多分今は5系ですが)
頭では認識していても、今日も実装でミスってエラーにしてしまったので記録しておきます。
SQL文、WHERE句がORDER BY句よりも先に記述しなければなりません。
(PHP + MYSQLの経験上。ドキュメントでは未確認。)
そうしないとFatal Errorに。
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も問題なく動く(ハズ)
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”))
なども可
PHPから携帯にメールを送るときは、半角カタカナとか、文字化けに悩むことが結構多い。。。
そんな場合は、
で解決!こんな感じ
$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 “成功”;
}
上記でばっちり!
foreach文は入れ子でも動くみたい。
foreach($hensu['hen'] as $key => $value){
…
foreach($hensu['hen'][$key] as $key2 => $value2){
…
}
}
もっといい方法もあるのだろうか