Disable browser back button

zhaozj2021-02-11  201

Disable browser back button

The back button of the browser allows us to easily return the previously visited page, which is undoubtedly useful. But sometimes we have to close this feature to prevent users from chaos a predetermined page access order. This article describes the various browser-free button schemes available on the network to analyze their respective advantages and disadvantages and applications.

First, the overview has asked many people, "How can I disable the 'browser's back button?", Or "How to prevent the user from clicking the back button to return to the previously viewed page?" In the ASP Forum, this question is also asked One of the most problems. Unfortunately, the answer is very simple: we can't disable the back button of the browser.

At first I feel unbelievable for someone who wants to disable the browser. Later, I saw that there were so many people who would like to disable this back button, I also relieved (only the back button if I want to disable, do not include the browser's forward button). Because the user submits the form by default, you can return to the form page by the back button (instead of using the Edit button!), Then edit again and submit the table One-way database into new records. This is what we don't want to see.

So I decided to figure out how to avoid this. I have visited many websites, referring to various implementation methods described by these websites. If you regularly access the ASP programming website, some of this article you may have already seen. The task of this article is to introduce all possible methods to everyone, then find the best way!

Second, prohibiting caching

In many scenarios I found, there is a suggestion to prohibit page caches. Specifically, the server-side script is used as shown below:

<%

Response.buffer = TRUE

Response.expiresabsolute = now () - 1

Response.expires = 0

Response.cachecontrol = "no-cache"

%>

This method is very effective! It forces the browser to re-access the server download page instead of reading the page from the cache. When using this method, the programmer's main task is to create a session-level variable, determine if the user still views the page that is not suitable for passing the back button. Since the browser no longer caches this page, the browser will re-download the page when the user clicks the back button. At this time, the program can check the session variable to see if the user should be allowed to open this page.

For example, suppose we have the following form:

<%

Response.buffer = TRUE

Response.expiresabsolute = now () - 1

Response.expires = 0

Response.cachecontrol = "no-cache"

IF LEN ("FirstTIMETOPAGE")> 0 THEN

& Single; Users have accessed the current page and now returns to access again.

& Single; Clear the session variable to redirect the user to the login page.

Session ("firsttimetopage" = ""

Response.Redirect "/ bar.asp"

Response.end

END IF

& Single; If the program is run here, the user can view the current page

& Single; You start to create a form

%>

We use the session variable firstttimetopage to check if the user is the first time to access the current page. If it is not the first time (ie, "" "") contains a value), then we clear the value of the session variable and then reallite the user to a start page. In this way, when the form is submitted (at this time, we must give the firstTIMETOPAGE a value. That is, we need to add the following code in SomePage.asp:

Session ("FirstTimetopage" = "no"

In this way, users who have already opened somepage.asp If the browser will re-request the server download page, the server checks the session ("FirstTIMETOPAGE") contains a value, then clear the session ("FirstTimetopage) and put the user Redirect to other pages. Of course, all this requires a user to enable cookies, otherwise the conversation variable will be invalid. (For more explanations for this issue, see For Session Variables To Work, Must The Web Visitor Have Cookies Enabled?)

In addition, we can also use the client code to make your browser no longer cache the web page:

If you use the above method to force your browser to no longer caching the web page, you must pay attention to the following points:

The browser cache page is only prevented when "Pragma: No-Cache" is used when using a secure connection. For pages that are not secure protected, "Pragma: No-Cache" is considered to be the same as "Expires: -1". At this point, the browser is still cached, but marks the page as an immediate expiration. In IE 4 or 5, the "Cache-Control" Meta Http-Equiv flag will be ignored and does not work. In practical applications, we can add all of these code. However, since this method cannot be applied to all browsers, it is not recommended. But if you are in an intraNET environment, the administrator can control which browser used, I think someone will use this method.

Third, other methods

Next, the method we have to discuss will be refund the button itself in the back button, not the browser cache. There is an article that ReWiring The Back Button is worth reference. But I noticed that if you use this method, although the user caught the back button when you click on the button, he will not see the page previously entering the data, but you can click twice, this is not the effect of our hope, because many times, stubborn Users can always find ways to bypass preventive measures.

Another way to disable the back button is to open a window without the toolbar with the client JavaScript, which makes it difficult for users to return the previous page, but not impossible. A more secure but quite annoying method is to open a new window when the form is submitted, and at the same time close the window where the form is located. But I think this approach is not worth careful, because we can't open a new window every time you submit a form. So, can we join the JavaScript code in that we don't want users to return? The JavaScript code added in this page can be used to create the effect of clicking the forward button, which offsets the action generated by the user clicking the back button. JavaScript code for implementing this function is shown below: