CGI-BBS > JAVA/JavaScript > JavaScript > Javaで取得したCookieを、SSIのCGIの引数に、渡したい。


カレッヂ
カレッヂ


質問者 内田  投稿日 2003/12/12(金) 10:50:11
SSIのCGIでcookie情報を読み込み、
ID情報に従って、サーバーのデータベースに問い合わせて
対応する名前で、「いらっしゃいませ○○さん」と出したいと思っています。

単体では上記を実現できるCGIを作ったので
<!--#include virtual="../cgi/login.cgi"-->
という形で、shtmlに組み込んだのですが

SSIではcookieを読めないと聞いたので
shtml側で、Javascriptを使って、cookieを取得して、
<!--#include virtual="../cgi/login.cgi?id=cookie1:pw=cookie2"-->
のような形で渡せないかと模索しています。

そこで、以下のようなJavaScript関数を見つけたのですが
値の渡し方がわからないので、質問させていただきたいと思います。
よろしくお願いします。

<SCRIPT LANGUAGE="JavaScript">
<!--
function GetCookie( strName ) {

	strCookie = document.cookie ;
	iStartIndex = strCookie.indexOf( strName + '=' ) ;
	if ( iStartIndex != -1 ){

		strElement = strCookie.substr( iStartIndex ) ;
		iEndIndex = strElement.indexOf( ';' ) ;
		if ( iEndIndex != -1 ){

			strElement = strElement.substr( 0, iEndIndex ) ;

		}
		iEqIndex = strElement.indexOf( '=' ) ;
		strCookie = unescape( strElement.substr( iEqIndex + 1 ) ) ;

	}else{
		strCookie = '' ;
	}

	return strCookie ;
}
//-->
</SCRIPT>


プロバイダ参照:レンタルオフィスのサーバーを使っています
サーバのOS:UNIXサーバ
パソコンのOS:WinNT系
エディタ:秀丸
FTPソフト:FFFTP
サーバ移転:していない
改造:していない
CGI習熟度:expert

回答者 アルル  [削除]  投稿日 2003/12/12(金) 23:54:48
SSI の性質を考えた場合こういうことはできないと思います。
SSI はサーバ内部で実行されその結果、
<!--#include -->の部分を置き換えたものをブラウザに出力するので、
その時点で <!--# -->という文字列は無くなっているので、Javascriptの入り込む余地はない
はずです。

はずしているかも知れませんが。。。




質問者 内田  [削除]  投稿日 2003/12/13(土) 00:07:57
なるほど!まったくですね。
何か別の方法を考えて見ます。

例では、「ようこそ○○さん」
と表示させたい、としていますが
本当にさせたいのは、

ある商品の紹介ページを、
shtmlでちゃっちゃとデザインして作って
商品価格表示だけSSI/CGIで作って、
会員かどうかと商品情報をサーバーデータベースに問い合わせて
変更する、ということをやりたかったのです。

できると便利な気がするんですが、難しそうですね。
現状では
・商品紹介ページ丸ごとCGIで作るか
・価格表示は別ページでCGIで作るか
しか思いつきそうにありません。

何かよいお知恵をお持ちの方、ご意見お願いいたします。
回答者 アルル  [削除]  投稿日 2003/12/13(土) 00:21:49
SSI のようなものを使用したいのなら
PHPが向いています。

<html>
<body>

<?php
色んな処理やHTMLの出力
?>

</html>

のようにHTMLの中に処理を埋め込むことができます。
参考までに。
回答者 アルル  [削除]  投稿日 2003/12/13(土) 00:55:45
もう少し詳しくいうと
クッキーの取得も

<?php echo("<a href="../cgi/login.php?id=_SERVER["HTTP_COOKIE"]>リンク</a>") ?>

のように簡単にできますし
ページ内部でのDBアクセスも得意とするところです。

質問者 内田  [削除]  投稿日 2003/12/13(土) 01:09:25
なるほどー。
大変参考になりました。
phpについて勉強いたします。

明らかにスレ違いかと思いますが
オススメのphp開発環境などありましたら
お教え頂ければありがたいです。
質問者 内田  [削除]  投稿日 2003/12/13(土) 21:03:53
動きました!しかもshtmlのままで動きました。
ファイルの場所が悪かったみたいです。

phpでやってみて
<? print($_COOKIE["sample"]); ?>
とやったんですが、やっぱりだめだったので
試しにphpのファイルをcookieを発行したcgiファイルと
同じフォルダにphpファイルをおいたら動きました。

さらに、shtmlの方も、cookieを発行したcgiと同じフォルダに
おいたら動いたのです。

でも、phpもデータベースとか画像処理とかプリンタ操作
までできて面白そうですね。
phpも勉強していきたいと思います。
質問者 内田  [削除]  投稿日 2003/12/13(土) 21:12:21
ごめんなさい。
補足していうと
「Javascriptからssiへデータを渡す」
のは、やっぱりできなくて

http://homepage1.nifty.com/yito/namazu/gbook/20000923.1339.html

に書いてあった
「ssiではcookieを処理できない」
という前提知識が間違っていて

「ssiでも、ディレクトリを注意すればcookieは使える」

というのが正しかったようです。
アルルさんありがとうございました。






このページは終了したので返信(回答)は書きこめません
 


Web裏技