1

ユーザーがフォームを送信すると、comformation.html に続く form.html というフォームがあります。

ただし、ユーザーがcomfirmation.htmlページのURLを取得して共有できるようにしたくありません(たとえば、ツイートします)

これは、form.html でセッションを設定してから、comfirmation.html ページで何らかのチェックを行って、そこにあるかどうかを確認することで実現できますか?

そのため、誰かが comfirmation.html へのリンクを直接クリックすると、フォームにリダイレクトされます。

グーグルで例を見たので、これは可能だと思います。しかし、セッション チェックが別のページにリダイレクトされる (またはセッションが一致した場合は何もしない) 例は見たことがありません。

ありがとう、

ローレンス

4

2 に答える 2

1

そのようなコードをconfirmation.htmlに追加するとどうなりますか?

var prevStage = "http://mysite.com/form.html";
if(prevStage != document.referrer) {
    window.location.href = prevStage;
}
于 2012-11-19T00:51:09.877 に答える
0

私はあなたがこれを行うことができると思います...

<html>
<head>
<script>


/* getUrlVars function from http://papermashup.com/read-url-get-variables-withjavascript/
*/
function getUrlVars() 
{
    var vars = {};
    var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
        vars[key] = value;
    });
    return vars;
}


/*
* getCookie and checkCookie function 
* credit http://www.w3schools.com/js/js_cookies.asp
*/

function getCookie(c_name)
{
    var i,x,y,ARRcookies=document.cookie.split(";");
    for (i=0;i<ARRcookies.length;i++)
    {
        x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
        y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
        x=x.replace(/^\s+|\s+$/g,"");
        if (x==c_name)
            {
                return unescape(y);
            }
    }
}


function checkCookie()
{
    var getConfirmationID = getUrlVars('confirmationid'); 
    var confirmation =getCookie(getConfirmationID);
    if (confirmation!=null && confirmation!="")
    {
        alert("Page expired, redirecting....");
        window.location = "/originalForm.html";

    }
    else
    {
        /*
        * show the confirmation
        */
        document.getElementById('confirmationdata').innerHTML = '<p>'+confirmation+'</p>';

    }

  }
}
</script>
</head>
<body onload="checkCookie()">
    <div id='confirmationdata'></div>
</body>
</html>
于 2012-11-19T01:04:43.073 に答える