変数の有効範囲

基本的にはPHPもCやJavaと同じく、
変数の有効範囲は、スコープ内、
つまり
{} の間になります
もし、関数の外側の変数を使うなら、
global を使います
つまり、$dataを使いたいなら、
global $data
とします
また、$GLOBALS を使うという手段もあります
さっきのように、
$data を使いたいなら
$GLOBALS[‘data’]というようにします

複数の値を返す list();

return では、複数の変数を返せないので、値を配列にまとめて返すようにします
構文としては、
----------------
list($変数1,$変数2,$変数3) = 関数();
処理1;
処理2;
function 関数()
{
処理3;
$変数 = 処理4;
return array($変数1,$変数2,$変数3);
}
---------------–
というように、
受け取り側でlist();で帰ってきた配列を、変数に代入して受け取ります
つまり、関数内で return にarray();を使って複数の値を配列にして返しているわけですね
こうすれば、複数の値を返すことができます
ここで、例として今日の日付を返すものを作ってみました
<?php
list($year,$month,$day)=get_today();
print $year.’年’ . $month.’月’.$day.’日’;
function get_today()
{
$year=date(‘Y’);
$month=date(‘m’);
$day=date(‘d’);
return array($year,$month,$day);
}
?>
---------------–
list();は、
配列を 同じ順番で複数の変数に代入できます
そして、array(};
は、変数や数値、文字列を , で指定することで配列を作れます

Web サーバ構築 その2

今回は、以前 書きましたWeb サーバ構築 その1
の続きになります
今回も 参考にしたサイトの続きをおこなっています
まず
Webサーバー間通信内容暗号化(Apache+mod_SSL)
をそのまま行いました
前回との違いは https で接続できるようになったことですね
次に
ユーザーディレクトリ作成(/~ユーザー名/)
でユーザディレクトリをつくります
ユーザ名はなんでもいいので、今回はwiki というユーザにしてみました
このため、このサイトで centos となっている部分をすべて wiki へ置き換えています
これにより、レンタルサーバの自分のスペースのようなものができるみたいですね
ちなみに私はレンタルサーバは実際には使ったことがないので、
間違っていたらすみません
ここまでできたら、次に
Webページパスワード制限(htpasswd)
を作成できます
というより
Webサーバー、Webサーバー間通信内容暗号化が導入済でないとこれはできないみたいです
この方法を導入することで、パスワード認証が必要なページをつくれます
秘密ページなどをつくるときに使えそうです
今回はまだここまでです
ポート開放できるほどのスキルはまだありませんので
まずはローカルで構築して、セキュリティの勉強をしていこうと
思っています
Webサーバー間通信内容圧縮(mod_deflate)
はポート開放できていないので、確認は行っていません
次は引き続き FTPサーバを構築予定です

Tittter の公式ナビ

最近、流行りの twitte について調べています
twinabi
というサイトでアカウントをカテゴリから探せます
なにから始めるか、迷っているという方は
ここから始めてみるのもいいかもしれませんね
それにしても、テクノロジーの進歩がすごいですね
ホームページからブログ、ブログからtwitter と
どんどん情報発信ができる時代へとなってきています
情報はアウトプットすると、より自分なりに理解できますので
まずはお手軽なtwitter などから情報発信してみるのもいいかもしれません

引数のデフォルト値 その

デフォルト値を複数指定する場合、デフォルト値を指定した引数の右側に
デフォルト値を指定しない引数があると、なぜかダメです
例:
function check_member($username="gest",$pass)
はエラーになりますが
function check_member($username,$pass="gest")
はなぜかOKになります
理由はわかりませんが、そういうものみたいです

引数のデフォルト値

引数が設定されといる関数を
引数の指定なしで実行すると
Warning Missing argument
とエラーになります
引数がなくてもエラーがでないようにするには
引数のデフォルト値を関数側で設定します
こうすればデフォルト値で代替され
エラーになりません
構文は、
$変数=数値;
関数名($変数);
function 関数名($引数=値)
{
処理1;
処理2;
print $引数;
}
となります
例えば、
よくあるページで
ゲストさん、こんにちわ
とか
会員さん、ようこそ
と表示するなら、
<?php
check_member();
function check_member($username="gest",$pass="gest")
{
if($username=="gest" && "pass="gest"){
print "ゲストさん、こんにちわ";
}else{
print "会員さん、こんにちわ";
}
}
?>
という感じです
今回は、関数を作り
引数はデフォルト値を使ってみました
もうすこし改造すると、サインインみたいにできるかもしれません

関数 の 引数渡し

C言語でおなじみの引数渡しもPHPでできます
書式としては、
$変数 = 数値;
で、$変数に数値を格納して
関数名($変数);
で関数に数値が渡されます
そして
function 関数名($引数)
{
処理1;
処理2;
print $引数;
}
と使います
この 関数名($引数);のところで、
$変数の値が $引数に渡されます
英語で送られてきた荷物のラベルを、日本語のラベルに張り替えただけで、中身は同じ、
みたいな感じですかね
この場合、関数は箱、変数はラベル という感じです
このため、スコープ、つまり{} の中身の処理で使われる
$引数は、渡された数値になります
例を書くと
<?php
$shio=19;
check_gram($shio);
function check_gram($solt)
{
$aji = 50;
$aji_check($aji > $solt)?"塩";"砂糖"
print $aji_check ."を追加してください";
}
?>
このように、soltでもshioでも数値は変わりません

function関数

PHPのコードは上から処理されます
このへんはC言語と同じ
そして、PHPでもCやJavaみたいに関数をつくれます
それが function関数です
書式は、
function 関数名()
{
処理1;
処理2;
}
で関数を作成し、
関数名();
で実行できます
関数名は、変数名と同じく、数字は先頭にはつかえません
先頭から使えるのは
半角英数 と _ になります
例をあげると
”;
print “はろー”;
print ””;
}
print_hello();
?>
これを実行すると、
はろー
と表示されます

Web サーバ構築 その1

DLNA、iTunes サーバができましたので
引き続き、Webサーバの構築をしてみます
今度の用途は、PHP+MySQL の開発環境と、pukiwiki を実効できる
環境を作成してみようと思います
ただし、せっかく作ったiTuneサーバなどとまざると面倒なので
VMware Player3 を使って
新規インストールし、作成されたCentOS 5.4を
Webサーバにしてみます
まず、
CentOS5インストール
を参考にインストール
次に、CentOS5初期設定
を参考に設定
ただし、メールサーバは構築していないので
OP25B対策はしません
そしてWebサーバー構築(Apache)
を参考に設定
でも、
ServerName centossrv.com:80 ← サーバー名を指定
のところは、ドメイン名が浮かばないので、とりあえず#を外し
そのままにしました
これを放置すると、
/etc/rc.d/init.d/httpd start
を実行した時に警告文がでてきます
とりあえず、今日はWebサーバ起動までで終了です
現状では、ネット公開までの設定をしていないので、完成後に公開しようと思います
ちなみに、ポート開放するときの注意点として
2重ルータに注意しましょう
この状態になっていると、まず公開できません
詳しくは
ポート開放ナビ

ポート開放 方法
を見るとかなりわかりやすいです

BitTorrentユーザを狙ったサイバー脅迫

BitTorrentユーザをターゲットに、
著作権侵害訴訟を行うと脅迫するケースが増えているようです
どうやら、架空請求のようですが
情報ソースは
海外における個人情報流出事件とその対応 第222回 BitTorrentユーザを狙ったサイバー脅迫 (1)BitTorrentユーザを狙ったサイバー脅迫
です
かつて、犯罪者をねらった犯罪というものがありました
映画やドラマなどであったクロサギみたいですが
残念ながら、被害者に返金ではなく、犯罪者から奪い取るというだけですが
以前、iphone や iPod touche の脱獄がはやりましたが
これもたしか同様にセキュリティに穴があくリスクがあったはずです
今後もいろいろな手口が増えてきそうです