CGI-BBS > SO−HO > ショッピングバスケット > リンクさせて他のサーバーを使うとカゴに商品を選択できない。


カレッヂ
カレッヂ


質問者  投稿日 9/25(水) 12:41:26
当社が利用しているプロバイダはsendmailが使用できない為、商品選択画面をトップページ
からリンクさせて、他のプロバイダのサーバーを使おうと思っております。(そのアカウントは
表示させたくないので、フレーム処理)しかし、そうするとショッピングバッグの中に商品が入らなく
選択できなりました。他に出回っているレンタルのショッピングバッグシステムでは、そのようなことが
可能なようなので、どのようにHTMLを書き換えたらいいのか教えて頂けませんか?
よろしくお願いします。

プロバイダ参照:
サーバのOS:(未選択)
パソコンのOS:Win95系
エディタ:Notepad
FTPソフト:FFFTP
サーバ移転:していない
改造:している 改造前正常動作
CGI習熟度:firsttime

回答者 呑兵衛@大阪  [削除]  投稿日 9/25(水) 20:11:56
Aプロバイダーにある商品選択ページも全部Bプロバイダーに移しましょう。
Aプロバイダーには商品選択ページに移動するリンクだけ仕掛けておき、
あとはBプロバイダーにあるページで商品選択動作をさせるようにします。
ちなみに、sendmail が使えなくてもメール送信させる機能は他にもあります。 探してください。
質問者  [削除]  投稿日 9/26(木) 16:35:52
ご回答、ありがとうございます。
昨日、こちらに質問させて頂いた後、私なりに試行錯誤した結果、取り敢えず、
元のURLからリンクさせて、sendmailが使えるサーバーへとリンクして商品を
かごに入れることは出来ました。商品をカゴに入れるとアドレスバーに、Bのプロバイダの
アドレスが表示されてしまいました。(Bのプロバイダのアドレスは表示させたくないので、
フレーム処理をしているのですが・・・。)
http://www.taikudo.com/index_1.htm
上記から入って頂き、「アップ&アップ」をクリックして商品をカゴに入れて頂くと、
上記の意味をお分かりいただけると思います。ソースをご覧頂き、ご指導頂けると
嬉しいのですが・・・。
よろしくお願い致します。
なお、sendmailを使わなくてもNet::SMTPを使えばメール送信は可能らしいですが、
その方法は自信がなかったので、知人のsendmailが使えるサーバーを借用しようと
思った次第です。
回答者 呑兵衛@大阪  [削除]  投稿日 9/26(木) 20:54:40
商品が入らないという現象が再現できませんでした。
index_1.htm の <frameset cols="0%,100%" >
0% では左のページが出ません。cols="20%,*" のような書き方も出来ます。
up_up.htm の <form method=post action="cargo.cgi" target="_blank">
のaction値を http から始まる他のサーバーのcargo.cgiまでのURIにし、target属性を削除します。
送信後示されるページのtarget属性も注意してください。
質問者  [削除]  投稿日 9/27(金) 17:57:36
ご回答ありがとうございます。
私の説明が下手なせいか、誤解させてしまったようです。
昨日、私がお知らせしたURLですと、商品をかごに入れることは出来るのですが、
アドレスバーに他のプロバイダのアカウントが表示されてしまうのが問題だったのです。
そのことは別として、ご指導いただいたようにaction値を http から始まる他の
サーバーのcargo.cgiまでのURLにし、target属性を削除すると、当初質問したように
商品がカゴに入らなくなりました。下記より「アップアンドアップ」をクリックして、
商品をかごに入れて頂くと、現象が出ると思います。
http://www.taikudo.com/index_1.htm
なお、フレームの左側は敢えて0%にして表示させないようにしています。
(フレーム処理で、リンク先のプロバイダのアカウントがアドレスバーに出ないようにする為。
敢えて0%にしなくてもいいのですが、今はテスト段階なので・・・。)
度々、申し訳ありませんが、ご指導よろしくお願い致します。
回答者 呑兵衛@大阪  [削除]  投稿日 9/29(日) 23:43:25
Internet Explorer のセキュリティにかかる設定のようですね。
Netscape(4.7*, 6.*, 7.0) からは完全にアクセスができました。
Microsoft は以下のドキュメントを発行しています。
http://support.microsoft.com/default.aspx?scid=kb;ja;JP241754
http://support.microsoft.com/default.aspx?scid=kb;ja;JP167796

この方法でショッピングバスケットページを公開するのは無理がありそうですね。
回答者 呑兵衛@大阪  [削除]  投稿日 9/29(日) 23:50:29
そちらのサーバーにはデフォルトで libnet が仕込んであるそうで、
Net::SMTP が使えるようなので、この「技の裏」にリンクしていただいている
ちょっぴり解説 Rescue.cgi by 呑兵衛 の Perl Modules Install に挑戦 にある
SMTP スクリプト を参照してください。何かヒントがつかめるかもしれません。
ただ、ちょっぴり難しい、、かもです。
質問者  [削除]  投稿日 10/1(火) 17:58:40
色々と調べて頂きありがとうございました。IEのセキュリティにひっかかるとは・・・。
やはり、sendmailはあきらめるしかありませんね。NET::SMTPでメール送信できるように
頑張ってみます。
そこで、もう一度質問させてください。呑兵衛様がお調べ頂いたように、ウチのプロバイダは
libnetがデフォルトで使用できるようになっているのですが、この「デフォルトで」という
意味が私にはイマイチ理解できずにいます。
通常、libnetを適当なディレクトリにインストールした後、shellでログインしてアカウントと
パスワードを入力しなければならないですよね。しかし、ウチのプロバイダは、shellとtelnet
接続が利用できません。でもデフォルトで使用できるということは、適当なディレクトリにイン
ストールすれば、それだけでOKという意味なのでしょうか?
この質問をメールでプロバイダにもしたのですが、まだ返事が返ってこないものですから、
呑兵衛様にお尋ねする次第です。度々、申し訳ありませんが、よろしくご指導下さい。
回答者 呑兵衛@大阪  [削除]  投稿日 10/1(火) 21:37:28
ここで言うデフォルトとは、標準で、という意味です。経済用語では、破綻、を意味しますが。
つまり、サーバーに libnet モジュールがすでにインストールされていて perl に連動して
Net::SMTP Net::POP3 Net::NNTP Net::SNPP Net::PH Net::TIME Net::DAYTIME が全て使える状態にある、
ということです。
試しに、エラーの出ない CGIスクリプトに
#!/usr/local/bin/perl -c
としてそのあとに
use Net::SMTP; # NET ではない
use Net::POP3;
とやってみてください。
-c はエラーの検知に使います。これでエラーが出なければ、Net::SMTP を含む上の perl ライブラリー
が全て使え(ると思い)ます。あとは「ちょっぴり解説Rescue.cgi」をご参照ください。

これが難しければ、買物実績をファイルに記録する手もあります。
sendmail.txt と名前をつけた空のファイルを webform.cgi と同じディレクトリに FTP 666 しておいて
webform.cgi の
#■SENDMAILの設定
$sendmail = '/usr/lib/sendmail';
を
$sendmail = './sendmail.txt';
に
sub sendmail の
if (!open(OUT,"| $sendmail -t")) を
if (!open(OUT,">> $sendmail")) に
sub jis { $msg = $_[0]; &jcode'convert(*msg, 'jis'); } を
sub jis { $msg = $_[0]; &jcode'convert(*msg, 'sjis'); } に変更し、(説明が邪魔くさいので手抜き)
買物を実行してみてください。そのあと sendmail.txt を見れば買物の中身が見れます。
メールでは
Content-Type: text/plain\; charset=\"ISO-2022-JP\"
までがヘッダーです。
質問者  [削除]  投稿日 10/2(水) 17:57:56
色々とありがとうございました。
まだまだ前途多難ですが、頑張ってみます。
またお世話になることがあるかもしれませんが、その時はよろしくお願いします。
本当にありがとうございました。

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

Web裏技