関数に好きな数の引数を渡す
通常、関数は以下のように引数と一緒に定義する。
function example($hikisuu1, $hikisuu2) {
}
func_get_args()を使うことで、好きな数の引数を関数に渡すことができる。
function example() {
$hikisuu = func_get_args();
foreach ($hikisuu as $key=>$value) {
echo "Hikisuu{$key} is $valuen";
}
}
example(1,2,3,4); も example(1,2) もエラーにならず動く。
うーん…なるほど。
function example($hikisuu1, $hikisuu2) {
}
func_get_args()を使うことで、好きな数の引数を関数に渡すことができる。
function example() {
$hikisuu = func_get_args();
foreach ($hikisuu as $key=>$value) {
echo "Hikisuu{$key} is $valuen";
}
}
example(1,2,3,4); も example(1,2) もエラーにならず動く。
うーん…なるほど。
ユーザーエージェントを取得してリンク先を分ける
EC-CUBEのSmarty機能を無視してページを作成していると、自動で生成されるスマホ・ガラケー用のページにリダイレクトしなきゃならないので、PHPでユーザーエージェントを取得してリダイレクト。
//▽ユーザーエージェント判別▽
$agent = $_SERVER['HTTP_USER_AGENT'];
$mobile = "モバイル用ページURL";
$pc = "PC用ページURL";
if (
( strpos($agent, 'iPhone') !== false && strpos($agent, 'iPad') === false ) ||
strpos($agent, 'iPod') !== false ||
strpos($agent, 'Android') !== false
)
{ $link = $mobile; }
elseif( eregi("DoCoMo",$agent) ){ $link = $mobile; }
elseif( eregi("UP\.Browser",$agent) ){ $link = $mobile; }
elseif( eregi("J-PHONE",$agent) ){ $link = $mobile; }
elseif( eregi("Vodafone",$agent) ){ $link = $mobile; }
elseif( eregi("SoftBank",$agent) ){ $link = $mobile; }
elseif( eregi("J-EMULATOR",$agent) ){ $link = $mobile; }
else{ $link = $pc; }
//△ユーザーエージェント判別△
print <<< EOF
<script>
parent.location.href='{$link}';
</script>
こんな感じかな…
//▽ユーザーエージェント判別▽
$agent = $_SERVER['HTTP_USER_AGENT'];
$mobile = "モバイル用ページURL";
$pc = "PC用ページURL";
if (
( strpos($agent, 'iPhone') !== false && strpos($agent, 'iPad') === false ) ||
strpos($agent, 'iPod') !== false ||
strpos($agent, 'Android') !== false
)
{ $link = $mobile; }
elseif( eregi("DoCoMo",$agent) ){ $link = $mobile; }
elseif( eregi("UP\.Browser",$agent) ){ $link = $mobile; }
elseif( eregi("J-PHONE",$agent) ){ $link = $mobile; }
elseif( eregi("Vodafone",$agent) ){ $link = $mobile; }
elseif( eregi("SoftBank",$agent) ){ $link = $mobile; }
elseif( eregi("J-EMULATOR",$agent) ){ $link = $mobile; }
else{ $link = $pc; }
//△ユーザーエージェント判別△
print <<< EOF
<script>
parent.location.href='{$link}';
</script>
こんな感じかな…
良く使う使用ポート一覧
ポート番号 サービス名 説明
22 SSH SSH デフォルト ポート番号を変更する場合は不要
2222 SSH SSH カスタム
20 FTP(データ) FTP デフォルト
21 FTP(制御コマンド) FTP デフォルト
80 HTTP HTTP デフォルト
443 HTTPS HTTPS デフォルト
25 SMTP メール送信
110 POP3 メール受信
587 SMTP OP25B対策(サブミッションポート)
465 SMTPS メール送信 SSL対応
995 POP3S メール受信 SSL対応
143 IMAP メールIMAP受信
993 IMAPS メールIMAPS受信
3306 MySQL MySQL デフォルト
5432 PostgreSQL PostgreSQL デフォルト
10000 Webmin Webmin デフォルト
iptablesの設定用にφ(`д´)メモメモ...
22 SSH SSH デフォルト ポート番号を変更する場合は不要
2222 SSH SSH カスタム
20 FTP(データ) FTP デフォルト
21 FTP(制御コマンド) FTP デフォルト
80 HTTP HTTP デフォルト
443 HTTPS HTTPS デフォルト
25 SMTP メール送信
110 POP3 メール受信
587 SMTP OP25B対策(サブミッションポート)
465 SMTPS メール送信 SSL対応
995 POP3S メール受信 SSL対応
143 IMAP メールIMAP受信
993 IMAPS メールIMAPS受信
3306 MySQL MySQL デフォルト
5432 PostgreSQL PostgreSQL デフォルト
10000 Webmin Webmin デフォルト
iptablesの設定用にφ(`д´)メモメモ...
SSLの導入。(Apache + OpenSSL)
秘密鍵の作成。
# openssl genrsa -rand rand.dat -out example.key 2048
[genrsa] 秘密鍵の作成を指示するコマンド
[-rand] ファイル名 ランダムデータのファイル名を指定(ランダムデータがない場合は省略)
[-out] ファイル名 作成した秘密鍵の保存先ファイル名を指定。
[2048] 秘密鍵のビット長。2048ビット
作成に成功すると、-outで指定したファイル(example.key)が作成される。
CSRの作成。
# openssl req -new -key example.key -out example.csr
[req] CSRの操作を指示するコマンド
[-new] CSR新規作成
[-key] ファイル名 先ほど作成した秘密鍵ファイルを指定
[-out] ファイル名 作成したCSRの保存先ファイル名を指定。
入力する項目
Country Name (国/地域)→2文字国コード(ISO-3166)。必ず JP と入力する
State or Province Name(都道府県)→本社所在地の都道府県名(Okinawa)
Locality Name(市区町村)→本社所在地の市区町村名(Naha-city)
Organization Name(組織)→組織、会社名の英文正式名称(Example Co.,Ltd)
Organizational Unit Name(部門)→申請部署名指定しないときは '.'(ピリオド)
Common Name(一般名)→SSL接続する際に使われるドメイン名(example.jp)
ワイルドカード証明書はサブドメイン名を「*」にする(例:*.example.jp)。
これで、作成した「example.csr」の中身を認証局に申請。
認証局からもらったサーバー証明書を「example.crt」という名前で保存。
ApacheのSSL設定(サーバー証明書のインストール)は、だいたいこんな感じ。
SSLEngine on
SSLCertificateFile /***/example.crt ←認証局から貰ったサーバー証明書
SSLCertificateKeyFile /***/example.key ←最初に作成したサーバー鍵
SSLCACertificateFile /ssl/example.ca ←中間証明書
中間CA証明書の作成は以下のような感じで。
-----BEGIN CERTIFICATE-----
(2階層目の中間CA証明書)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(2階層目の中間CA証明書)
-----END CERTIFICATE-----
だいたい、サーバー証明書と一緒に送られてくるパターンが多い。
openssl-perlのインストールはyumコマンドで。
# yum -y install openssl-perl
# openssl genrsa -rand rand.dat -out example.key 2048
[genrsa] 秘密鍵の作成を指示するコマンド
[-rand] ファイル名 ランダムデータのファイル名を指定(ランダムデータがない場合は省略)
[-out] ファイル名 作成した秘密鍵の保存先ファイル名を指定。
[2048] 秘密鍵のビット長。2048ビット
作成に成功すると、-outで指定したファイル(example.key)が作成される。
CSRの作成。
# openssl req -new -key example.key -out example.csr
[req] CSRの操作を指示するコマンド
[-new] CSR新規作成
[-key] ファイル名 先ほど作成した秘密鍵ファイルを指定
[-out] ファイル名 作成したCSRの保存先ファイル名を指定。
入力する項目
Country Name (国/地域)→2文字国コード(ISO-3166)。必ず JP と入力する
State or Province Name(都道府県)→本社所在地の都道府県名(Okinawa)
Locality Name(市区町村)→本社所在地の市区町村名(Naha-city)
Organization Name(組織)→組織、会社名の英文正式名称(Example Co.,Ltd)
Organizational Unit Name(部門)→申請部署名指定しないときは '.'(ピリオド)
Common Name(一般名)→SSL接続する際に使われるドメイン名(example.jp)
ワイルドカード証明書はサブドメイン名を「*」にする(例:*.example.jp)。
これで、作成した「example.csr」の中身を認証局に申請。
認証局からもらったサーバー証明書を「example.crt」という名前で保存。
ApacheのSSL設定(サーバー証明書のインストール)は、だいたいこんな感じ。
SSLEngine on
SSLCertificateFile /***/example.crt ←認証局から貰ったサーバー証明書
SSLCertificateKeyFile /***/example.key ←最初に作成したサーバー鍵
SSLCACertificateFile /ssl/example.ca ←中間証明書
中間CA証明書の作成は以下のような感じで。
-----BEGIN CERTIFICATE-----
(2階層目の中間CA証明書)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(2階層目の中間CA証明書)
-----END CERTIFICATE-----
だいたい、サーバー証明書と一緒に送られてくるパターンが多い。
openssl-perlのインストールはyumコマンドで。
# yum -y install openssl-perl
PHPのバージョンを調べる(UNIXコマンド)
# php --version
これだけ。。
ついでに…
postfixのバージョン。
# /usr/sbin/postconf | grep mail_version
各種設定
# /usr/sbin/postconf
MySQL
# mysql --version
これだけ。。
ついでに…
postfixのバージョン。
# /usr/sbin/postconf | grep mail_version
各種設定
# /usr/sbin/postconf
MySQL
# mysql --version
Smartyで$_SESSIONの内容を表示
echo $_SESSION['****']
▼
{$smarty.session.****}
なので、EC-CUBEの場合は
<!--{$smarty.session.****}-->
で表示。
echo $_SESSION['aaa']['bbb']の場合には
<!--{$smarty.session.aaa.bbb}-->
▼
{$smarty.session.****}
なので、EC-CUBEの場合は
<!--{$smarty.session.****}-->
で表示。
echo $_SESSION['aaa']['bbb']の場合には
<!--{$smarty.session.aaa.bbb}-->
Smartyでのcount()
EC-CubeはSmartyを使っているので、良く使う。
例えば、配送先の数を出力する場合( count($arrShipping) )
▽
<!--{$arrShipping|@count}-->
こんなかんじかな。
例えば、配送先の数を出力する場合( count($arrShipping) )
▽
<!--{$arrShipping|@count}-->
こんなかんじかな。
input属性にもJqueryのロールオーバーを…
/*IMGフェードアウトJS*/
$(document).ready(function (){
$("p.jquery-hover").fadeTo(0,1.0);
$("img.jquery-hover").hover(function ()
{
$(this).fadeTo(500, 0.6);
// マウスオーバーで透明度を60%にする
},
function ()
{
$(this).fadeTo(500, 1.0);
// マウスアウトで透明度を100%に戻す
});
});
たとえば、こんなかんじのスクリプトでimg要素に「class="jquery-hover"」を入れてロールオーバーを実装していたとする。
毎回毎回「class="jquery-hover"」を書くのがめんどくさいし、「input」属性にもロールオーバーを適用したいので、変更。
$("img.jquery-hover").hover(function ()
▼
$('img,input[type=image]').hover(function ()
これだけで、img要素とinput要素のタイプが画像だったとき、自動的にロールオーバーを行なってくれる。
jquery-1.4.4.min.jsを読み込んでおくのを忘れないように。
$(document).ready(function (){
$("p.jquery-hover").fadeTo(0,1.0);
$("img.jquery-hover").hover(function ()
{
$(this).fadeTo(500, 0.6);
// マウスオーバーで透明度を60%にする
},
function ()
{
$(this).fadeTo(500, 1.0);
// マウスアウトで透明度を100%に戻す
});
});
たとえば、こんなかんじのスクリプトでimg要素に「class="jquery-hover"」を入れてロールオーバーを実装していたとする。
毎回毎回「class="jquery-hover"」を書くのがめんどくさいし、「input」属性にもロールオーバーを適用したいので、変更。
$("img.jquery-hover").hover(function ()
▼
$('img,input[type=image]').hover(function ()
これだけで、img要素とinput要素のタイプが画像だったとき、自動的にロールオーバーを行なってくれる。
jquery-1.4.4.min.jsを読み込んでおくのを忘れないように。
CSS3 ボックスの角を丸くする。
基本的には、これでオッケー。
border-radius: 10px; /* CSS3 */
-moz-border-radius: 10px; /* Firefox */
-webkit-border-radius: 10px; /* Safari,Chrome */
border-radius: 10px; /* CSS3 */
-moz-border-radius: 10px; /* Firefox */
-webkit-border-radius: 10px; /* Safari,Chrome */