tnw
tnw

Reputation: 13887

Storing redirect URL for later use

I'm trying to store the redirect URL for use a few pages later but I'm having trouble figuring out how to get it from one place to another.

Usually I'd just pass a variable thru the URL, but since my redirect URL contains URL variables itself, this doesn't exactly work.

To give you a better idea of what I'm trying to do, here's the structure.

PAGE 1: User can click a link to add content on PAGE 2

PAGE 2: User enters text. Submitting the form on this page calls "formsubmit.php" where the MySQL data entries are handled. At the end of this I need to redirect the user to PAGE 1 again. The redirect URL needs to exactly match what was originally on PAGE 1

Does anyone have any suggestions on how to go about this?

Upvotes: 5

Views: 3031

Answers (5)

eykanal
eykanal

Reputation: 27047

I would recommend either using session variables, or storing the redirect url in a hidden form parameter. Session variables are pretty simple; just initialize the session (once, at the top of each page), and then assign variables to the $_SESSION global var:

<?php

session_start();
...
$_SESSION['redirect_url'] = whatever.com;
...

Hidden form parameters work by sending the data from page to page as form data. On the backend, you would add code that would put the URL to be stored in a form variable:

<input type='hidden' name='redirect_url' value='<?php echo $redirect_url; ?>';

On each page, you can take the URL out of the $_POST or $_GET variable (whichever is appropriate) and insert it into a hidden form in the next page.

Upvotes: 2

Karolis
Karolis

Reputation: 9572

You can add this hidden field in to your form:

<input type="hidden" name="referer" value="<?php echo $_SERVER['HTTP_REFERER']; ?>">

Then use header() to redirect to this page:

header('Location: '. $_POST['referer']);

Upvotes: 1

JMax
JMax

Reputation: 26601

I can see two possible solutions :

Regards,

Max

Upvotes: 1

tjm
tjm

Reputation: 7550

You can use urlencode and urldecode to pass a string that contains elements that would otherwise break a url in a url query.

Upvotes: 1

MoarCodePlz
MoarCodePlz

Reputation: 5176

You should use $_SESSION to store the variable in session memory. As far as specifics go with how to handle this in particular, you should be able to figure it out (store the variable, check if it exists later, if so redirect etc etc) but $_SESSION is going to be much more efficient / less messy than trying to pass things back and forth in query strings.

To declare a session variable you would do something like this:

$_SESSION['redirUrl'] = "http://www.lolthisisaurl.com/lolagain";

And then to reference it you just do

$theUrl = $_SESSION['redirUrl'];

Here is some material to get you started: http://php.net/manual/en/reserved.variables.session.php

Upvotes: 6

Related Questions