はい、わかりました。別の HTTP_REFERER の取り組みです。私はそれを見るとうんざりします。しかし、それは「戻る」問題の解決策として私に渡され、実際に機能するので...
...問題は、ライブで快適に展開できるほど十分に理解していないことです。
ここで HTTP_REFERER の危険性について多くのメッセージを確認しましたが、このコードはこの特定のタスクに対処していると言われています... しかし、私は確信が持てません。
だから、私の質問は以下のコードの一番下にあります - しかし、最初に、これがその背後にある基礎です:
このコードはショッピング カートに入ります。ユーザーが「カートを見る」をクリックした後、「買い物を続ける」ボタンのアクションを提供します。その目標は、ユーザーの元の場所に戻る最も適切な (または期待される) リダイレクトを提供することです。
デフォルトでは、このコードが追加されていない場合、この特定の「カートを見る」ページの「ショッピングを続ける」ボタンは、ユーザーをカートのホームページに移動させるだけです。製品のセットまたは特定のカテゴリ、または製品を見ていました。したがって、それを改善したいと考えています。また、カートで購入を完了するには JavaScript が必要であり、ユーザーが JS をオフにしてアクセスすると警告が表示されるため、この操作中はユーザーが JS をオンにする必要があります。最後に、ソリューションを 1 つのコード ブロックにまとめて、簡単に適用し、ほとんど問題なくカートの更新バージョンに移行できるようにしたいと考えました。
私に説明された方法論:
リファラーが設定されていて、空でなく、はい、このカートのドメインが含まれている場合
1a. リファラーがカート ページ自体である場合は、javascript (-1) 効果を適用します。
1b. ELSE 先に進み、Referer を適用します - 完了。
ELSE 参照が設定されていて空ではないが、このカートのドメインが含まれていない場合
2a. 何かがおかしいので、ホームページに送信してください。(?? どうして ??)
2b. ELSE javascript (-1) 効果を適用しましょう。- 終わり。
コード:
if ((isset($_SERVER['HTTP_REFERER']) && !empty($_SERVER['HTTP_REFERER']) && (strpos($_SERVER['HTTP_REFERER'], HTTP_SERVER) === 0))) {
if ($_SERVER['HTTP_REFERER'] == HTTP_SERVER . 'index.php?r=cart') {
$this->data['continue'] = 'javascript:history.go(-1)';
}
else {
$this->data['continue'] = html_entity_decode($_SERVER['HTTP_REFERER']);
}
}
else {
if ((isset($_SERVER['HTTP_REFERER']) && !empty($_SERVER['HTTP_REFERER']) && (strpos($_SERVER['HTTP_REFERER'], HTTP_SERVER) !== 0))) {
$this->data['continue'] = 'index.php?r=home';
}
else {
$this->data['continue'] = 'javascript:history.go(-1)';
}
}
私の質問:
わかりましたので、疑わしい 2 つの方法を組み合わせました。全体としては機能しているようです。しかし、これ (セキュリティ / 機能) で何が問題になる可能性がありますか? 私が行方不明になっているショーストッパーはここにありますか?
2 番目の部分 (2. と 2a.) は何を達成する予定ですか? 誰かが故意に偽のリファラーにフィードしようとしているかどうかを判断するための努力であると説明されていますが、私には意味がありません.javascriptを使用するのではなく、なぜその人をホームページにルーティングする必要があるのですか? -1) 方法?
改善について何か考えはありますか?それらは常に便利です;-)
このたびはご協力いただきありがとうございました...