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>