2011年7月22日金曜日

【CakePHP関連】hashPasswords関数について

お疲れ様です。

ユーザーのパスワード変更で
自前でパスワードを暗号化する処理を実装する際にはまったので備忘録します。

authコンポーネントを利用している場合は
$this->Auth->hashPasswords($data); という具合で暗号化しますが

hashPasswordsはユーザー名とパスワードの両方が必要です。
パスワードだけだと、ハッシュ値を生成してくれません。

上記の例で言うと$dataには

$data['User']['username'] = 'username';
$data['User']['password'] = 'password';

という風に両方設定します。

参考サイト:

以上

2011年6月28日火曜日

【PHP関連】フォームでのファイルの最大アップロード数について

お疲れ様です。

はまりましたので備忘録します。

以下参考サイトからの抜粋

-------------------------------------------------------------------------------------

PHPのバージョン5.2.12から、一つのフォームで送信できるファイルの数がデフォルトで20個に制限されるようになりました。(実際にアップロードするファイル数ではなく、の数の制限です。)

-------------------------------------------------------------------------------------

まったく知りませんでした。

変更するためには
php.iniの設定で
max_file_uploads = 100

としてあげます。

以上




2011年6月15日水曜日

【その他関連】リッチテキストエディタとは

お疲れ様です。

いまさらですが
わからない単語があったので備忘録しておきます。

「リッチテキストエディタ」

リッチ テキスト エディタとは、入力したデータと出力したデータの見た目が一致するテキスト エディタの事を指します。 今作りながら見ている物がそのまま出力結果となる、この事を用語で

WYSIWYG: "What You See Is What You Get"
と言います。

私が利用しているCMS Joomlaのエディタもリッチテキストエディタの一種ですね

以上

2011年6月14日火曜日

【PHP関連】ファイル名が日本語のファイルをアップロードするには

お疲れ様です。

見事にはまりましたが
アップロードファイルの文字コードをSJISにエンコードしてあげればよかったみたいです。

mb_convert_encoding($uploadfile, "SJIS", "EUC-JP")

参考サイト:
http://okwave.jp/qa/q1724442.html

2011年6月10日金曜日

【PHP関連】ファイルアップロードのファイル容量制限(upload_max_filesize)の変更方法

お疲れ様です。

タイトルの件で備忘録します。

phpファイルに記述する場合

// ファイルアップロードの最大サイズを 10M に設定
ini_set('upload_max_filesize', 10 * 1024 * 1024);

.htaccess に記述する場合

# ファイルアップロードの最大サイズを 10Mに設定
php_value upload_max_filesize 10M

# ファイルアップロードの最大サイズを 500Kに設定
php_value upload_max_filesize 500K

以上

【CakePHP関連】セッションタイムアウトについて

お疲れ様です。

タイトルの件で、何度も調べるので備忘録します。

タイムアウトは
core.phpで設定します。

Configure::write('Session.timeout', '120');

上記の感じで、単位は秒です。

しかし、これだけではありません。
実はセキュリティレベルも絡んできます。

関連図は

・セキュリティレベルがhigh
 タイムアウト設定値 × 10

・セキュリティレベルがmedium
 タイムアウト設定値 × 100

・セキュリティレベルがlow
 タイムアウト設定値 × 300

となります。

なので、例でいくと

high:120×10=1200秒(20分)
medium:120×100=12000秒(200分)
low:120×300=36000秒(600分)

となります。

以上

2011年6月9日木曜日

【CakePHP関連】コンポーネント内でコントローラーの関数を利用する方法

お疲れ様です。

タイトルの件で調査しましたので、備忘録します。


方法は下記のとおりです。

1.initialize() メソッドを実行して $controller を呼び出す

2.インスタンスされた$controllerから各メソッド利用

例)

function initialize(&$controller) {
$this->controller =& $controller; //インスタンス生成
}

function login($value)
{
$this->controller->redirect('success'); //メソッド利用
}

コントローラーをインスタンスして利用するってことです。

以上

【Androidアプリ関連】ローカル変数・・・読み取れませんというエラーについて

お疲れ様です。

タイトルの件で、ハマりましたので備忘録します。


このエラーの意味は

「宣言されているが、利用されていない」というエラー

宣言後に利用されていない変数があるかどうかをチェックしましょう。
コメントアウトなどを確認すると
「あとで使うけど、今は確認のためにコメントアウトしておこう」
といったことでこのエラーが出たりします。

以上

【Androidアプリ関連】has stopped unexpectedly・・・というエラーについて

お疲れ様です。

タイトルの件で調査しましたので、備忘録します。

Androidアプリのintent処理を作成した際に遭遇したエラーですが
原因は以下の3つが怪しいです。

1.AndroidManifest.xmlにエラー
2.繊維先のjavaクラス内にエラー
3.繊維先のレイアウトxmlファイルにエラー

私もこのエラーに装具しましたが、3のエラーが該当しました。

Webで情報を探していると1のエラーが多かったので
結構時間かかりました。

ちなみに
intentというのは
簡単に言うと画面繊維のことで
Androidアプリでいうとアクティビティを切り替える処理という
感じです。

以上

【Androidアプリ関連】レイアウトxmlファイルの書き方

お疲れ様です。

最近、Androidアプリの開発方法などを勉強していますので
情報を発信していきたいと思います。

今回はタイトルの件で確認したことです。

Androidアプリはxmlでアクティビティのレイアウトを設定することができます。

android:text="@string/weight_tanni_title"
android:id="@+id/user_best_weight"

こういう感じなのですが
@stringとか@idとかあります。
その後の記述は変数名みたいなものです。

このstringとidの違いは

string=string.xmlというxmlファイルで変数値を設定する
id=javaクラスファイルで変数値を設定、利用する

となります。

どういうことかといいますと
xmlでレイアウトの設定が可能ですが、そこには変数名だけを定義し
別のxmlファイルで値を設定する、という記述が可能です。
その場合はstring.xmlという箇所で設定します。

idは各プロジェクトのjavaクラスファイル内で、設定することが可能です。

わかりにくいかもしれませんが
要は変数に値を格納するファイルが別というイメージで考えていただければよいです。

以上

2011年6月3日金曜日

【PHP関連】キャッシュを残さないmetaタグの記述

お疲れ様です。

タイトルの件で調査しましたので備忘録します。


Metaタグでキャッシュさせないようにする。

<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">

PHPのヘッダー関数でキャッシュさせないようにする。

header('Last-Modified: '.gmdate( 'D, d M Y H:i:s' ).' GMT');
header('pragma: no-cache');
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");

以上

2011年6月2日木曜日

【PHPExcel関連】罫線を上下左右に引く場合

お疲れ様です。

タイトルの件で
調査して見つけましたので備忘録します。

例)

$sheet->getStyle('A1')->getBorders()->getAllBorders->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);

以上です。

2011年5月31日火曜日

【CakePHP関連】Javascriptコーディングの際、要素名をどのように書くか

お疲れ様です。

タイトルの件で備忘録します。

Cakeでフォームを作成すると
nameには配列っぽい名前が指定されます。

例)

【PHP関連】動的に変数を生成する

お疲れ様です。

タイトルの件で備忘録します。
phpで動的に変数を生成する一般的な方法です。

例)

$test = "A";

${"test2".$test} = "B";

これで【test2A】という変数が生成され
値はBとなります。

以上

2011年5月26日木曜日

【Joomla1.5系関連】Googleのサイト内検索を利用する

お疲れ様です。

タイトルについて、上手くいったので備忘録します。

Joomlaには標準でサイト内検索機能がついていますが
検索対象はコンテンツやメニュー等、Joomlaが標準で利用する
データのみとなっています。
なので、新たにテーブルを一個追加し、そのデータも対象に入れる場合は
前回の記事で紹介した方法で、カスタマイズが必要です。

ですが、今回はタイトルにあるように
Googleが無償で提供しているサイト内検索機能を利用して
サイト内検索を実装しようということです。

利点としては
・サイト内の全データが対象となる

これが一番大きいです。
いくらデータを追加しようが、検索対象となってくれます。

さて、設置方法ですが
まずは、http://www.google.co.jp/cse/にアクセスします。(要Googleアカウント)
アクセス後、デザイン等を設定しますが
注意点として

【ホスティングオプションは「iframe」を選択】

そうすることによって、検索結果ページを別のページに設定可能です。
その他はお好きなように設定します。

すると、コード取得において検索結果を表示するサイトのURLを入力するので
検索結果を表示するURLを入力します。
ここには、あらかじめ作成したメニューアイテムのエイリアスあたりを入力します。

例)検索結果というメニューアイテムを作成し、タイプは「スタンダード記事レイアウト」とする。
エイリアスをsearchとすれば、生成されるアドレスは「http://○○○.ne.jp/search.html」となる。

そして、検索ボックスコードは
サイト内検索を表示する部分に貼り付けます。
(カスタムモジュールとし、テンプレートに配置する方法がいいと思います。)

検索結果コードについては、カスタムモジュールとしてモジュールを生成します。
メニュー割り当ては、先ほど新しく作成したメニューアイテムに割り当てし、
ポジションはテンプレートのコンテンツを表示する部分あたりに設定します。

少々、わかりづらいかと思いますが、これで設置ができます。

ご質問がありましたら、コメントどしどしください。

以上

2011年5月25日水曜日

【CakePHP関連】ページネーションでのソートについて

お疲れ様です。

タイトルの件で
はまりましたので備忘録。

ページネーションの際、表示するデータをソートすることができます。
そこで、手持ちのCakePHP参考書にあるように

'sort'=>'id'
'direction'=>'asc'

と記述したのですが、ソートされずデフォルトのままで
表示されてしまいました。

そこで

'order'=>'id asc'

と、conditionsでよくやる方法で試したところ
上手くソートすることができました。

なぜなんでしょうか?

とりあえず備忘録します。

以上

【CakePHP関連】ページネーションで、モデルを指定する方法

お疲れ様です。

タイトルの件で
はまりまくったので備忘録します。

Cakephp1.2から実装されているページネーション機能。
非常に便利です。
条件を指定するだけでページネーションが簡単に実装できます。
そこで、ページネーションを行うデータについてですが
基本的に、記述を行うコントローラーが使用しているモデルを
自動的に参照するようになっています。

例)UsersコントローラーでUserモデルに対してページネーションを指定

class UsersController extends AppController {
var $uses = 'User';

$this->paginate();

以下省略

特に条件等がなければ、この1行で完了します。

ただし、コントローラー内で複数のモデルを使用している場合

class UsersController extends AppController {
var $uses = array('test','test2','user')

$this->paginate();

以下省略

上記記述だとtestモデルがページネーションされます。

そこでページネーションを設定する際に
モデルを指定する方法は

class UsersController extends AppController {
var $uses = array('test','test2','user')

$this->paginate('test2');

以下省略

となります。

ページネーションに関しては、よく利用すると思いますので
情報が入り次第、どんどん追加したいと思います。

以上

2011年5月20日金曜日

【Joomla1.5系関連】ルートパスを取得する

お疲れ様です。

タイトルの件で備忘録します。

$root = JURI::base();

$rootにはシステムパスが入ります。
すべてのパスにこのシステムパスをつけておけば
サイト移動時でも問題ないでしょう。

以上

【Joomla1.5系関連】サイト内検索のカスタマイズ

お疲れ様です。

Joomla標準機能である
サイト内検索ですが
プラグインを新たに追加することで
検索対象の拡大が可能です。

今回ですと、Joomlaのシステムデータとは別に
新たにテーブルを一個DBに追加したのですが
このテーブル内のデータも検索対象にしたかったので
プラグインを追加しました。

方法は
ルートフォルダ/plugins/search内にある
content.phpとcontent.xmlをコピー&リネームし
zip形式に圧縮した後、Joomla内でアップロードします。
中に記述するプログラムは、content.phpを参考に
カスタマイズします。

以上

【Joomla1.5系関連】新着記事モジュールの日付のずれについて

お疲れ様です。

今回、Joomla1.5系にて
新着記事表示モジュールを利用すると
日付がずれる(タイムゾーンを日本にしているにもかかわらず標準時間になる)
という現象を解決するために、いろいろ調査した事柄です。
何かの役に立つかもということで
一応残しておきます。

その前に、上記件の解決方法ですが
mod_latestnewsモジュールの
日付表示部分に+9時間するように修正しました。
(あまりいいとはいえませんが・・・)
コードは割愛致します。

ではでは、今回判明した事柄です。

①記事の作成や編集時にDBへデータを保存している箇所
ルートフォルダ/administrator/components/com_content/controller.php
saveContent関数

作成日時等の日時はtoMySQL関数という
MySQLのdatetime形に型を整形している感じです。
また、taskパラメーターによって、保存や適用の
リダイレクト処理もsaveContent関数内で処理もしています。


②toMySQL関数定義ファイル
ルートフォルダ/libraries/joomla/utilities/date.php

toMySQL関数のほかに
タイムゾーンによって日付を加算する処理等も行っているようですが
私の環境(Joomla1.5.22)では管理画面上に表示されている日付と
DBに格納されている日付に相違があります。
このtoMySQLで正しいタイムゾーン値(日本なら+9)が取得されてないため
DBに格納する際は標準時間(ロンドン)で格納されます。
このあたりを修正してみたのですが、なぜか保存や適用をするたびに
作成日時がどんどん+9されてしまいます。

③JFactoryクラス定義ファイル
ルートフォルダ/libraries/joomla/factory.php

これはJoomla内でよく利用されるJFactoryクラスが定義されている場所です。(おそらく)


以上です。

2011年5月19日木曜日

【CakePHP関連】ラジオボタン出力ヘルパーについて

お疲れ様です。

何回も調べなおすので、備忘録します。

以下のとおりになります。

<?php echo $form->radio('radio',array('0'=>'テスト0','1'=>'テスト1'));?>

上記記述だと、勝手にlegendがつきます。
なので、第3引数にarray('legend'=>false)を追加すると消えます。

<?php echo $form->radio('radio',array('0'=>'テスト0','1'=>'テスト1'),array('legend'=>false));?>

さらにセパレートもつけれます。

<?php echo $form->radio('radio',array('0'=>'テスト0','1'=>'テスト1'),array('legend'=>false,'separator'=>'★'));?>

以上

2011年5月18日水曜日

【HTML関連】metaタグによる検索クロール制御

お疲れ様です。

タイトルの件で調査したので
備忘録します。

<META NAME="ROBOTS" CONTENT="NONE">
<META NAME="ROBOTS" CONTENT="NOINDEX,NOFOLLOW">
そのページと、そこからリンクしている全てのページを制限する。

<META NAME="ROBOTS" CONTENT="INDEX,NOFOLLOW">
そのページのみを許可し、そこからのリンクを制限する。
index.htmlに使うと便利。
<META NAME="ROBOTS" CONTENT="INDEX">
そのページの登録を許可する

<META NAME="ROBOTS" CONTENT="NOINDEX,FOLLOW">
そのページを制限し、そこからのリンクを許可する。
このような使い方は普通しない。

<META NAME="ROBOTS" CONTENT="ALL">
下の階層ページの巡回を許可する。
このような設定は、わざわざすることでもない。

以上

【CSS関連】InputタグのCSS指定方法

お疲れ様です

HTMLのinputタグは
text、textarea、checkbox等がありますが
それを個別にスタイルシートで記述する方法が
ありましたので備忘録します。

例)
input[type=checkbox] {

****
****

}

こういう感じです。

以上

2011年5月14日土曜日

【HTML関連】メタタグによるキャッシュ制御

お疲れ様です。

発見したので備忘録します。

ページによってはキャッシュをせず、毎回サーバーのデータを取得したい
ということがあるかと思います。
そのときに、利用できるコードです。

<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Expires" content="Thu, 01 Dec 1994 16:00:00 GMT>

ただし、ブラウザの種類やバージョンによっては完全に制御できない可能性があります。

以上

【Joomla1.5系関連】サイト内検索について

お疲れ様です。

発見しましたので備忘録します。

Joomlaには標準でサイト内検索の機能が利用できます。
モジュールにてその機能を設定しますが
デフォルトだと、コンテンツだけじゃなく、カテゴリやセクションまで
検索対象となります。
つまり空のカテゴリ等があった場合も検索結果に反映されちゃいます。

検索対象をコンテンツだけにする方法ですが

1.プラグイン管理を開きます。
2.タイプ選択にて「search」を選びます。
3.検索-コンテンツ以外を非公開にします。

以上でコンテンツのみに絞る事ができます。

以上

2011年5月12日木曜日

【HTML関連】エスケープについて

お疲れ様です。

最近知ったので備忘録します。

HTMLタグのエスケープ

「&」----&amp;

「>」----&gt;

「<」----&lt;

「"」----&quot;

以上

【CakePHP関連】フラッシュメッセージ出力について

お疲れ様です。

最近知ったので備忘録します。

よくコントローラーで

$this->Session->setFlash("登録しました。");

などと行うと、ビュー側にメッセージを表示することができます。
これはデフォルトのレイアウトを使用していると、固定した位置
(つまり、Cakephpのデフォルトレイアウトに設定されている位置)に
表示されます。

このメッセージをビュー側のctpファイルで
任意の場所に表示するコードが

<?php $session->flash(); ?>

です。

以上

2011年5月6日金曜日

【Joomla1.5系関連】ファビコンの配置について

お疲れ様です。

Joomlaのフェイバリット・アイコン、通称ファビコンについて
備忘録します。

Joomlaサイトでのファビコンの設定ですが
テンプレートフォルダの直下に
「favicon.ico」をアップロードするだけで
可能です。

おそらく、これはテンプレートに書かれている
<jdoc:include type="head" />という
Joomla特有の関数が、favicon.icoの有無で
ファビコンを表示するメタタグを出力しているっぽいからです。
※まだきちんと検証していません!!

情報が入り次第、更新していきたいと思います。

以上

2011年5月2日月曜日

【PHP関連】画像ファイルアップロード時のコンテンツタイプについて

お疲れ様です。
はまったので備忘録します。

PHPのシステムにてファイルをアップロードする際
Content-Typeをみてファイルの種類を判断します。

今回JPEG画像をアップロードした際に
image/pjpegというタイプに遭遇しました。
調べてみると、ブラウザがIEの時はそうなるみたいです。。。
FIREFOXやSafari、Chromeでもimage/jpegなんですけどね。

以上

2011年5月1日日曜日

【CakePHP関連】キャッシュを行わない

お疲れ様です。

キャッシュについて備忘録します。

コントローラーからキャッシュをせず
毎回処理を通す方法です。
表示したいアクションの中で


Configure::write('Cache.check',false);

と書きます。

以上

2011年4月27日水曜日

【PHPセキュリティ関連】ファイルアップロードのサイズ制限について

お疲れ様です。
少しハマりましたので備忘録です。

PHPにおいてファイルをアップロードする際
ファイルの容量がphp.ini(設定ファイル)で決められています。
初期状態だと2Mだそうです。

変更する場合は
php.iniを直接編集することになりますが
レンタルサーバーなどの場合
変更が容易でないことがあります。

私はさくらインターネットを愛用(会社が)しています。
さくらインターネットはコントロールパネルから
php.iniの変更が可能ですので
好きなサイズに変更が可能です。

例)
upload_max_filesize = 5M

こんな感じです。
あまり大きすぎると
いろいろ問題がありそうなので
こういう設定も可能だという程度でいいかと思います。

以上

2011年4月19日火曜日

【CakePHP関連】hiddenメソッドについて

何回も調べなおすので備忘録します。

Formヘルパーのhiddenメソッドについて。

$form->hidden('User.id',array('value'=>3));

こんな感じで使います。

以上

【CakePHP関連】PHPExcelのセル関数絡み

お疲れ様です。

PHPExcelのセルに値をセットする関数で
いい情報が載っていたので
備忘録します。


// セルに値をセットする
$sheet->setCellValueByColumnAndRow(0, 1, "文字列!");
$sheet->setCellValueByColumnAndRow(1, 2, 12345);
$sheet->setCellValueByColumnAndRow(2, 3, true);
$sheet->setCellValueByColumnAndRow(3, 4, date("Y/m/d"));

参考サイト:
誰かのホームページ様
http://www.24w.jp/study_contents.php?bid=php&iid=phpexcel&sid=cell&cid=005

ありがとうございます

以上

【CakePHP関連】PHPExcelを利用する方法

お疲れ様です。

PHPExcelというphpでExcelファイルを生成するライブラリがあります。
それをCakePHPで実装する方法をご紹介します。

環境

cakephp:1.2.10
PHPExcel:1.7.6

フォルダ構成
add/vendorsの中にphpexcelフォルダを生成し、その中にダウンロードした
PHPExcelファイル群をアップロードし、phpexcel.phpを新規に作成します。

app
└vendors
  └phpexcel(新規フォルダ)
      └Classes
      └Documentation
      └Tests
      └changelog.txt
      └install.txt
      └license.txt
      └phpexcel.php(オリジナルファイル)

わかりづらいですが、こんな感じです。

また、予めテンプレートExcelファイルをアップロードします。
場所はapp/webroot/tmpフォルダ内です。
tmpフォルダがない場合は、新規に作成します。
テンプレートExcelファイル名は「template.xls」となります。

続いてオリジナルファイルの中身です。

<?php

ini_set('include_path', get_include_path() . PATH_SEPARATOR . VENDORS. "phpexcel" . DS . "Classes");

require_once 'Classes/PHPExcel.php';

require_once 'Classes/PHPExcel/IOFactory.php';

?>

ここで、Classes中のPHPExcel.phpと、PHPExcel内のIOFactory.phpを呼び出します。

最後にコントローラーの記述です。


<?php

//PHPExcleの読み込み
require_once '../vendors/phpexcel/phpexcel.php';


class TestsController extends AppController {

public $name = 'Tests';
public $uses = 'Tests';

function dailies_report_download(){

$this->autoRender = false; // Viewを使わない
Configure::write('debug', 0); // debugコードを出さない

//Templateを読み込んで、PHPExcelオブジェクトの生成
$reader = PHPExcel_IOFactory::createReader('Excel5');
$xl = $reader->load('tmp/template.xls');

//シートの設定
$xl->setActiveSheetIndex(0);
$sheet = $xl->getActiveSheet();

//セルの値を設定
$sheet->setCellValue('b3', 'b3のセルに値が入る');
$sheet->setCellValue('b4', 'b4のセルに値が入る');
$sheet->setCellValue('c8', 'c8のセルに値が入る');
$sheet->setCellValue('e8', 'e8のセルに値が入る');

//画像用のオプジェクト作成
$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing->setPath('../webroot/img/Tests/Test.png');///貼り付ける画像のパスを指定
$objDrawing->setHeight(210);////画像の高さを指定

///画像のプロパティを見たときに表示される情報を設定
$objDrawing->setName('Test');////ファイル名
$objDrawing->setDescription('Test画像');////画像の概要
$objDrawing->setCoordinates('B14');///位置
$objDrawing->setOffsetX(50);////横方向へ何ピクセルずらすかを指定
$objDrawing->getShadow()->setVisible(true);////ドロップシャドウをつけるかどうか。

///PHPExcelオブジェクトに張り込み
$objDrawing->setWorksheet($sheet);

//スタイルの設定(標準フォント、罫線、中央揃え)
$sheet->getDefaultStyle()->getFont()->setName('MS Pゴシック');
$sheet->getDefaultStyle()->getFont()->setSize(11);
$sheet->getStyle('b3')->getBorders()->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);

//Excel95形式で保存
$writer = PHPExcel_IOFactory::createWriter($xl, 'Excel5');
  //tmpフォルダ内にExcelファイルが保存される
$writer->save("tmp/output.xls");

/*
* 95-2003形式でダウンロード
*/
  //ダウンロードされるExcelファイルの名前を指定
header ("Content-disposition: attachment; filename=test.xls");
header ("Content-type: application/octet-stream; name=test.xls");

//tmpフォルダに保存されているExcelファイルをダウンロード
$out = file_get_contents("tmp/output.xls");
return($out);
}
}
?>

以上です。

2011年4月7日木曜日

【Joomla1.5系関連】サイト内検索の結果表示のフォームをカスタマイズするには

お疲れ様です。

タイトルの件で備忘録します。

以前紹介したスタンダードカテゴリレイアウトと同様なイメージでカスタマイズが可能です。

まずファイルの格納場所ですが。。。

ルートフォルダ/components/com_search/views/search/tmplの
default_form.phpです。

あとはじっくり眺めれば、大体わかります(笑)

以上

【Joomla1.5系関連】メニューアイテムのスタンダードカテゴリレイアウトをカスタマイズするには

お疲れ様です。

タイトルの件ですが、今回いじる必要があったので備忘録します。
まず、スタンダードカテゴリレイアウトを生成しているphpファイルの在り処は・・・

ルートフォルダ/components/com_content/views/category/teplの

default_items.phpです

結構長いソースですが、じっくり眺めればたいていわかります(笑)

以上

2011年4月6日水曜日

【PHPセキュリティ関連】ファイルアップロード攻撃について

お疲れ様です。

今回はセキュリティについて備忘録します。
PHPをコーティングしていくうえで、いろいろなセキュリティ対策を行なうかと
思いますが、今回はファイルアップロード攻撃についてです。

ファイルアップロード攻撃とは
「ファイルをサーバー上にアップロードした後、アップロードしたファイルにアクセスしてPHPコードやJavascriptを実行する」
攻撃です。


サーバー上で、任意のコードが実行出来てしまうので結構危険です。

対策としては

・ファイルをアップロードするフォルダを公開フォルダの外にする。
・アップされるファイル名をランダムにする
・転送スクリプトを書く

などがあるみたいです。

下記参考サイトに非常に分かりやすく記載があります。

参考サイト:http://d.hatena.ne.jp/owa-tayo/20100129/1264714595
owa-tayo初心技術者の玉手箱様 ありがとうございます。

以上

2011年4月5日火曜日

【PHP関連】mb_send_mail()関数の文字化けについて

お疲れ様です。
最近更新をサボっています・・・

いろいろと備忘録するネタはあるんですが
書くのを面倒くさがっています。
新年度になりましたので、気を引き締めていきたいと思います。

さて、件名の件で備忘録します。
非常に便利なメール送信関数のmb_send_mail()関数ですが
文字化けしましたので、その時の対処を備忘録します。

原因は
PHPのスクリプトを書いている文字コードと、そのPHPスクリプトを動作させるサーバーのデフォルトの文字コード設定の相違らしいです。

なので下記コードを追加すると解決しました。

カレントの言語を日本語に設定する
mb_language("ja");
内部文字エンコードを設定する
mb_internal_encoding("UTF-8");

この後にmb_send_mail()関数を実行します。

以上

2011年3月1日火曜日

【Joomla1.5系関連】パンくずモジュールのカスタマイズ方法

お疲れ様です。

今回は、久々にいじったCMSのJoomlaについての備忘録です。

しかしJoomlaといえば、
最近1.6系が正式にリリースされましたが、出たばかりのものは
大抵バグが潜んでいますので、1.5系がまだまだ活躍しそうだなと思います。

件名にもありますが、Joomlaには標準でパンくずを生成してくれる
モジュールが用意されています。
今回もそのモジュールを利用しようと思いましたが、
サイトトップが2つあるという変わったサイトとなっており
現在メニューをいろいろ駆使して(そこらへんは面倒なので省きます。。。)
トップが2つあるように見せかけています。

なので、パンくずモジュールを2つ利用する必要がありますが、基本的に
トップは1つという考えなので、2つモジュールを生成してもパンくずのHOMEを
クリックすると、一つのトップにしかリンクされません。

そこでもう一つのパンくずモジュールは、オリジナルで作成し(殆どコピーですが)
新たにインストールすることでパンくずを2つ使おうという考えに至りました。

オリジナル版ではHOMEのリンクを2つめのトップページ(みせかけの)にする必要が有るため
ファイルをカスタマイズします。方法は下記の通り

1.mod_breadcrumbs(パンくずモジュール)内のhelper.phpを開きます。

2.38行目あたりの$item->link = JURI::base();の部分を

$item->link = "(リンクしたいトップページアドレス)";

に変更します。

以上で完了です。

このJURI::base()がどうやら、トップページを引っ張っているようですね。

以上

2011年1月26日水曜日

【Office Access関連】Access2007にて「定義されているフィールドが多すぎます」と表示された場合

お疲れ様です。
ハマりそうだったので備忘録します。

Access2007にてテーブルを作成、または既フィールドの変更等を行なっている時
テーブルを保存する場合に
「定義されているフィールドが多すぎます」と表示され
うまくテーブルを保存することが出来ない現象が発生します。

考えられる原因として

1.定義可能なフィールド数255を超えている

があります。
ただし、「255もフィールドないぞ?!」という方もいらっしゃるかもしれません。
私もその一人でした。

その場合は次のAccessの仕様の可能性が高いです。

「Accessの内部でフィールド定義数のカウンター値が用意されており、フィールド定義時に加算されるが、フィールドの型などを変更した際にも加算され、フィールド削除時は減算されない仕様」

とのことです。つまり・・・

150のフィールドを定義した後、150フィールドの型を変更した場合は
150+150=300となり、255を超えているので定義されている~メッセージが表示されるということです。

解決方法は

「最適化」

これだけですみます。

意外に分からなかった方も多いのではないでしょうか。

以上です。

2011年1月6日木曜日

【VB関連】メッセージボックス内での改行方法

お疲れ様です。

新年明けましておめでとうございます。
今年もよろしくお願い致します。

新年初の投稿です。

何度も調べなおすので備忘録します。

メッセージボックス内で改行する場合は

例)Msgbox "abc" & vbCrLf & "123"

となります。

以上