最近、PHPのお勉強をはじめました。
ということで、PHPでプログラムつくってみました。
こんなプログラム。
みなさん、Webからフォームの内容をメールで送りますよね。
でも、いちいちメールでくるのは、めんどう。
サーバーに、XML形式で書き出しておいて、あとでFTPでそのXMLファイルをうけとるんでいいよ!っていうことも、ありますよね。
そんな場合のために、フォームで入力された内容を、XMLで書き出すプログラムをつくってみました。
データを入力してもらう、ユーザーフォームは、こんなかんじ
<HTML> <BODY> <form method="post" action="testfile.php"> username:<input type="text" name="username"> <input type="submit" name="submit" value="実行"> </form> </BODY> </HTML> |
で、testfile.phpというファイルにPOSTで飛ばしている。そのtestfile.phpの内容は、こんなかんじ。
<HTML> <BODY> <?php include("xmlwrite.php"); xml_write("./test/test.xml","doc","Shift_JIS",$_POST); ?> かきだしました </BODY> </HTML> |
つまり、実際のXML書き出しの中身は、xmlwrite.phpというファイルの中に、
xml_wtriteという関数で書いている。
その関数の
第一引数は、書き出し先ファイル名(xmlファイル)
第二引数は、ルートのタグ(docというタグがルート)
第三引数は、日本語のエンコード(今回は、Shift_JIS)
第四引数は、書き出すデータを連想配列の形で(今回は、POSTの中に入ってるデータ全部)
ということになります。
で、実際のxml書き出しプログラムである、xmlwrite.phpの中身は、こちら
<?php //*=====================================================*/ // 引数をXML書き出し */ // 引数 fname 書き出しファイル名 */ // roottag ルートのタグ名 */ // encode 日本語エンコード */ // val 書き出し内容(連想配列) */ //*=====================================================*/ function xml_write($fname,$roottag,$encode,$val) { $file = fopen($fname,"w"); //------------------------------// // XMLヘッダ書き出し // //------------------------------// $buf ="<?xml version=\"1.0\" encoding=\"" . $encode."\" ?> \r\n"; fputs($file,$buf); //------------------------------// // XMLルート書き出し // //------------------------------// fputs($file,"<".$roottag.">\r\n"); //------------------------------// // XML本文書き出し // //------------------------------// foreach($val as $key => $oneval) { fputs($file,"<".$key.">" . $oneval . "</".$key.">\r\n"); } //------------------------------// // XMLルート終了 // //------------------------------// fputs($file,"</".$roottag.">\r\n"); fclose($file); } ?> | </tb>
で、このとき、testfile.phpで、書き出し先を、./test/test.xmlとしているので、testというフォルダをつくって実行すれば、うまくいきそうである。
普通うまくいく。
でも、ロリポップではうまくいかない。
その理由は。。。長くなったので、次の記事で書く。