JAWS-UG勉強会

2013.11.29 Friday | by こも
職場近くでAWSの勉強会があったので、思い切って行ってみました。

11月12日〜15日にラスベガスにて開催された「AWS re:Invent 2013」の報告会という位置付けの勉強会でした。


張り紙

JAWS-UG勉強会


AWS re:Invent 2013で発表されたAmazon KinesisやAmazon AppStreamなどのサービスについてご紹介頂きました。

それにデスクトップをクラウドに置くという発想のAmazon WorkSpacesの実演が行われました。


僕はAWSビギナーなもので、正直内容にはあまりついていけませんでしたが、いろんな新しい技術に触れられて楽しかったです。

PHPでWeb APIを作ってみた

2013.11.03 Sunday | by こも
Web APIを作りたいなぁという事例に突き当たりました。

Web APIの使い方に関してはググるとたくさん出てくるんですが、作り方については情報が少なくて困りました。
まぁでも、ただのXmlのテキスト出力ならば、なんとかできるかなぁと思ってやってみました。


今回はa値とb値の2つの入力値から和差積商を返す、シンプルなテスト用Web APIを作ってみました。

<?php
	// xml出力を指定
	header("Content-Type: text/xml");

	// 入力パラメータのチェック
	if(isset($_GET['a'])){
		$a = htmlspecialchars($_GET['a']);
		if(!is_numeric($a)){
			dispError("a が不正");
		}
	} else {
		dispError("a が未設定");
	}

	if(isset($_GET['b'])){
		$b = htmlspecialchars($_GET['b']);
		if(!is_numeric($b)){
			dispError("b が不正");
		}
	} else {
		dispError("b が未設定");
	}

	// 入力値から和差積商を計算
	$wa = $a + $b;
	$sa = $a - $b;
	$seki = $a * $b;
	if($b == 0){
		// ゼロ割はエラー
		$sho = "error";
	} else {
		$sho = $a / $b;
	}

	// 計算したものを出力
	echo "<?xml version='1.0' encoding='utf-8'?>";
	echo "<Result a='".$a."' b='".$b."'>";
	echo "<Wa>".$wa."</Wa>";
	echo "<Sa>".$sa."</Sa>";
	echo "<Seki>".$seki."</Seki>";
	echo "<Sho>".$sho."</Sho>";
	echo "</Result>";


	// エラーメッセージ関数
	function dispError($msg) {
		echo "<?xml version='1.0' encoding='utf-8'?>";
		echo "<Result>";
		echo "<Error>".$msg."</Error>";
		echo "</Result>";
		exit;
	}
?>

XMLで出力するというheader定義が重要なようです。
これがないと、html出力されてAPIとしては機能しない模様……。


動作確認のため、ローカル環境で次のようなパラメタで実行します。

http://localhost/testapi.php?a=100&b=20

[実行結果]

WebAPIテスト

すると思った通りの結果が返ってきました。

XML形式で出力されたら、あとはsimplexml_load_fileを使って普段通り解析して処理します。

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>API Test</title>
</head>

<body>
<?php
	$url ="http://localhost/testapi.php?a=100&b=20";

	// APIをリクエスト
	error_reporting(0);
	try {
		$result = simplexml_load_file($url);
	} catch (Exception $e) {
		error_reporting(E_ALL);
		return(0);
	} 
	error_reporting(E_ALL);

	if(isset($result->Error)){ 
		// エラー表示
		echo $result->Error;
	} else {
		// 計算結果を表示
		if(isset($result->Wa)){ 
			echo "和:".$result->Wa."<br>¥n";
		}
		if(isset($result->Sa)){ 
			echo "差:".$result->Sa."<br>¥n";
		}
		if(isset($result->Seki)){ 
			echo "積:".$result->Seki."<br>¥n";
		}
		if(isset($result->Sho)){ 
			echo "商:".$result->Sho."<br>¥n";
		}
	}
?>

</body>
</html>

[実行結果]

和:120
差:80
積:2000
商:5

細かい処理などは端折っていますが、最低限必要な部分はざっくりこんな感じでしょうか。
なんとか使えそうな気がしてきました。


無知でした(^^;;

2013.11.03 Sunday | by こも
ネットのニュースでクロスサイトスクリプティングによるWebサイトのセキュリティが問題になっていました。

恥ずかしながら「なにそれ?」ってくらい無知だったので、慌てて調べました。



こちらのサイトが分かりやすくまとまっていましたので、参考にさせて戴きました。

ユーザが投稿したスクリプトが動くって怖いですよね(^^;;


パラメタの構文チェックなどをしていたので、今のところ実害のあるようなサイトは作っていなかったと思いますが、念のため$_GET$_POSTなどを総チェックしてhtmlspecialchars関数を噛ませて対応しました。


PHPは簡単に書けるのでWebプログラミングを始めるには手っ取り早いのですが、こういう問題を知らないでやると、自分のサイトが悪用されることにもなるんですね(^^;;

勉強になりました。

PHPの実行結果をhtmlファイルとして書き出す

2013.10.01 Tuesday | by こも
PHPの実行結果をhtmlファイルとして書き出す方法にトライしてみました。


何故こういうことをやろうかと思ったかというと、あるDBのデータを元に生成された数千のコンテンツページを持つWebサイトのリニューアルに際して、以下のこと考えました。

月々500円未満の共同型の安サーバを借りているので、PHPで動的に作るより静的なhtmlをサーバ上に置いた方が負荷が軽減される

htmlで書かれた既存の数千のコンテンツページに対して、今からPHPで置き換えると外部SEO対策をまたやり直さないといけない


なので、ローカル環境で動くPHPシステムを作って、PHPの実行結果をhtmlファイルを出力して、それをサーバにアップするという手法をとってみようかなぁと思いました。



以下はsample.phpの実行結果をoutputtest.htmlに書き出す方法です。


<?php
	$url = "./sample.php";

	$buff = file_get_contents($url);

	$fname = "outputtest.html";

	$fhandle = fopen( $fname, "w");
	fwrite( $fhandle, $buff);
	fclose( $fhandle );

	echo "<a href='".$fname."'>作ったファイルを開く</a>";
?>

一瞬、「おっ、うまくいった」と思ったのですが、作られたhtmlファイルをよくみると何かおかしいことに気が付きました。


実はこのコードではPHPファイルの中身をhtmlファイルとして書き出すだけで、PHPタグやPHPのソースコードまでそのままコピーされていました(^^;;

やりたいことは、PHPファイルの中身の出力ではなくて、PHPの実行結果の出力なので困りました。



どうやるか試行錯誤していたら、httpアクセスならうまく行きましたので、そちらの修正版のソースも残しておきます。


<?php
	$url ="http://localhost/sample.php";

	$buff = file_get_contents($url);

	$fname = "outputtest.html";

	$fhandle = fopen( $fname, "w");
	fwrite( $fhandle, $buff);
	fclose( $fhandle );

	echo "<a href='".$fname."'>作ったファイルを開く</a>";
?>


これで一応やりたいことはできました。
(上記の例ではxamppを使ったローカル環境(localhost)にsample.phpを置いています)


でも、よくよく考えてみると、こうやって数千のコンテンツページをリニューアルしたとして、修正ごとにいちいち全部のファイルをアップロードする手間が発生しますよね(^^;;

そう思うと、この方法はセオリーではなくって、いっそのこと全システムをPHPに置き換えた方がいいんじゃないかという気がしてきました(>_<)

デブサミ関西2013へ行ってきた

2013.09.20 Friday | by こも
神戸で開催されたデブサミ関西2013へ行ってきました。







Web系やモバイル系のセッションを中心に参加してきました。


Web系をやるなら、PHPやJavaなど以外にもJavaScriptもそれなりにやっておいた方がいいような印象です。
知らない技術とか、よく分からない単語とかも飛び交っていましたが、いろいろ収穫はあったと思います。

Sponsored Link
Recommend
PHP 逆引きレシピ (PROGRAMMER'S RECiPE)
PHP 逆引きレシピ (PROGRAMMER'S RECiPE) (JUGEMレビュー »)
鈴木 憲治,安藤 建一,山田 直明,八木 照朗,山本 義之,河合 勝彦
Recommend
Recommend
Powered
無料ブログ作成サービス JUGEM