Home > 1月 1st, 2008

2008.01.01

PHP独習中 - return未定義の関数の戻り値はNULL

  • 地獄のようにどうでもいいのだけれど、本に載ってなかったのでテストしてみたらNULLだった
  • ふつうだー
テストコード
<?php
	function test() {
		print ("exec test()<p />");
	}
	$ret = test();
	print(gettype($ret));
?>
結果

exec test()
NULL

じゃーん。NULLでしたー。

PHP独習中 - フォーム入出力

実行テスト用 -> http://www.masayashi.com/php/test/formpost.html

memo
  • htmlのフォームからPOSTで投げたデータをphpで受け取って表示するハローワールド
  • 受け取ったデータなどを出力するときは、四の五の言わずにhtmlspecialchars($hoge);かけとけって感じらしい。
  • <script>alert("こんにちはこんにちは!!")</script>

    みたいな入力を与えたら、出力側でスクリプトが実行される。一時流行ったXSS(クロスサイトスクリプティング)ってやつ。

  • このサンプルでもそういう挙動をするはずなんだけど、どうしてかぼくの環境では実行ならず。あるぇー?ブラウザレベルで対策されてるとか?だれかおしえてー
    • コメント欄にて解決しました。Thanks takadekoさん!
formpost.html
<html>
	<head>
		<title>フォーム入力</title>
	</head>
	<body>
	フォームからの入力
	<form action="formput.php" method="post">
		<input type="text" name="name" value="(´・ω・`)" />	<!-- ここの"name"をデータ取り出すときにつかうよー -->
		<input type="submit" value="submit" />	<!-- いってらっしゃい -->
	</form>
	</body>
</html>
formput.php
<html>
	<head>
		<title>フォーム出力</title>
	</head>

	<body>
	<strong>フォームからの入力を受けての出力</strong><p /><p />
	<?php
		$name = $_POST{'name'};	//POSTでもらったデータ

		print ("受け取ったデータをそのまま => $name <p />");
		//	上は$nameに<script>タグを入れて、変なコード実行させられるので危険!
		//	XSS(クロスサイトスクリプティング)っていうらしいよ!

		print ("受け取ったデータにhtmlspecialchars() => ".htmlspecialchars($name)."<p />");
		//	htmlspecialchars()で"<>"とかを実際参照の"&lt;&gt;"に変換しとこうぜー
		//	これで絶対完璧ってわけではないけれど、最低限のマナー
	?>
	</body>
</html>