Hi there!

I'm using PHP together with jQuery/AJAX to submit a login form without reloading the page. Basically the code works like this:

Login.php (The actual form) -> process-login-admin.php (server-side validation and authentication) -> Echo error message
The error messages is displayed in a hidden div (#feedback) on "Login.php" that i set to visible once "login-process.php" echos something.

This is how i do it:

$.post('process-login-admin.php', $("#loginprocess").serialize(), function(data) {
                                                     $("#feedback").html(data).show("slow");
                                                     });
                                              }

Everything works just fine except one thing. When a user successfully logs in i would like to do a simple header location to the users dashboard/profile page. However the dashboard loads inside the message div i created instead of changing url.

Anyone that could give me a few pointers on how to solve this?

Recommended Answers

All 4 Replies

Because you are using AJAX, you will have to handle the redirect in Javascript, not PHP. So instead of doing the header in PHP, notify Javascript with a particular string (or JSON), to do the redirect for you.

Thank you pritaeas!
I seem to have solved it by doing this once the user is logged in:

echo '<script>location.href="index.php";</script>' ;

Is there any downside to this approach? Will this work in all browsers?

echo '<script>location.href="index.php";</script>' ;

why not just do header('Location: index.php"); if you are echoing it out?

There should be a point in your js where the login succeeds and redirect then:

messageDiv.innerHTML = req.responseText;
if(req.responseText == 'Success'){window.location = 'index.php';}

i always thought it was window.location, since your login is javascript the redirect should 100% work window.location is a very wide standard

or you could just fill in the div contents with the contents of the dashboard if you have that available in ajax

if(req.responseText == 'Success'){
contentDiv.innerHTML = getMyDashboard();
}

Thanks Biiim!

Your answer got me in the right direction. I have solved this by implementing your "responsText" method.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.