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
Switch to threaded view of this topic Create a new topic Submit Reply
use GET in include [message #174502] Wed, 15 June 2011 04:09 Go to next message
cerr is currently offline  cerr
Messages: 33
Registered: September 2010
Karma: 0
Member
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
Re: use GET in include [message #174505 is a reply to message #174502] Wed, 15 June 2011 08:04 Go to previous messageGo to next message
Erwin Moller is currently offline  Erwin Moller
Messages: 228
Registered: September 2010
Karma: 0
Senior Member
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.


Good luck.

Regards,
Erwin Moller

--
"That which can be asserted without evidence, can be dismissed without
evidence."
-- Christopher Hitchens
Re: use GET in include [message #174513 is a reply to message #174505] Wed, 15 June 2011 12:01 Go to previous messageGo to next message
Denis McMahon is currently offline  Denis McMahon
Messages: 634
Registered: September 2010
Karma: 0
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
Re: use GET in include [message #174518 is a reply to message #174513] Wed, 15 June 2011 13:21 Go to previous messageGo to next message
Erwin Moller is currently offline  Erwin Moller
Messages: 228
Registered: September 2010
Karma: 0
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
Re: use GET in include [message #174524 is a reply to message #174518] Wed, 15 June 2011 16:02 Go to previous messageGo to next message
Jerry Stuckle is currently offline  Jerry Stuckle
Messages: 2598
Registered: September 2010
Karma: 0
Senior Member
On 6/15/2011 9:21 AM, Erwin Moller wrote:
> On 6/15/2011 2:01 PM, Denis McMahon wrote:
>
> 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.)
>
>

You are correct, Erwin. Making the code in the included file a function
or a class decouples it from the rest of the logic. This makes the code
more robust, easier to maintain and, if coded correctly, reusable.

Definitely an advantage over just including a file which then depends on
other variables outside of itself.

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex(at)attglobal(dot)net
==================
Re: use GET in include [message #174530 is a reply to message #174505] Thu, 16 June 2011 04:58 Go to previous messageGo to next message
cerr is currently offline  cerr
Messages: 33
Registered: September 2010
Karma: 0
Member
On Jun 15, 1:04 am, Erwin Moller
<Since_humans_read_this_I_am_spammed_too_m...@spamyourself.com> 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 implemented option 2 so far and it works well - why would thast be
bad anyways?
Thanks! :)

Ron
Re: use GET in include [message #174532 is a reply to message #174530] Thu, 16 June 2011 11:14 Go to previous message
Jerry Stuckle is currently offline  Jerry Stuckle
Messages: 2598
Registered: September 2010
Karma: 0
Senior Member
On 6/16/2011 12:58 AM, cerr wrote:
> On Jun 15, 1:04 am, Erwin Moller
> <Since_humans_read_this_I_am_spammed_too_m...@spamyourself.com> 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 implemented option 2 so far and it works well - why would thast be
> bad anyways?
> Thanks! :)
>
> Ron

The code now depends on variables set in other files, making it harder
to maintain and less reusable.

Functions are much better and cleaner.

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex(at)attglobal(dot)net
==================
  Switch to threaded view of this topic Create a new topic Submit Reply
Previous Topic: An overloading question
Next Topic: ldap_modify
Goto Forum:
  

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

Current Time: Sun Nov 24 15:29:48 GMT 2024

Total time taken to generate the page: 0.02064 seconds