セッションや共用SSLの問題を考えずに、普通にリンクを貼るのであれば、Zencartのデフォルトで設定されているURL(http://domain_name.com/index.php?main_page=contact_us など)をそのままテンプレート内に張り付けることで動作しますが、この方法でリンクを貼るとクッキーの使えないブラウザで正常にセッションが動作しなくなります。Zencartのセッションについてはこちらの記事で触れています。

セッションを維持するリンクの貼り方は状況によっていくつか考えられるので、順に説明していきたいと思います。

1.Zencart(filenames.php)にもともと定義されているページへのリンクの貼り方

■形式 非SSLの場合 :
 
<a href="<?php echo zen_href_link(FILENAME_CONTACT_US, '', 'NONSSL'); ?>">お問い合わせ</a>
SSLの場合 :
<a href="<?php echo zen_href_link(FILENAME_LOGIN, '', 'SSL'); ?>">ログイン</a>
この場合は、「FILENAME~」となっている箇所を includes/filenames.php に定義されている名前と同じものを設定することになります。 SSLにするかどうかの設定は「SSL」または、「NONSSL」を記述します。

2.Zencart(filenames.php)にもともと定義されていないページへのリンクの貼り方

例えば、「http://domain_name.com/index.php?main_page=index&cPath=14」にリンクを張りたい場合などです。 ■形式
<a href="<?php echo zen_href_link("index&cPath=14", '', 'NONSSL'); ?>">ページ名</a>
この場合は、「index&cPath=14」となっている箇所を編集します。 URLで 「index.php?main_page=」 以降の箇所を赤字の箇所に指定することで動作します。 SSLにするかどうかの設定は「SSL」または、「NONSSL」を記述します。

3.オリジナルのphpプログラムの中で動かすような場合

例として、カテゴリIDを取得し、自動でカテゴリ名へリンクを設置するようなプログラムを作るとします。そのリンク箇所にセッションが正常に引き継げるように設定します。 ■形式
<a href="http://domain_name/index.php?main_page=index&cPath=<?php echo  $categories_id ; ?>&<?php echo zen_session_name(); ?>=<?php echo zen_session_id() ; ?>">リンク</a>
Zencart内で、zen_session_nameというのは「zenid」のことです。zen_session_idというのはzenidの値のことです。 このやり方については、クッキーの設定に関わらず、URL内のzenidにてセッションを引き継ぐ方法ですが、セキュリティ面を考慮すると、もう少しスマートなやり方があるかもしれません。

4.Zencartのサイト内に静的htmlのページがある場合

■形式 <a href=”http://domain_name/sitemap.html?<?php echo zen_session_name() . ‘=’ . zen_session_id() ?>”>サイトマップ</a> これについては、静的htmlを介して、セッションを引き継ぐために無理やり動作させているという感じです。 静的htmlからZencartページに戻った場合なども、セッションを引き継ぐ必要があるので、静的htmlページ内のリンクも全て記述を修正する必要が出てくると思います。 また、サーバ環境によっては、htmlファイルでphpを動作させるために「.htaccess」ファイルによる設定も必要になるかもしれません。

この投稿へのコメント

コメントを残す

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます。
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

CAPTCHA


ピックアップ記事

全試合を見る方法!2010 FIFA 南アフリカ ワールドカップ W杯 インターネット TV オンライン中継 ストリーミング放送

2010年06月18日 過去Blog
サッカーのワールドカップ(2010 FIFA 南アフリカ ワールドカップ)が開幕して一週間ほど経ちましたが、TV中継が無い試合が見たい!という方も多いのではないでしょうか。 残念ながら「ドイツ - オーストラリア」、「ブラジル - 北朝鮮」など日本のテレビでは中継されない試合は多いですよね。 私自身、見たい試合があるのに、日本では日本のテレビ局が放送しない試合は見る方法が無いので困っていました…
「全試合を見る方法!2010 FIFA 南アフリカ ワールドカップ W杯 インターネット TV オンライン中継 ストリーミング放送」をはてなブックマークに追加

firefox 一度ブラウザに保存されたパスワードの削除・変更

2010年06月16日 過去Blog
Firefoxのメニュー「ツール」-「オプション」-「セキュリティー」-「パスワード」から変更したいパスワードを選択し削除。 los angeles cosmetic dentist…
「firefox 一度ブラウザに保存されたパスワードの削除・変更」をはてなブックマークに追加

オーガナイザーからProvisioningする際にエラー

2010年12月23日 過去Blog
新しく購入したipadをオーガナイザーから、Provisioningしようとすると以下のようなエラーが出ました。 An unexpected error occurred. Please try again. If the problem persists, please contact Apple Developer Support. mac上のXCodeがiOS4.1のバージョンだったため、…
「オーガナイザーからProvisioningする際にエラー」をはてなブックマークに追加

[6]:SQLiteを使ってToDoリストアプリを作成(1)

2010年12月01日 過去Blog
このブログのチュートリアルを順に読み進めてくださった方なら、このチュートリアルがUITableVIewを優先的に取り組んできたことをご存知かと思います。 この理由としては、多くのアプリケーションが、このシンプルなコントロールを使って開発されているからです。 今回はUITableViewの最後のチュートリアルとして、今までのチュートリアルで学んできたことをすべて使い、SQLiteの技術を追加し、ToDoリストを作成していきます。 また、多くの機能を持ったテーブルセルを追加し、iPhoneが提供している他のコントロールについても学んでいきます。 過去の記事を既読の方を想定していますので、まだの方は、そちらの記事に先に目を通されることをおすすめします。 このチュートリアルは、いくつかのシリーズから成り立つので、過去の記事に比べ少し長くなります。この最初のチュートリアルで学ぶことは以下です。 今回学ぶこと: Navigation-Based Application の新規作成 データベースの作成 プロジェクトにデータベースの追加 SQLite3のフレームワークを追加 ToDoクラスのオブジェクトの作成 データベースの初期化 …
「[6]:SQLiteを使ってToDoリストアプリを作成(1)」をはてなブックマークに追加

preg_match

2010年03月24日 過去Blog
自分用メモ $html = ブログから抜き出したソース; preg_match("/抜き出すパターン/", $html); 最初は正規表現が間違っているのかと思い、いくつか正規表現のパターンを変えてテストしてみましたが、手ごたえなし(´;ω;`)ウッ… 正規表現以外の問題だと思い、さらに基本的なことを調べてみると・・・ 「検索対象の文字列が1行か、複数行か。」 ここが問題だったようです…
「preg_match」をはてなブックマークに追加
© graffiti on the web . All rights reserved. WordPress Theme by comfy