Re: Re: [PHP] Re: How to take output from an include, and embed it into a variable?
Can't you just use the eval http://nl2.php.net/eval function, and parse the code from the include file in it? .. or is there something I'm missing here? 2009/9/25 Carl Furst cfu...@intracommunities.org Jim Lucas wrote: Ashley Sheridan wrote: On Wed, 2009-09-23 at 07:36 -0700, Jim Lucas wrote: Mert Oztekin wrote: Output buffering will do it. Also I am not sure but did you try retrieving content with fopen() ? Something like $file = 'invoicetable_bottom.php'; fopen(http://yoursite.com/folder/$file,r;); http://tr.php.net/function.fopen worth trying. Easier than output buffering This would not work. fopen would open the file for read. What you would be reading is the actual source of the document. Not the data the script would output when ran. The ob_* functions are the only way that I know of to do what you are asking -Original Message- From: Puiu Hrenciuc [mailto:hp...@xentra.ro] Sent: Wednesday, September 23, 2009 1:36 PM To: php-general@lists.php.net Subject: [PHP] Re: How to take output from an include, and embed it into a variable? Hi, The simplest way (actually the single way I know :) ) would be to capture the output using output buffering functions, something like this: // start output buffering ob_start(); // include the file that generates the HTML (or whatever content) include ; // get output buffer content $output=ob_get_contents(); // clean output buffer and stop buffering ob_end_clean(); // the content generated in the included file is now in $output variable // use it as you consider fit . Regards, Puiu Rob Gould wrote: I have an invoice table that is drawn on a number of pages, so I have all the logic in an include-file like this: include invoicetable_bottom.php; However, now I'm needing to take the output from that include file and pass it as an email. To do that, I need to somehow take the output from this include file and get it into a variable somehow. Is there a simple way to do this? Something like: $emailtcontent = include invoicetable_bottom.php? -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php That's just crazy talk. If you use fopen on a web URL, then it will always return the output the script generates. That's how http works! Sorry, my bad. Ash is correct, the method that is suggested will work. But you will need to enable options in your php.ini that are not on by default for security reasons, plus as Ben points out, you will need to filter out the scruff that is generated to capture just the data output from your include. Mind you that all of this also requires that the file that you are including is accessible via the web. It could be in a folder that is not web accessible. Sorry for the initial confusion! Thanks, Ash http://www.ashleysheridan.co.uk Do you have php configured to compile files? Why not just backtick the php -f command?? ? $cmd = *escapeshellcmd*(/full/path/to/php -f $file); $email_output = `$cmd`; # do something with $email_output ? Seems easier than a whole http call.. can be risky if the $file variable can be set by user input (big no no), but other than that.. seeems the simplest. -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Re: How to take output from an include, and embed it into a variable?
On Sep 25, 2009, at 3:12 PM, Geert Tapperwijn g.tapperw...@gmail.com wrote: Can't you just use the eval http://nl2.php.net/eval function, and parse the code from the include file in it? .. or is there something I'm missing her Because eval has risks if code gets injected into the code you mean to run. Bastien Sent from my iPod 2009/9/25 Carl Furst cfu...@intracommunities.org Jim Lucas wrote: Ashley Sheridan wrote: On Wed, 2009-09-23 at 07:36 -0700, Jim Lucas wrote: Mert Oztekin wrote: Output buffering will do it. Also I am not sure but did you try retrieving content with fopen () ? Something like $file = 'invoicetable_bottom.php'; fopen(http://yoursite.com/folder/$file,r;); http://tr.php.net/function.fopen worth trying. Easier than output buffering This would not work. fopen would open the file for read. What you would be reading is the actual source of the document. Not the data the script would output when ran. The ob_* functions are the only way that I know of to do what you are asking -Original Message- From: Puiu Hrenciuc [mailto:hp...@xentra.ro] Sent: Wednesday, September 23, 2009 1:36 PM To: php-general@lists.php.net Subject: [PHP] Re: How to take output from an include, and embed it into a variable? Hi, The simplest way (actually the single way I know :) ) would be to capture the output using output buffering functions, something like this: // start output buffering ob_start(); // include the file that generates the HTML (or whatever content) include ; // get output buffer content $output=ob_get_contents(); // clean output buffer and stop buffering ob_end_clean(); // the content generated in the included file is now in $output variable // use it as you consider fit . Regards, Puiu Rob Gould wrote: I have an invoice table that is drawn on a number of pages, so I have all the logic in an include-file like this: include invoicetable_bottom.php; However, now I'm needing to take the output from that include file and pass it as an email. To do that, I need to somehow take the output from this include file and get it into a variable somehow. Is there a simple way to do this? Something like: $emailtcontent = include invoicetable_bottom.php? -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php That's just crazy talk. If you use fopen on a web URL, then it will always return the output the script generates. That's how http works! Sorry, my bad. Ash is correct, the method that is suggested will work. But you will need to enable options in your php.ini that are not on by default for security reasons, plus as Ben points out, you will need to filter out the scruff that is generated to capture just the data output from your include. Mind you that all of this also requires that the file that you are including is accessible via the web. It could be in a folder that is not web accessible. Sorry for the initial confusion! Thanks, Ash http://www.ashleysheridan.co.uk Do you have php configured to compile files? Why not just backtick the php -f command?? ? $cmd = *escapeshellcmd*(/full/path/to/php -f $file); $email_output = `$cmd`; # do something with $email_output ? Seems easier than a whole http call.. can be risky if the $file variable can be set by user input (big no no), but other than that.. seeems the simplest. -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
[Fwd: Re: [PHP] Re: How to take output from an include, and embed it into a variable?]
You mean like this ? ? $file string = file_get_contents(urlencode($file_path)); http://us3.php.net/manual/en/function.file-get-contents.php $result = eval($file_string); ? Well I see a few problems with this. One is that scope is not lexical. In other words if $foo exists somewhere in the script and $foo also exists in $file_string then $foo will retain the value it was set to in $file_string. That could lead to some debugging hell. Also, you would have to collect the output and manually return it which means you would have to keep an output cache which means you could only use scripts that cached output and returned them explicitly. However, the flip side is you could have a buffer declared in the local scope that collects the output of $file_string and then put that in the message, but that is not the same as: $foo = include $bar; # this is, of course, impossible Geert Tapperwijn wrote: Can't you just use the eval http://nl2.php.net/eval function, and parse the code from the include file in it? .. or is there something I'm missing here? 2009/9/25 Carl Furst cfu...@intracommunities.org mailto:cfu...@intracommunities.org Jim Lucas wrote: Ashley Sheridan wrote: On Wed, 2009-09-23 at 07:36 -0700, Jim Lucas wrote: Mert Oztekin wrote: Output buffering will do it. Also I am not sure but did you try retrieving content with fopen() ? Something like $file = 'invoicetable_bottom.php'; fopen(http://yoursite.com/folder/$file,r;); http://tr.php.net/function.fopen worth trying. Easier than output buffering This would not work. fopen would open the file for read. What you would be reading is the actual source of the document. Not the data the script would output when ran. The ob_* functions are the only way that I know of to do what you are asking -Original Message- From: Puiu Hrenciuc [mailto:hp...@xentra.ro mailto:hp...@xentra.ro] Sent: Wednesday, September 23, 2009 1:36 PM To: php-general@lists.php.net mailto:php-general@lists.php.net Subject: [PHP] Re: How to take output from an include, and embed it into a variable? Hi, The simplest way (actually the single way I know :) ) would be to capture the output using output buffering functions, something like this: // start output buffering ob_start(); // include the file that generates the HTML (or whatever content) include ; // get output buffer content $output=ob_get_contents(); // clean output buffer and stop buffering ob_end_clean(); // the content generated in the included file is now in $output variable // use it as you consider fit . Regards, Puiu Rob Gould wrote: I have an invoice table that is drawn on a number of pages, so I have all the logic in an include-file like this: include invoicetable_bottom.php; However, now I'm needing to take the output from that include file and pass it as an email. To do that, I need to somehow take the output from this include file and get it into a variable somehow. Is there a simple way to do this? Something like: $emailtcontent = include invoicetable_bottom.php? -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php That's just crazy talk. If you use fopen on a web URL, then it will always return the output the script generates. That's how http works! Sorry, my bad. Ash is correct, the method that is suggested will work. But you will need to enable
Re: [Fwd: Re: [PHP] Re: How to take output from an include, and embed it into a variable?]
Carl Furst wrote: You mean like this ? ? $file string = file_get_contents(urlencode($file_path)); http://us3.php.net/manual/en/function.file-get-contents.php $result = eval($file_string); ? Well I see a few problems with this. One is that scope is not lexical. In other words if $foo exists somewhere in the script and $foo also exists in $file_string then $foo will retain the value it was set to in $file_string. That could lead to some debugging hell. Also, you would have to collect the output and manually return it which means you would have to keep an output cache which means you could only use scripts that cached output and returned them explicitly. However, the flip side is you could have a buffer declared in the local scope that collects the output of $file_string and then put that in the message, but that is not the same as: $foo = include $bar; # this is, of course, impossible If you want the include to have it's own variable scope then wrap it with a function. If you want to assign the resulting value via a single call then wrap it in a function. Fortunately both of these combined require one thing... wrap it in a function. ?php function eval_include( $path ) { ob_start(); include( $path ); $result = ob_get_contents(); ob_end_clean(); return $result; } $foo = eval_include( $bar ); ? Cheers, Rob. -- http://www.interjinn.com Application and Templating Framework for PHP -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: Re: [PHP] Re: How to take output from an include, and embed it into a variable?
Jim Lucas wrote: Ashley Sheridan wrote: On Wed, 2009-09-23 at 07:36 -0700, Jim Lucas wrote: Mert Oztekin wrote: Output buffering will do it. Also I am not sure but did you try retrieving content with fopen() ? Something like $file = 'invoicetable_bottom.php'; fopen(http://yoursite.com/folder/$file,r;); http://tr.php.net/function.fopen worth trying. Easier than output buffering This would not work. fopen would open the file for read. What you would be reading is the actual source of the document. Not the data the script would output when ran. The ob_* functions are the only way that I know of to do what you are asking -Original Message- From: Puiu Hrenciuc [mailto:hp...@xentra.ro] Sent: Wednesday, September 23, 2009 1:36 PM To: php-general@lists.php.net Subject: [PHP] Re: How to take output from an include, and embed it into a variable? Hi, The simplest way (actually the single way I know :) ) would be to capture the output using output buffering functions, something like this: // start output buffering ob_start(); // include the file that generates the HTML (or whatever content) include ; // get output buffer content $output=ob_get_contents(); // clean output buffer and stop buffering ob_end_clean(); // the content generated in the included file is now in $output variable // use it as you consider fit . Regards, Puiu Rob Gould wrote: I have an invoice table that is drawn on a number of pages, so I have all the logic in an include-file like this: include invoicetable_bottom.php; However, now I'm needing to take the output from that include file and pass it as an email. To do that, I need to somehow take the output from this include file and get it into a variable somehow. Is there a simple way to do this? Something like: $emailtcontent = include invoicetable_bottom.php? -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php That's just crazy talk. If you use fopen on a web URL, then it will always return the output the script generates. That's how http works! Sorry, my bad. Ash is correct, the method that is suggested will work. But you will need to enable options in your php.ini that are not on by default for security reasons, plus as Ben points out, you will need to filter out the scruff that is generated to capture just the data output from your include. Mind you that all of this also requires that the file that you are including is accessible via the web. It could be in a folder that is not web accessible. Sorry for the initial confusion! Thanks, Ash http://www.ashleysheridan.co.uk Do you have php configured to compile files? Why not just backtick the php -f command?? ? $cmd = *escapeshellcmd*(/full/path/to/php -f $file); $email_output = `$cmd`; # do something with $email_output ? Seems easier than a whole http call.. can be risky if the $file variable can be set by user input (big no no), but other than that.. seeems the simplest. -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
RE: [PHP] Re: How to take output from an include, and embed it into a variable?
Output buffering will do it. Also I am not sure but did you try retrieving content with fopen() ? Something like $file = 'invoicetable_bottom.php'; fopen(http://yoursite.com/folder/$file,r;); http://tr.php.net/function.fopen worth trying. Easier than output buffering -Original Message- From: Puiu Hrenciuc [mailto:hp...@xentra.ro] Sent: Wednesday, September 23, 2009 1:36 PM To: php-general@lists.php.net Subject: [PHP] Re: How to take output from an include, and embed it into a variable? Hi, The simplest way (actually the single way I know :) ) would be to capture the output using output buffering functions, something like this: // start output buffering ob_start(); // include the file that generates the HTML (or whatever content) include ; // get output buffer content $output=ob_get_contents(); // clean output buffer and stop buffering ob_end_clean(); // the content generated in the included file is now in $output variable // use it as you consider fit . Regards, Puiu Rob Gould wrote: I have an invoice table that is drawn on a number of pages, so I have all the logic in an include-file like this: include invoicetable_bottom.php; However, now I'm needing to take the output from that include file and pass it as an email. To do that, I need to somehow take the output from this include file and get it into a variable somehow. Is there a simple way to do this? Something like: $emailtcontent = include invoicetable_bottom.php? -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php Bu mesaj ve ekleri, mesajda g?nderildi?i belirtilen ki?i/ki?ilere ?zeldir ve gizlidir. Size yanl??l?kla ula?m??sa l?tfen g?nderen kisiyi bilgilendiriniz ve mesaj? sisteminizden siliniz. Mesaj ve eklerinin i?eri?i ile ilgili olarak ?irketimizin herhangi bir hukuki sorumlulu?u bulunmamaktad?r. ?irketimiz mesaj?n ve bilgilerinin size de?i?ikli?e u?rayarak veya ge? ula?mas?ndan, b?t?nl???n?n ve gizlili?inin korunamamas?ndan, vir?s i?ermesinden ve bilgisayar sisteminize verebilece?i herhangi bir zarardan sorumlu tutulamaz. This message and attachments are confidential and intended for the individual(s) stated in this message. If you received this message in error, please immediately notify the sender and delete it from your system. Our company has no legal responsibility for the contents of the message and its attachments. Our company shall have no liability for any changes or late receiving, loss of integrity and confidentiality, viruses and any damages caused in anyway to your computer system.
Re: [PHP] Re: How to take output from an include, and embed it into a variable?
$file = 'invoicetable_bottom.php'; fopen(http://yoursite.com/folder/$file,r;); http://tr.php.net/function.fopen worth trying. Easier than output buffering Easier in what sense? It would end up requiring more code than output-buffering because you'd have to read from the file after calling fopen(), check for end-of-file, etc., and it seems needlessly inefficient because it: - uses a function, fopen(), instead of a language construct, include() - generates a superfluous HTTP request I think it's also counter-intuitive. I ran across a similar technique in some code I was reviewing and I had to really scratch my head and wonder why the original author of the code did that, instead of just getting at the file via the local file system. Finally, it would require the OP to store an include()-ed file inside of DocumentRoot -- which I personally prefer not to do when I can avoid it (although that approach is debatable). Ben -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php
Re: [PHP] Re: How to take output from an include, and embed it into a variable?
Ashley Sheridan wrote: On Wed, 2009-09-23 at 07:36 -0700, Jim Lucas wrote: Mert Oztekin wrote: Output buffering will do it. Also I am not sure but did you try retrieving content with fopen() ? Something like $file = 'invoicetable_bottom.php'; fopen(http://yoursite.com/folder/$file,r;); http://tr.php.net/function.fopen worth trying. Easier than output buffering This would not work. fopen would open the file for read. What you would be reading is the actual source of the document. Not the data the script would output when ran. The ob_* functions are the only way that I know of to do what you are asking -Original Message- From: Puiu Hrenciuc [mailto:hp...@xentra.ro] Sent: Wednesday, September 23, 2009 1:36 PM To: php-general@lists.php.net Subject: [PHP] Re: How to take output from an include, and embed it into a variable? Hi, The simplest way (actually the single way I know :) ) would be to capture the output using output buffering functions, something like this: // start output buffering ob_start(); // include the file that generates the HTML (or whatever content) include ; // get output buffer content $output=ob_get_contents(); // clean output buffer and stop buffering ob_end_clean(); // the content generated in the included file is now in $output variable // use it as you consider fit . Regards, Puiu Rob Gould wrote: I have an invoice table that is drawn on a number of pages, so I have all the logic in an include-file like this: include invoicetable_bottom.php; However, now I'm needing to take the output from that include file and pass it as an email. To do that, I need to somehow take the output from this include file and get it into a variable somehow. Is there a simple way to do this? Something like: $emailtcontent = include invoicetable_bottom.php? -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php That's just crazy talk. If you use fopen on a web URL, then it will always return the output the script generates. That's how http works! Sorry, my bad. Ash is correct, the method that is suggested will work. But you will need to enable options in your php.ini that are not on by default for security reasons, plus as Ben points out, you will need to filter out the scruff that is generated to capture just the data output from your include. Mind you that all of this also requires that the file that you are including is accessible via the web. It could be in a folder that is not web accessible. Sorry for the initial confusion! Thanks, Ash http://www.ashleysheridan.co.uk -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php