引数のデフォルト値

引数が設定されといる関数を
引数の指定なしで実行すると
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 の脱獄がはやりましたが
これもたしか同様にセキュリティに穴があくリスクがあったはずです
今後もいろいろな手口が増えてきそうです

require()の例

便利そうな関数
require();
のメモです
まず、読み込まれるファイルを作成[e:257]
<?php
$name="へべれけまる";
$message="詳細の報告をお願いします";
?>
これをdata.phpで保存[e:257]
---------------–
次に、読み込み側ファイルを作成[e:257]
require()でファイル名を指定する[e:257]
<HTML>
<HEAD>
<TITLE>PHPのテスト</TITLE>
</HEAD>
<BODY>
<?php>
require("data.php");
print "識別名 $name
";
print "$message
";
?>
</BODY>
</HTML>
すると、実行結果は、
識別名 へべれけまる
詳細の報告をお願いします
となります
つまり、変数に代入された状態になるわけですね
使い道は、メールマガジンや、大量のメール送信とかに使えるのでは?
たとえば、
---------------–
$name様
登録ありがとうございます
登録メールアドレス
$mailaddress
パスワード
$pass
---------------–
とすれば、あとはハウスリストできあがりですね
応用編としては、
include();
があります
include();

require();
の違いますは、エラーがでたときです
エラーがでたとき、include();はWarningを出して処理を実行します
でもrequire();は
Fatal Error
となり、処理が停止します
このため、require();を使うと、処理ファイルがないときに止まってくれます
あとは、
require_once();

include_once();
require_once();
は、機能は
require();
と同じだけど一度しか読み込まないのです
まさにonce
include_once();
も同様に、一度だけ読み込みとなります
今回の関数で思ったのは、世の中のDMやスパムも同様のシステムかなぁという感じです

ハンガリーも粉飾

ハンガリーもデフォルト懸念がでてます
ハンガリーは、財政赤字の対GDP比率が粉飾されていたようです
今回ギリシャの政権交代により、粉飾が明らかになったように、ハンガリーでも前政権な政策を点検していたところ、財政赤字の数値の異常に気づいたようです
ハンガリーは、ユーロ加盟を目指していて、ギリシャとは微妙に違いますが、
それでも懸念材料にはなるので、リスク回避要因として警戒したほうがよさそうです
さて、ユーロについてですが、ユーロは比較的新しい通貨で、1999年に発足しました
発足当時のレートは、対ドルで1.18
このレートを割ると売りが強まるかもしれません
日経、ダウともに極端な下げの場合、たいていはショートカバーが入りますし、
最近は売りが続いています
ショートカバーによる急反発に気をつけながら取引しましょう

セキュリティの勉強

現在、いろいろとサイト、掲示板書籍をみて
サーバ公開のために勉強中です
サーバの公開ともなれば、もちろんセキュリティ関連は最低でも
勉強しておかないと非常に危険です
そこで、今回はセキュリティ関連のサイトを見つけてきました
とはいっても、マイコミの記事だったりするんですが
攻守で学ぶWebセキュリティ実践チュートリアル「Jarlsberg」
にそのあたりの記事が乗っていました
やはり、経験をつんでいくことで、対策をできるようになると思います
英語表示になりますが
Web Application Exploits and Defenses
もあります
そういえば、最近のニュースで
Google が社内でセキュリティのために使用するOSを
Windows から Mac や Linux にしていくようです
最近の Steve Jobs 氏の発言もあながちはずれていないのかもしれません

PHPで別ファイルの処理を読み込

require()
でファイルの読み込みが可能になります
会員制Webサイトをつくるとき、単一のファイルだけでは無理なので、
同じような処理をあつめて、別のファイルに記述し、必要なときに読み込むと便利です
C言語のincludeみたいなかんじです
require("ファイル名");
でファイルを読み込みます
require "ファイル名";
でもOKです
また、
require $変数
というように、ファイル名を変数に格納しても動作するようです

PHP の 演算子 その

PHPでは実行演算子があります
`で囲んで使います
例えば、
<?php
$filelist = `ls -laF`;
print $filelist;
として、端末で実行すると、カレントディレクトリ内が表示されます
実行演算子 ` は、
セーフモードや
shell_exec()が無効だと使えません
ちなみに、これはLinuxの場合で、
Windowsなら、
ls -laF を dir に書き換えます