SQLの窓

2011年06月30日


PHP : ImageMagick : 背景が透過する画像を作成

▼ クリック


色指定で 'none' を指定してみて下さい。ネタ元は、PHP マニュアルの テキスト描画ページの投稿データです





posted by lightbox at 2011-06-30 23:59 | PHP + WEBアプリ | このブログの読者になる | 更新情報をチェックする

2011年06月26日


PHP雛型(2会話DB更新処理) : MySQL、XMLHttpRequest、XML、JSON、Canvas





位置指定は、全て position:absolute です
  ( プレースホルダは、position:relative )

データ参照に XMLHttpRequest を使用しています

main.php の data_format 変数に "xml" をセットすると、xml で呼び出します

xml の Content-Type は application/xml です
  ( デバッグ時はブラウザで直接確認します )

json の Content-Type は text/plain です
  ( デバッグ時にブラウザで直接確認する為です )

mysql のデータは mysql_fetch_array で取り出しています

入力エリアの枠は canvas を使用しています

更新は form で IFRAME に対して送信しています
  ( IFRAME 内に書き出された JavaScript で元の画面操作を行います )



posted by lightbox at 2011-06-26 13:01 | PHP + WEBアプリ | このブログの読者になる | 更新情報をチェックする

2011年04月23日


PHP : 初心者用スケルトンセット : SQL、メール、Twitter




▼ ソースコード
PHP : 初心者用フォームスケルトン : SQL、メール、Twitter

php.php は、そのままではエラーが表示されない、WEB サーバーで実行する為に利用しています。Toypark や ラクーカンはそのようになっていると思いますが、その必要の無いさくらインターネットでも動作確認しています。

PHP をテストする為の初心者用フォーム にもう少し手を加えて、同じページのIFRAME に表示するようにしています。

コンボボックスで目的のアプリを切り替える為の JavaScript の記述も加わっています。

このフォームから実行できる PHP のサンプルとして、MySQL の実行と、メール送信( sendmail )と、Twitter の投稿を添付しました。メソッドは GET で実行している為、あまり長い文は使用できませんが、実用的なアプリの初期サンプルとしては、POST より GET のほうが良いと思います。

※ セキュリティ上の配慮は行っていません。


関連する記事

PHP : Twitter への投稿 : バージョン1


posted by lightbox at 2011-04-23 23:28 | PHP + WEBアプリ | このブログの読者になる | 更新情報をチェックする

2011年04月15日


PHP をテストする為の初心者用フォーム



WEBアプリケーションでフォーム一つ作成するにしても、実際は多くのの情報が、
通常は「暗黙」のもとに、常識のように省略されたりします。その辺を重点的に
明示しています

■ HTML5 の標準モード指定( <!DOCTYPE html> )
■ キャラクタセットは失敗の無いように UTF-8 で統一
■ CSS を分離すると、解りにくくなるのでインラインで指定
■ 書いたままの表示イメージになるように、body に white-space:pre
■ FORM では method を明示
( 最初は引き渡すデータがアドレスバーで見えるように get を使用 )
■ FORM の記述で改行が増えないように display:inline
■ TEXTAREA のサイズは css で指定( 他のコンテンツとの調整が容易 )
■ アプリケーションの実行と画面を分離する為に、action で php を指定
■ Firefox や Chrome でテキストエリアのサイズを変更できないように resize:none
■ HTML の属性は読みやすいようにタブで揃える
■ HTML の要素も必要ならばタブでインデントする
■ style と イベントはシングルクォートで囲う
( 内部でダブルクォートを使えるように )
sql.htm
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>SQL実行</title>
</head>
<body style='white-space:pre;'>
<form
	action="test_001.php"
	method="get"
	target="_blank"
	style='display:inline;'
>
	<span style='font-size:20px;'>初心者用フォームスケルトン</span>
	<textarea
		name="text"
		style='width:400px;height:300px;resize:none;'
	></textarea>
	<input
		type="submit"
		value="送信"
	/>
</form>
</body>
</html>

関連する記事

PHP : 初心者用スケルトンセット : SQL、メール、Twitter
PHP で MySQLをテストする為のソースコード
PHP : Twitter への投稿 : バージョン1
PHP : メール送信(unix)
PHP : メール送信(windows+basp21)


posted by lightbox at 2011-04-15 12:43 | PHP + WEBアプリ | このブログの読者になる | 更新情報をチェックする

2009年09月14日


PHP : セッションによるログインテスト

注意事項
※ SHIFT_JIS です。
※ テストする為の雛型ですので、その機能を最優先しています
■ $_GET の内容を $_POST に転送後、SHIFT_JIS の問題と、クォートの対応をしています
■ 送信するとログイン状態で、リダイレクトされます( GET 状態になります )
■ ログイン状態ですと、session_id が表示されるので、セッションの有効を確認できます
( 再送信して、session_id が変わらなければ OK )

<?
session_start();
header( "Content-Type: text/html; Charset=shift_jis" );
header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );

foreach( $_GET as $Key => $Value ) {
	$_POST[$Key] = $_GET[$Key];
}
foreach( $_POST as $Key => $Value ) {
	$_POST[$Key] = str_replace("\\\\", "\\", $Value );
	$_POST[$Key] = str_replace("\\'", "'", $_POST[$Key] );
	$_POST[$Key] = str_replace("\\\"", "\"", $_POST[$Key] );
}

if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) {
	$_SESSION['login'] = 'yes';
	header( "Location: ./login.php" );
	exit();
}

if ( $_SESSION['login'] == 'yes' ) {
	print session_id() . "<br>";
}

?>
<HTML>
<HEAD>
<META http-equiv="Content-type" content="text/html; charset=Shift_JIS">
<TITLE>HTML テンプレート</TITLE>
<STYLE type="text/css">
* {
	font-family: "MS Pゴシック";
	font-size: 12px;
}
BODY {
	background-color: forestgreen;
	color: white;
}
</STYLE>
<SCRIPT language="javascript" type="text/javascript">

// *********************************************************
// フォームのチェック
// *********************************************************
function CheckData() {

	return true;
}

</SCRIPT>
</HEAD>

<BODY>

<h3>ログイン</h3>
<FORM
	name="frmMain"
	method="POST"
	onSubmit='return CheckData()'
>

<INPUT type="text" name="inField">
<br>
<TEXTAREA name="inText" cols="80" rows="15">
上のフィールドとこの入力エリアはサンプルです。
処理は実装されていません
</TEXTAREA>
<br>

<HR>

<INPUT name="send" type="submit" value="送信">

</FORM>

</BODY>
</HTML>



posted by lightbox at 2009-09-14 15:50 | PHP + WEBアプリ | このブログの読者になる | 更新情報をチェックする

2009年06月06日


少なくともIEでキャッシュを禁止する

Microsoft サポート オンラインには、以下のような文書があります。

[HOWTO] Windows 2000 で Web キャッシュを禁止する方法
<%
Response.Expires = 0
Response.Expiresabsolute = Now() - 1
Response.AddHeader "pragma","no-cache"
Response.AddHeader "cache-control","private"
Response.CacheControl = "no-cache"
%>


実際問題、先頭の Response.Expires = 0 は、意味無いのですが、この処理によって以下のような HTTP ヘッダが返されます
HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Date: Fri, 05 Jun 2009 17:59:47 GMT
X-Powered-By: ASP.NET
pragma: no-cache
cache-control: private
Content-Length: 6
Content-Type: text/html
Expires: Thu, 04 Jun 2009 17:59:46 GMT
Cache-control: no-cache

結局、Response.Expiresabsolute は、過去の Expires(有効期限)なので、PHPで以下のように書きます
<?php
header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );
?>


PHP では、Cache-control を二つ書いても、後に書いたほうしか有効になりません。これは正しい仕様で、ASP では複数出力できるくせにそのせいで予期せぬ動作をした経験があります。

よって、この Microsoft サポート オンライン の情報は信用してはならないという事で、あくまでガイドラインでしか無く、自分で最終的な判断をする必要があります。

pragma と Cache-control の違いは HTTP/1.0 と HTTP/1.1 の違いです。

経験から言うと、Expires の過去日付だけで問題が出た経験はまだありません。
タグ:IE
posted by lightbox at 2009-06-06 03:45 | PHP + WEBアプリ | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

CSS ドロップシャドウの参考デモ
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり