私は、訪問者が複数のランディングページ(異なる言語)のいずれかに上陸すると、いくつかのプロモーションコードをフォームに入力する機会が与えられます。正しいコード(SQLテーブルに格納されているコード)のいずれかを入力すると、無料の製品を受け取るためのメール情報を与えることができるフォームの別のページに移動します。入力したコードが表にない場合、入力したコードが無効でブロックされているというメッセージが表示されます。トラフィックがランディングページを迂回するのを防ぐ
これはPHPで動作します。ランディングページフォームが入力されて送信されると、website:/formentry.php?promo=codeのようなURLが生成されます。ここで、 'code'はユーザーがフォームに入力したものと一致します。 「コード」がデータベーステーブルのコード列の文字列と一致すると、エントリフォームに送信されますが、そうでない場合はブロックされます。この時点ですべてがうまく動作し、数か月間スムーズに実行されています。
最近問題が発見されました:ウェブサイトに/formentry.php?code=codeを直接ブラウザのURLフィールドに入力することで、リンク先ページを回避することができます。これはいくつかの理由で問題であり、防止する必要があります。可能であることから
誰もが解決のための任意のアイデアを持っています。おそらく、ランディングページに戻って、これらのURLリクエストを送信するために.htaccessファイルを使用して
詳細なご協力ありがとうございます。しかし、私はあなたの指示に従って自分の能力を最大限引き出し、何かが動かない。私は追加しました $ _SESSION [valid_user] = true; とランディングページ if(!$ _ SESSION [valid_user]){echo "このページを表示する権限がありません"; } を入力フォームページに追加すると、リンク先ページを正しく通過してエントリページに移動してもエコーメッセージが表示されます。コード内に$ _SESSIONの真の値を無効にする何かがありますか? –
私が正しく理解していれば、ランディングページの現在のプログラムが、コードが有効かどうかを確認します。同じコードを使用してセッションを設定します。あなたのランディングページコードが現在何をしているのか分かりませんが、「コードが有効であれば、正しいページに移動してください」といったようなものかもしれません。あなたのコードを少し変更してください。「コードが有効な場合は、SESSION変数を設定してから、正しいページに移動してください。コードが有効でない場合は、セッション変数を設定しないでください。 – Jacey
こんにちはJacey、私はsession_start()を含まなかったので、動作していないようです。セッションを宣言する前に。両方のページの一番上にそのコード行を追加すると、あなたのソリューションは機能します!ご協力いただきありがとうございます。 –