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 #174513 is a reply to message #174505] Wed, 15 June 2011 12:01 Go to previous messageGo to previous message
Denis McMahon is currently offline  Denis McMahon
Messages: 634
Registered: September 2010
Karma:
Senior Member
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

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?

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.

Rgds

Denis McMahon
[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:31:17 GMT 2024

Total time taken to generate the page: 0.04271 seconds