Since PHP and session storage are server side and IE is obviously a client, the problem is not related to your session code.
Sessions are usually tracked by a cookie (session cookie) or the POST / GET variable. By default in PHP, this value is called PHPSESSID.
Probably in your case, the session cookie variable or POST / GET associated with the server side session does not pass in IE. In the case of cookies, this may be related to cookie settings and cookies are generally allowed. In the case of POST / GET, it may happen that your HTML is incorrect so that IE does not like it, but the other browser really understands.
Now that this value is lost in IE, PHP assigns a new session to this browser for each request, and the session token is regenerated for each request. But your hidden field also remembers the old token ...
If you show us more code (you can edit your question), I can edit my answer to give you more details.
edit You can start by displaying the appropriate php.ini settings strings that relate to sessions and session cookies. And double check your IE cookie settings. In particular, I would like to know if you set cookie_path, which makes cookies only available in the same directory.
You might even have an IE security setting or an add-on that prohibits the use of cookies. So try checking your IE settings and disabling all add-ons and testing it again.
Also check that the first page (which establishes the session) and the second page (which reads the session) have EXACTLY the same domain name.
So, for example, www.yourdomain.com on the first page should not have yourdomain.com on the second page (without www) or www.yourdomain.com. (with an extra dot at the end).
source share