2011年1月23日日曜日

リナックス系サーバー から Windowsサーバーへ

要するに Windowsサーバー で php で html生成 出来ればいいのかも知れない
http://webtech.seesaa.net/article/94979061.html

1.あらかじめサーバ内にファイルが作られる場所を確保する。
2.クライアントに見てもらいたいファイル、つまり行いたい処理が書かれたPHP(仮にhoge.php)を作る。
3.ボタンを押すとファイルが作られる処理を書くPHP(仮にcallhoge.php)を作る。
4.ボタンをぽちっと押す。
5.スクリプト処理が終わったhtmlが作られる。

こんな感じです。

1.のディレクトリは書き込み権限を許可しておかないと怒られます。
hoge.phpの内容は当然その時それぞれ人によって違うので、ここではcallhoge.phpのソースをのせます。


<?php//POSTされた値を受け取る
$create = htmlspecialchars($_POST['create'],ENT_QUOTES);
//生成場所
$savepath = "/var/www/html/dirhoge/";
//POSTされたか否か
$hantei = 0;
if(($create != null) and ($create != ""))
{
  $hantei = 1;
}
//POSTされたら
if($hantei == 1)
{
  //****** hoge.html作成 ******
  $filename = "hoge.html";
  $html_tmp = "";
  $html = "";
  //出力をバッファリング開始
  ob_start();
  //処理したいファイルをインクルードする
  require('./hoge.php');
  $html_tmp = ob_get_contents();
  $html = str_replace("\r","",$html_tmp);
  //保存処理
  if(!($fd = fopen($savepath . $filename,"w"))){die($filename . " 書き込みオープン失敗");}
  if(!($rslt = fwrite($fd,$html))){die("書き込み失敗");}
  fclose($fd);
  // バッファリング終了&破棄
  ob_clean();
  echo '<div style="padding-top:10px;"><a href="hoge.html">hoge.html</a>を作成しました。</div><br>';
  //******************************
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
<title>html生成</title>
</head>
<body>
<?php//POST前
if($hantei == 0)
{
?>
  <form name="form1" method="post" action="">
  <input type="submit" name="create" value="静的html作成">
  </form>
<?php}
//POST後
else
{
?>
  <form name="form2" method="post" action="">
  <input type="submit" name="back" value="戻る">
  </form>
<?php}
?>
</body>
</html>






PHP では インクルードされた http://test.homealive.co.jp/index.php 

前は HTMLで インクルードされてる自体が特殊なのか・・・