阻止刷新后发送电子邮件,但在转到上一面时将其设置为自由

Ale*_*Cio 0 coldfusion session cgi

我尝试阻止网站在刷新网站后再次发送表单。问题是,当返回上一面进行更改并再次向电子邮件发送电子邮件时,应该是可能的。

当返回时,表单页面将不会再次加载,并且无法更改SESSION变量。但是用户仍然应该能够再次获得其旧数据,而不必再次键入任何内容。

在仅使用SESSION设置变量之后,我使用了CGI.HTTP_Referer来获取用户来自的网站。但是,在重新加载网站时,引荐来源网址不会更改。因此,没有办法以这种方式解决问题。

<cfif Right("#CGI.HTTP_REFERER#", 5) EQ "myForm">
    <cfset SESSION.send = true />
<cfelse>    
    <cfset SESSION.send = false />
</cfif>
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以使用javascript或其他任何方式执行Coldfusion代码


我尝试过的是:

<cfif isDefined("SESSION.actualSite") EQ "false" 
AND isDefined("SESSION.actualSite") EQ "false">

        <cfset SESSION.lastSite = ArrayNew(1) />
        <cfset SESSION.actualSite = ArrayNew(1) />
        <cftrace var="SESSION.lastSite" text="lastSite1" />
        <cftrace var="SESSION.acutalSite" text="acutalSite1" />
    </cfif>

    <cfif ArrayisEmpty(SESSION.actualSite) EQ "NO">
        <cfoutput>#ArrayLen(SESSION.actualSite)#</cfoutput>
        <cfset SESSION.lastSite[1] = SESSION.actualSite[1] />
        <cfset SESSION.lastSite[2] = SESSION.actualSite[2] />

        <cfdump var="#SESSION#" label="session scope from application.cfm" /><br />

        <cfif SESSION.actualSite[1] NEQ SESSION.lastSite[1] >           
            <cfoutput>INSIDE TRUE BLOCK</cfoutput>
            <cfset SESSION.send = true />
        <cfelse>        
            <cfoutput>INSIDE FALSE BLOCK</cfoutput>
            <cfset SESSION.send = false />
        </cfif>
    </cfif> 

    <cfset SESSION.actualSite[1] = Right("#CGI.CF_TEMPLATE_PATH#", 25) />
    <cfset SESSION.actualSite[2] = Left("#Right("#CGI.HTTP_REFERER#", 25)#", 17) />
Run Code Online (Sandbox Code Playgroud)

在我看来,就像重定位到空白页面的方法一样,在该页面中您仅显示一些输出文本是最简单,最好的方法。但是我正在寻找另一种方法来解决这个问题。在前面的代码中,我将CGI变量CF_TEMPLATE_PATH和HTTP_RERFERER保存在数组中。在下一次刷新时,或者当返回到表单并再次提交时,将重新设置数组,并且以前的站点信息(从上一页开始)将移至第二个数组。这必须在Application.cfm中执行。我还在SESSIOn范围内定义了数组...一切都必须很好,但是有些不起作用。也许有人可以帮我吗?

Sco*_*ben 5

这就是我处理过的某些网站上“重新加载重新发送电子邮件”情况的方式。

提交表单并发送电子邮件后,使用cflocation重定向到一个简单的html / cfm文件,感谢他们的输入。用户可以重新加载该页面,它只会重新显示“谢谢”消息。