Jump to content

Archived

This topic is now archived and is closed to further replies.

MetalHawk

Switch case problem

Recommended Posts

Hello!

I have a question related to switch case/include function in php.
<?php
switch($_GET['p'])
{
case "1": default: break;
case "2": die(include "concerts.php"); break;
case "3": die(include "reviews.php"); break;
default:
break;
}
; ?>
I have no trouble if I form a switch case & include with files that have extensions at the end, but I have a problem (include not working) if I try to include a page which doesn't have an extension (cms generated page).
I want to know is it possible, & if it, what should I change i next code, to include files like these?

Here is the example of the non-working code. I tried with / & without on the begining, same result.

<?php
switch($_GET['p'])
{
case "1": default: break;
case "2": die(include "/?cat=123"); break;
case "3": die(include "/?cat=124"); break;
default:
break;
}
; ?>


Thanks for help.

Share this post


Link to post
Share on other sites
For starters. Dont put your default action as the first case in a switch, the others will never work.

2nd. You cannot call an include as an argument to die().

3rd. You cannot include() using variables passed through the url.

You might try...
[code]
<?php

if (isset($_GET['p'])) {
  switch($_GET['p']) {
    case 3: header("Location : {$_SERVER['PHP_SELF']}?cat=124"); break;
    case 2: header("Location : {$_SERVER['PHP_SELF']}?cat=123"); break;
    default: break;
  }
}
?>
[/code]

Share this post


Link to post
Share on other sites
I used a slight variation of your code above, which works as I wanted it to.

[code]<?php
switch($_GET['p'])
{
case "1": header("location:http://www.domain.com/?cat=123"); exit; break;
default: break;
}
; ?>[/code]


thanks for help!

Share this post


Link to post
Share on other sites

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.