Junitar Posted June 30, 2017 Share Posted June 30, 2017 (edited) Hello, I've a photo gallery on my site that loads its content based on URL parameter (which is basically the name of the folder the images are taken from). I would like to make a redirection to the main galleries page if the parameter does not exist, is empty or wrong. I'm using an if statement with the header function but can't manage to get it work. $galleryId is the id of the current gallery and $galleriesId is an array containing all the actual galleries id. Here is the code: $id = $_GET['id']; if (isset($id) || !empty($id)) { // Check if the current gallery id matches an actual gallery id if (!in_array($galleryId, $galleriesId)) { header("Location: ../galleries.php"); exit; } else { // ... } } else { header("Location: ../galleries.php"); exit; } The correct URL has the following format: mysite.local/galleries/gallery.php?id=gallery-id If I change the id value to, e.g. wrong-id, nothing happens. I just have the new URL mysite.local/galleries/gallery.php?id=wrong-id with every bit of HTML code before the exit function being executed. Not sure if that makes a difference but I work on a virtual local host. How can I do to redirect to the main galleries page when I have an invalid parameter? Thanks Edited June 30, 2017 by Junitar Link to comment Share on other sites More sharing options...
Gabrielphp Posted June 30, 2017 Share Posted June 30, 2017 It won't redirect you mainly because header cannot be used like that. Instead of using header just echo a javascript script: echo '<script>window.location.href="url";</script>'; Link to comment Share on other sites More sharing options...
dsonesuk Posted June 30, 2017 Share Posted June 30, 2017 This !in_array($galleryId, $galleriesId) does not makes sense? surly it should be !in_array($id, $galleriesId) and should this be if (isset($id) && !empty($id)) To check if set and NOT empty. NOTE: no html or spacing, line breaks of any kind should appear above this, for header to work. Link to comment Share on other sites More sharing options...
dsonesuk Posted June 30, 2017 Share Posted June 30, 2017 Simple example gallery.php in galleries folder <?php $galleriesId = []; $galleriesId[] = 1; $galleriesId[] = 2; $galleriesId[] = 3; $galleriesId[] = 4; $galleriesId[] = 6; $galleriesId[] = 'gallery-id'; $id = $_GET['id']; if (isset($id) && !empty($id)) { // Check if the current gallery id matches an actual gallery id if (!in_array($id, $galleriesId)) { header("Location: ../galleries.php?gallery=Gallery%20Does%20Not%20Exist"); exit; } else { header("Location: ../galleries.php?gallery=Gallery%20Exists"); exit; } } galleries.php outside galleries folder <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="viewport" id="viewport" content="target-densitydpi=high-dpi,initial-scale=1.0,user-scalable=no" /> <title>Document Title</title> </head> <body> <h1><?php echo $_GET['gallery']; ?></h1> <?php // put your code here ?> </body> </html> Link to comment Share on other sites More sharing options...
Junitar Posted June 30, 2017 Author Share Posted June 30, 2017 (edited) 1 hour ago, dsonesuk said: This !in_array($galleryId, $galleriesId) does not makes sense? surly it should be !in_array($id, $galleriesId) Oops, my bad… Messed up the variable name I wrote in the post with the real variable name I used in my code. It's of course !in_array($id, $galleriesId) Though, I did make a mistake with the || and &&, thanks for pointing it out! 1 hour ago, dsonesuk said: NOTE: no html or spacing, line breaks of any kind should appear above this, for header to work. Ok, that was it. I had HTML above the PHP code. I've just made the changes to my code, placing the PHP part containing the header() before the doctype tag and it's now working. Spent so much time trying to figure out what was wrong… wasn't even aware of that. Well thank you very much for the help dsonesuk. Thanks also Gabrielphp for your suggestion. Edited June 30, 2017 by Junitar Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now