PHP(Hypertext Preprocessor) はWebページ作成のために用いられるプログラミング言語の一種です。この言語は動的Webページを作るときJavascriptで出来ない機能を簡単に実現することができます。
ここではちょっと便利なJavascriptと連携した簡単な使い方のサンプルを掲載します。
また、現在のサーバーのPHP環境設定(php.ini)はここから確認出来ます。
■ファイルの操作:ファイル/ディレクトリの表示|ファイルの書き込み|ファイルの読込| ファイルの作成|ファイルの削除| ファイルのアップロード
■パラメータの渡し方;PHPにURLパラメータで渡す|HTMLからsubmitでPHPに渡す|PHPからJavascriptに渡す| JavascriptからPHPに渡しJavascriptに戻す
Javascriptソース
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-language" content="ja">
<meta charset="UTF-8">
<title>SendMail(Form)</title>
</head>
<body>
<h1>SendMail(Form)</h1>
<form name="form" action="mailsend_form.php" method="post">
<input name="from" size="80" value="alarm@alarm.com" type="hidden"><br>
送信先:<input name="to" size="50" value="nnnnnnn@dddddd.com"><br>
題名_:<input name="subject" size="50" value="PHPおしらせ"><br>
本文_:<input name="message" size="50" value="こんにちは。"><br>
<input type="button" value="メール送信" onclick="form.submit()">
</form>
</body>
</html>
PHPソース
<?php
mb_language("Japanese");
mb_internal_encoding("UTF-8");
$message = $_POST["message"];
if (!mb_send_mail($_POST["to"], $_POST["subject"], $message, "From: " . $_POST["from"])) {
exit("メールの送信に失敗しました。");}
exit("メールの送信が完了しました。");
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-language" content="ja">
<meta charset="UTF-8">
<title>ファイル/ディレクトリ表示</title>
</head>
<body>
<div id="out"></div>
<script type="text/javascript">
var a = "<?php //aの値をPHPで求める。
$res_dir = opendir( '.' ); //カレントディレクトリの設定
$fls = "" ;
while( $file_name = readdir( $res_dir ) ){ //ファイル/ディレクトリの検索
if($file_name !== '.' && $file_name !== '..'){ //・・・ファイル名を除外する
$fls.= $file_name; //ファイル名の設定
$fls.= "<br>" ; //区切文字の挿入
}
}
closedir( $res_dir ); //クローズ
echo "{$fls}" ; //取得した情報を渡す
?> " ;
out.innerHTML = "ファイル/ディレクトリ名<br>" + a ;
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-language" content="ja">
<meta charset="UTF-8">
<title>ファイルの書き込み</title>
</head>
<body>
<?php
$fp = fopen("txt/write.txt", "w");
fwrite($fp, "=======fwrite=====");
fclose($fp);
?>
<script type="text/javascript">
window.alert (" fwriteで書き込み完了") ;
</script>
<?php
file_put_contents("txt/put.txt","=======file_put_contents=====");
?>
<script type="text/javascript">
window.alert ("file_put_contentsで書き込み完了") ;
</script>
<p>処理完了しました。ブラウザの「戻る」で戻してください。</P>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-language" content="ja">
<meta charset="UTF-8">
<title>ファイルの読込</title>
</head>
<body>
<div id="msg"></div>
<script type="text/javascript">
var a = "<?php
$fp = fopen("txt/write.txt", "r");
while ($line = fgets($fp)) { echo "$line" ; }
fclose($fp);
?> " ;
window.alert("fgetsで読込>>" + a) ;
</script>
<script type="text/javascript">
window.alert("file_get_contentsで読込>><?php echo file_get_contents("txt/put.txt"); ?> " ) ;
</script>
<p>処理完了しました。ブラウザの「戻る」で戻してください。</P>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-language" content="ja">
<meta charset="UTF-8">
<title>ファイルの作成</title>
</head>
<body>
<div id="msg"></div>
<script type="text/javascript">
msg.innerHTML = "<?PHP
$fname = 'txt/addfile.txt'; //作成するファイル
if( !file_exists($fname) ){ //ファイルの存在チェック
touch( $fname ); //ファイル作成
chmod( $fname, 0666 ); // ファイルのパーティションの変更
echo('ファイル作成完了。ファイル名は【'.$fname.'】です。');
}else{
echo('ファイルが存在しています。ファイル名は【'.$fname.'】です。');
}
?>" ;
</script>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-language" content="ja">
<meta charset="UTF-8">
<title>ファイルの削除</title>
</head>
<body>
<div id="msg"></div>
<script type="text/javascript">
msg.innerHTML = "<?PHP
$fname = 'txt/addfile.txt'; //削除するファイル
if( !file_exists($fname) ){ //ファイルの存在チェック
echo('ファイルが存在しません。ファイル名は【'.$fname.'】です。');
}else{
unlink($fname);
echo('ファイルを削除しました。ファイル名は【'.$fname.'】です。');
}
?>" ;
</script>
</body>
</html>
Javascriptソース
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-language" content="ja">
<meta charset="UTF-8">
<title>ファイルアップロード</title>
</head>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">ファイル:
<input type="file" name="upfile" size="50" /><br /><br />
<input type="submit" value="アップロード" />
</form>
</body>
</html>
PHPソース
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-language" content="ja">
<meta charset="UTF-8">
<title>ファイルアップロード</title>
</head>
<body>
<p><?php
if (is_uploaded_file($_FILES["upfile"]["tmp_name"])) {
// アップロードファイルの移動
if (move_uploaded_file($_FILES["upfile"]["tmp_name"], "files/" . $_FILES["upfile"]["name"])) {
// パーミッションの設定
chmod("files/" . $_FILES["upfile"]["name"], 0644);
echo $_FILES["upfile"]["name"] . "をアップロードしました。";
} else { echo "ファイルをアップロードできません。"; }
} else { echo "ファイルが選択されていません。";}
?></p>
</body>
</html>
Javascriptソース
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-language" content="ja">
<meta charset="UTF-8">
<title>javascript⇒php</title>
</head>
<body>
<p>パラメータの引き渡し</p>
<p><a href="http://tomari.org/main/php/jsptophp1.php?param1=1234¶m2=abcd¶m3=8823">
http://tomari.org/main/php/jsptophp1.php?param1=1234&param2=abcd&param3=8823</a></p>
</body>
</html>
PHPソース
<?php
$param1 = $_REQUEST["param1"];
$param2 = $_REQUEST["param2"];
$param3 = $_REQUEST["param3"];
echo "param1 = {$param1}," ;
echo "param2 = {$param2},";
echo "param3 = {$param3}" ;
?>
HTMLからsubmitでPHPに渡す(サンプルの実行) 戻る
Javascriptソース
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-language" content="ja">
<meta charset="UTF-8">
<title>パラメータの渡し</title>
</head>
<body>
<h1>jsp⇒php</h1>
<form name="form" action="jsptophps.php" method="post">
param1:<input name="param1" size="80" value="0123456789"><br>
param2:<input name="param2" size="80" value="abcdefghij"><br>
<input type="submit" value="サブミットする">
//サブミットボタンで実行しないで、自動サブミットする場合はJavascriptで「form.submit();」を実行する。
</form>
</body>
</html>
PHPソース
<?php
$param1 = $_REQUEST["param1"];
$param2 = $_REQUEST["param2"];
echo "param1 = {$param1}," ;
echo "param2 = {$param2},";
?>
PHPからJavascriptに渡す(サンプルの実行) 戻る
Javascriptソース
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-language" content="ja">
<meta charset="UTF-8">
<title>php⇒javascript</title>
</head>
<body>
<p id="out">取得結果</p>
<script type="text/javascript">
<?php
$param1 = 12345;
$param2 = abcde;
echo "a = '{$param1}' ;";
echo "b = '{$param2}' ;";
?>
</script>
<script type="text/javascript">
out.innerHTML ="param1=" + a + "<br>param2=" + b ;
</script>
</body>
</html>
JavascriptからPHPに渡しJavascriptに戻す(サンプルの実行) 戻る
Javascriptソース
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-language" content="ja">
<meta charset="UTF-8">
<title>javascript⇒php</title>
</head>
<body>
<p id="out">取得結果</p>
<script type="text/javascript" src="http://tomari.org/main/php/jsptophptojsp.php?param1=abcde¶m2=12345">
</script>
<script type="text/javascript">
out.innerHTML ="param1=" + a + "<br>param2=" + b ;
</script>
</body>
</html>
PHPソース
<?php
$param1 = $_GET['param1'];
$param2 = $_GET['param2'];
header("Content-type: application/x-javascript");//PHPが出力した内容をHTML上に出力する。
echo "a = '{$param1}' ;";
echo "b = '{$param2}' ;";
?>
HTMLの特殊な意味(役割)を持っている文字(特殊文字)をただの文字(見た目は記号)として表示します。
他の使い方として悪意あるユーザデータ入力の無害化(安全性を高める)も可能です。
特殊文字(参考)
特殊文字 文字実体参照 名前、呼び方 " " ダブルクォート ' ' アポストロフィ & & アンパサンド < < 小なり > > 大なり / ⁄ スラッシュ スペース(空白)
Javascriptソース
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-language" content="ja">
<meta charset="UTF-8">
<title>HTMLの表示</title>
</head>
<body>
<pre><code>
<?php
$tmp = file_get_contents('htmldsp.php') ; //HTMLコンテンツを読み込む
$tmp = htmlspecialchars($tmp,ENT_QUOTES) ; //HTML特殊文字を変換する。
echo $tmp ; //表示する。
?>
</code></pre>
</body>
</html>