FUDforum
Fast Uncompromising Discussions. FUDforum will get your users talking.

Home » Imported messages » comp.lang.php » use GET in include
Show: Today's Messages :: Polls :: Message Navigator
Return to the default flat view Create a new topic Submit Reply
Re: use GET in include [message #174518 is a reply to message #174513] Wed, 15 June 2011 13:21 Go to previous messageGo to previous message
Erwin Moller is currently offline  Erwin Moller
Messages: 228
Registered: September 2010
Karma:
Senior Member
On 6/15/2011 2:01 PM, Denis McMahon wrote:
> On Wed, 15 Jun 2011 10:04:08 +0200, Erwin Moller wrote:
>
>> On 6/15/2011 6:09 AM, cerr wrote:
>>> Hi There, I would like to pass variables with GET to a file i include
>>> in my source file but it doesn't work, I get something like "Warning:
>>> include(./getfile.php?dir=headers11) [function.include]: failed to open
>>> stream: No such file or directory in /mnt/stor5-wc2-
>>> dfw1/479383/493261/www.quaaoutlodge.com/web/content/themes/Quaaout11-
>>> dev/photoshuffler.js.php on line 29"
>>> But when I remove the "?dir=" part from the url it works just fine.
>>> What would that be?
>>> Line 29 looks like:
>>> blablabla<?php include "./getfile.php?dir=".$_GET['dir'];?>
>>>
>>> Thank you for hints& suggestions!
>>>
>>> Ron
>>
>>
>> Hi Ron,
>>
>> You are confusing a http request with an include. They are different
>> beasts.
>> A http request look like:
>> http://www.example.com/yourphpfile.php and you can add info to an URL by
>> adding name/value pairs, like this:
>> http://www.example.com/yourphpfile.php?name=ron&favcol=blue
>>
>> In $_GET you will find 2 keys:
>> $_GET["name"] will contain ron
>> $_GET["favcol"] will contain blue
>>
>>
>> Now to the include:
>> If you include a file, you include a file. :-) No http or apache
>> involved. So no GET superglobal is set. (And that is the reason things
>> don't work as you expected.)
>>
>> Unless you use http-wrappers, like
>> include ("http://www.example.com/getfile.php?file=...");
>>
>> WARNING: the above is REALLY poor programming to get information into
>> your include file: you make a trip using the http-protocol/apache/new
>> PHP instance/etc to get the info into your included file).
>>
>> How to solve this?
>> Depending on your situation, in general: 1) Make the included file
>> contain a function or an class, and use that function or class from your
>> main file. Something like (for Object):
>> require_once ("class_myFileFetcher.php"); $myFileFetcher = new
>> FileFetcher();
>> $myFileFetcher->setFile(..);
>> $myFileFetcher->setHearder(..);
>> $myFileFetcher->stream(..);
>>
>> The above is just fantasycode of course.
>>
>> Or with a function:
>> require_once ("myfunctions/myFileFetcherFunction.php");
>> fetchFileAndStream("/some/path/some/file");
>>
>> option 2 (ugly in my opinion):
>> Simply set a variable, then the include. Let the code in the include use
>> that variable.
>> So:
>> $theUglyWayFileName = "/some/path/some/file"; require_once
>> ("myFileFetcher.php");
>> And let the code in myFileFetcher.php use the variable named:
>> $theUglyWayFileName.
>>
>> I advise you to both avoid http-wrappers and also to avoid option 2. Go
>> with a function or a class.
>
> Erwin
>

Hello Dennis,


> If his basic requirement is to make variables from including file
> available in included file, then surely any variable that's set in the
> including file before the include occurs will be available to the
> included code?

Absolutely. It can be done. Hence my option 2). ;-)

I think it is just ugly.
Ugly because the included file depends on variables outside itself.

Compared to using a function or class it is needlessly fragile.
(At least, I do not see any advantages doing it that way.)


>
> eg:
>
> includer.php:
> <?php
> // including file
> $value = "text";
> include "included.php";
> ?>
>
> included.php:
> <?php
> if (!isset($value)) $value="\$value was not set";
> echo $value . "\n";
> ?>
>
> and testing:
>
> $php includer.php
> text
> $
>
> although it would probably be a good idea to use:
>
> if (!isset($var)) $var=default_value;
>
> in included.php for every expected var.

Yes, I know the approach. Used it a few times myself in the past, but
nowadays I think it is very ugly. ;-)

Regards,
Erwin Moller

>
> Rgds
>
> Denis McMahon


--
"That which can be asserted without evidence, can be dismissed without
evidence."
-- Christopher Hitchens
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: An overloading question
Next Topic: ldap_modify
Goto Forum:
  

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ]

Current Time: Tue Nov 26 09:47:43 GMT 2024

Total time taken to generate the page: 0.04085 seconds