2018年01月31日


PHP 先頭


<?php
header( "Content-Type: text/html; charset=utf-8" );

header( "Expires: Thu, 19 Nov 1981 08:52:00 GMT" );
header( "Cache-control: no-cache" );
header( "Pragma: no-cache" );

foreach( $_GET as $key => $value ) {
	$_POST[$key] = $_GET[$key];
}

?>

キャッシュ制御は Expires だけで十分だと思いますが、一応。

※ session_cache_limiter( 'nocache' ) で出力される内容とほぼ同じです

GET でも POST でも、$_POST で記述する方法なので、既存のソースコードに有効な場合があります。

それと、SQL の 文字列の一部として扱われる場合は ' を '' に変換しなおす必要があります。




タグ:PHP
posted by at 2018-01-31 16:09 | 小コードコピー | このブログの読者になる | 更新情報をチェックする

2009年07月03日


prototype.js の Ajax.Request の encoding パラメータ

Ajax.Request を使って直接サーバーへ POST するテストをしていて、
encoding パラメータは get コマンドでは意味無い事が解りました。
元々使うような引数使って無かったので気づかなかったです。
if (this.method == 'post') {
  headers['Content-type'] = this.options.contentType +
    (this.options.encoding ? '; charset=' + this.options.encoding : '');

  /* Force "Connection: close" for older Mozilla browsers to work
   * around a bug where XMLHttpRequest sends an incorrect
   * Content-length header. See Mozilla Bugzilla #246651.
   */
  if (this.transport.overrideMimeType &&
      (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005)
        headers['Connection'] = 'close';
}

これからすると、結局 post では、HTTP ヘッダの Content-type に
エンコードが指定されるだけで、内部的には UTF-8 でエンコードされる
事になります。ですから、受け取ったサーバではそのヘッダ情報を元に、
自動変換処理する場合にのみ必要になるだけで、クライアントとサーバ
側で約束ができている場合は全く必要無い事になります。

落ち着いて考えると当たり前なのですが。
toQueryString: function() {
  return this.inject([], function(results, pair) {
    var key = encodeURIComponent(pair.key), values = pair.value;

    if (values && typeof values == 'object') {
      if (Object.isArray(values))
        return results.concat(values.map(toQueryPair.curry(key)));
    } else results.push(toQueryPair(key, values));
    return results;
  }).join('&');
},

posted by at 2009-07-03 15:17 | 小コードコピー | このブログの読者になる | 更新情報をチェックする

2009年06月21日


PHP : リファラチェック

特定の URL からしかアクセスできないようにします。
$Site = false;
$file = file( "URLがリストされたファイル" );
for( $i = 0; $i < count( $file ); $i++ ) {

	# 改行削除
	$target = rtrim( $file[$i] );

	# 空行は無視
	if ( $target == "" ) {
		continue;
	}

	# コメント文字
	if ( substr( $target, 0, 1 ) == ";" ) {
		continue;
	}

	$len = strlen( $target );
	$ref = substr( $_SERVER['HTTP_REFERER'], 0, $len );
	if ( $target == $ref ) {
		$Site = true;
		break;
	}
}




posted by at 2009-06-21 03:14 | 小コードコピー | このブログの読者になる | 更新情報をチェックする

PHP : 右端の文字


$wk = trim( $_POST['graphics'] );
$wk = substr( $wk, strlen($wk)-1, 1 );
if ( $wk != '/' ) {
	$_POST['graphics'] .= "/";
}




タグ:PHP String
posted by at 2009-06-21 02:54 | 小コードコピー | このブログの読者になる | 更新情報をチェックする

PHP : HTMLを表示する為のコードを表示する

データが shift_jis の場合は、euc-jp に変換してから処理して下さい。
$Text = htmlentities( $Text, ENT_NOQUOTES, "euc-jp" );
$Text = htmlentities( $Text, ENT_NOQUOTES, "euc-jp" );

関連する記事

PHP : キャラクタセット変換



posted by at 2009-06-21 02:51 | 小コードコピー | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

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

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

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

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


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

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

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

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

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

この広告は180日以上新しい記事の投稿がないブログに表示されております。