Re: mysterious include problem
| From: | LinuxManMikeC | Date: | Mon, 07 Dec 2009 21:48:28 +0000 |
| Subject: | Re: mysterious include problem | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-300289@lists.php.net to get a copy of this message | ||
Instead of hard coding cases you can validate and constrain the input
with a regex. Much more flexible when adding content. I would also
add code to make sure the file exists, otherwise fall through to the
default.
On Mon, Dec 7, 2009 at 1:14 PM, Kim Madsen <php.net@emax.dk> wrote:
> Hi Allen
>
> Allen McCabe wrote on 2009-12-07 21:03:
>>
>> I have been using includes for my content for a while now with no
>> problems.
>> Suddenly it has stopped working, and it may or may not be from some
>> changes
>> I made in my code structure.
>>
>> I use default.php for most or all of my pages within a given directory,
>> changing the content via page numbers in the query string.
>>
>>
>> So on default.php, I have the following code:
>>
>>
>> <?php
>> if(isset($_GET['page']))
>> {
>> $thispage = $_GET['page'];
>> $content = 'content/'.$_GET['page'].'.inc';
>> }
>
>> else
>> {
>> $thispage = "default";
>> $content = 'content/default.inc';
>> }
>
> WOUW! this is a potential security issue!
>
> I can add _any_ parameter to page, incl. an external one, so skip this and
> use a switch instead
>
> switch($_GET['page']) {
> case "admin": $content = "content/admin.inc"; break;
> case "member": $content = "content/member.inc"; break;
> default: $content = "content/default.inc";
> }
>
> What use is $thispage by the way?
>
>> ?>
>> <html>, <body>, <div> etc.
>> <?php include($content); ?>
>>
>>
>> I have a content subdirectory where I store all the pages with files such
>> as
>> "default.inc, 101.inc, 102.inc, etc.
>>
>> As I said, this has been working fine up until now, if I use the url
>> "user/default.php" or just "user/" I get this error:
>>
>>
>> *Warning*: include(content/.inc)
>
> $_GET['page'] is not set, try and print it to the screen aswell...
>
>>
>> [function.include<http://lpacmarketing.hostzi.com/user/function.include>]:
>> failed to open stream: No such file or directory in *
>> /home/a9066165/public_html/user/default.php* on line *89*
>>
>> AND
>>
>> *Warning*: include()
>>
>> [function.include<http://lpacmarketing.hostzi.com/user/function.include>]:
>> Failed opening 'content/.inc' for inclusion
>> (include_path='.:/usr/lib/php:/usr/local/lib/php') in *
>> /home/a9066165/public_html/user/default.php* on line *89*
>>
>> But if I use "user/default.php?page=default" I get the correct content.
>>
>> It's acting as if page is set, but set to NULL, and then trying to find an
>> include at path "content/.inc" what's going on??
>>
>
>
> --
> Kind regards
> Kim Emax - masterminds.dk
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>