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>
取得結果 1
<p id="out1"></p>
取得結果 2
<p id="out2"></p>
<script>
<?php
$param1 = 12345;
$param2 = 'abcde';
echo "a = '{$param1}' ;";
echo "b = '{$param2}' ;";
?>
</script>
<script>
//その1
out1.innerHTML ="param1=" + a + "<br>param2=" + b ;
//その2
out2.innerHTML ="param1=" + <?php echo $param1 ; ?> + "<br>param2=" + "<?php echo $param2 ; ?>" ;
</script>
</body>
</html>
JavascriptからPHPに渡しJavascriptに戻す(その1)(サンプルの実行) 戻る
Javascriptソース
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-language" content="ja">
<meta charset="UTF-8">
<title>jsp⇒php⇒javascript</title>
</head>
<body>
取得結果
<p id="out1"></p>
<script>
xhr = new XMLHttpRequest();
//openの第三引数は非同期(true)で行うと言う指定
xhr.open("GET","jsptophptojsp2.php?param1=12345",true);
xhr.responseType = "text"; //結果をテキスト形式で取得
xhr.addEventListener('load', function(event){
a = xhr.response ; //->本来のメインの出力
b = event.target.response ; //->イベントにも入る
out1.innerHTML = a + "<br>" + b ;
});
xhr.send(null);
</script>
</body>
</html>
PHPソース
<?php echo 'param1='.$_GET['param1'] ; ?>
JavascriptからPHPに渡しJavascriptに戻す(その2)(サンプルの実行) 戻る
Javascriptソース
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-language" content="ja">
<meta charset="UTF-8">
<title>jsp⇒php⇒javascript</title>
</head>
<body>
取得結果
<p id="out1"></p>
<script>
xhr = new XMLHttpRequest();
xhr.open('POST', 'jsptophptojsp3.php', true);
xhr.responseType = 'json'; //JSON形式で取得
xhr.addEventListener('load', function(event) {
a = xhr.response.name1 ;
b = xhr.response.name2 ;
out1.innerHTML = "param1=" + a + "<br>param2=" + b ;
});
fd = new FormData();
fd.append("param1","12345");
fd.append("param2","abcdef");
xhr.send(fd);
</script>
</body>
</html>
PHPソース
<?php $array = array(); $array["name1"] = $_POST['param1'] ; $array["name2"] = $_POST['param2'] ; echo json_encode($array); ?>
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>