php-general Digest 16 May 2006 15:34:19 -0000 Issue 4131

Topics (messages 236261 through 236281):

Help w/ 'headers already sent' and file download
        236261 by: Mike Walsh
        236262 by: Rabin Vincent
        236267 by: Barry
        236272 by: Mike Walsh

Re: Wierd ass code...
        236263 by: Chris

Re: Trouble sending data via TCP socket
        236264 by: Rabin Vincent
        236274 by: Martin Marques

Re: Parsing a stdClass Object created with mimeDecode
        236265 by: Stut

Re: DOMElement->setAttribute() loops forever (node_list_unlink bug?)
        236266 by: Riku Palomäki

404 After Setting session.save_path to /tmp
        236268 by: Mark Sargent
        236270 by: nicolas figaro
        236271 by: Jochem Maas

FIT implementation for PHP
        236269 by: Ronny Unger

PHP daemons
        236273 by: Martin Marques
        236276 by: M. Sokolewicz
        236278 by: Martin Marques
        236279 by: Jad madi
        236280 by: Martin Marques

Re: Class/function scope general question
        236275 by: Edward Vermillion

Re: Development Environments/Automation
        236277 by: Brian Anderson

Re: Does PECL install modify my php.ini? or even look at it?
        236281 by: D. Dante Lorenso

Administrivia:

To subscribe to the digest, e-mail:
        [EMAIL PROTECTED]

To unsubscribe from the digest, e-mail:
        [EMAIL PROTECTED]

To post to the list, e-mail:
        php-general@lists.php.net


----------------------------------------------------------------------
--- Begin Message ---
I have an application which I am working on which takes a file supplied by 
the user via a File Upload, peforms some processing on it, then prompts the 
user to download a generated CSV file.  What I would like to do is report 
some processing statistics prior to the user prior to sending the CSV steam.

My CSV export ends with this:


        header("Content-type: application/vnd.ms-excel") ;
        header("Content-disposition:  attachment; filename=CSVData." . 
date("Y-m-d").".csv") ;

        print $csvStream ;

Unfortunately if I display any content prior to sending the CSV stream I get 
the 'headers already sent' error message.

Is there a way to both display a web page and send content to be saved by 
the user?  If someone knows of an example I could look at I'd be greatful.

Thanks,

Mike

--
Mike Walsh - mike_walsh at mindspring.com 

--- End Message ---
--- Begin Message ---
On 5/16/06, Mike Walsh <[EMAIL PROTECTED]> wrote:
I have an application which I am working on which takes a file supplied by
the user via a File Upload, peforms some processing on it, then prompts the
user to download a generated CSV file.  What I would like to do is report
some processing statistics prior to the user prior to sending the CSV steam.

My CSV export ends with this:


        header("Content-type: application/vnd.ms-excel") ;
        header("Content-disposition:  attachment; filename=CSVData." .
date("Y-m-d").".csv") ;

        print $csvStream ;

Unfortunately if I display any content prior to sending the CSV stream I get
the 'headers already sent' error message.

Is there a way to both display a web page and send content to be saved by
the user?  If someone knows of an example I could look at I'd be greatful.

No, you cannot display both a webpage and send a file
on the same page to the user.

What you could do is save the processed file in a temporary
folder and provide a link to download the file in your processing
statistics page. Or, you could redirect the user to the file after
showing the statistics page.

Rabin

--- End Message ---
--- Begin Message ---
Mike Walsh schrieb:
I have an application which I am working on which takes a file supplied by the user via a File Upload, peforms some processing on it, then prompts the user to download a generated CSV file. What I would like to do is report some processing statistics prior to the user prior to sending the CSV steam.

My CSV export ends with this:


        header("Content-type: application/vnd.ms-excel") ;
header("Content-disposition: attachment; filename=CSVData." . date("Y-m-d").".csv") ;

        print $csvStream ;

Unfortunately if I display any content prior to sending the CSV stream I get the 'headers already sent' error message.

Is there a way to both display a web page and send content to be saved by the user? If someone knows of an example I could look at I'd be greatful.

Split the page.
One php page showing the content and the second generating the csv file.
Call that script with Javascript when the page is load.

That way you could display the content and download the file.

Greets
        Barry

--
Smileys rule (cX.x)C --o(^_^o)
Dance for me! ^(^_^)o (o^_^)o o(^_^)^ o(^_^o)

--- End Message ---
--- Begin Message ---
""Rabin Vincent"" <[EMAIL PROTECTED]> wrote in message 
news:[EMAIL PROTECTED]
On 5/16/06, Mike Walsh <[EMAIL PROTECTED]> wrote:

[ ... snipped ... ]

>
> Is there a way to both display a web page and send content to be saved by
> the user?  If someone knows of an example I could look at I'd be greatful.

No, you cannot display both a webpage and send a file
on the same page to the user.

What you could do is save the processed file in a temporary
folder and provide a link to download the file in your processing
statistics page. Or, you could redirect the user to the file after
showing the statistics page.

Rabin

[ ... snipped ... ]

I found a solution to my problem - an IFRAME with a 0 height and 0 width 
does the trick.

Here is a thread which helped: 
http://forums.invisionpower.com/index.php?showtopic=214649

Mike

--
Mike Walsh - mike_walsh at mindspring.com 

--- End Message ---
--- Begin Message ---
Richard Lynch wrote:
On Sat, May 13, 2006 6:37 pm, Rory Browne wrote:

There are some cases where the Error Suppression operator may be
useful in
good code.


Last I checked, you pretty much HAD to use it for pg_fetch_row() since
it does an E_NOTICE when you try to fetch a row beyind the number
available...

FYI - not any more.

I find I have to with imap_open though (should get around to posting a bug report about that)..

--
Postgresql & php tutorials
http://www.designmagick.com/

--- End Message ---
--- Begin Message ---
On 5/16/06, J. King <[EMAIL PROTECTED]> wrote:
To further my understanding of how Jabber works I have decided I should
try and write my own XMPP implementation in PHP.  However, I've run into
trouble rather quickly.

To connect to a Jabber server, one must open a TCP socket to the server
(typically through port 5269) send an XML-based stream header, wait for
the server's confirmation and then log in, etc.  As an initial test I
tried to open a TCP socket, send a stream header, get the server's
response, then disconnect.  I did so thusly:

   $server = "jabber.org"; //example server
   $port = 5269; //default port
   $nsStream = "http://etherx.jabber.org/streams";; // Streams namespace

   $socket = stream_socket_client("tcp://$server:$port");
   $header = "<stream:stream to='$server' xmlns='jabber:client'
xmlns:stream='$nsClient' xml:lang='en' version='1.0'>";
   fwrite($socket, $header); //send header
   echo stream_get_contents($socket); //get server confirmation

   //close connection
   fwrite($socket, "</stream:stream>");
   fclose($socket);

[snipped]

I played with your code and here are some observations:

Shouldn't that variable inside $header be $nsStream (and not
$nsClient)? Also, stream_get_contents may not be ideal here
since it tries to get the full contents of the stream (until EOF?),
so you should probably be using fread() here.

Another thing, the Jabber.org default port seems to be 5222
(class.jabber.php also uses that port).

Rabin

--- End Message ---
--- Begin Message ---
On Mon, 15 May 2006, J. King wrote:

To further my understanding of how Jabber works I have decided I should try and write my own XMPP implementation in PHP. However, I've run into trouble rather quickly.

To connect to a Jabber server, one must open a TCP socket to the server (typically through port 5269) send an XML-based stream header, wait for the server's confirmation and then log in, etc. As an initial test I tried to open a TCP socket, send a stream header, get the server's response, then disconnect. I did so thusly:

 $server = "jabber.org"; //example server
 $port = 5269; //default port
 $nsStream = "http://etherx.jabber.org/streams";; // Streams namespace

 $socket = stream_socket_client("tcp://$server:$port");
$header = "<stream:stream to='$server' xmlns='jabber:client' xmlns:stream='$nsClient' xml:lang='en' version='1.0'>";
[snip]

 <stream:error>
  <invalid-namespace
    xmlns='urn:ietf:params:xml:ns:xmpp-streams'/>
 </stream:error>

What's the value of $nsClient??? I doesn't look like it's defined at all, so I would guess that your problem is there.

--
 21:50:04 up 2 days,  9:07,  0 users,  load average: 0.92, 0.37, 0.18
---------------------------------------------------------
Lic. Martín Marqués | SELECT 'mmarques' || Centro de Telemática | '@' || 'unl.edu.ar';
Universidad Nacional        |   DBA, Programador,
    del Litoral             |   Administrador
---------------------------------------------------------

--- End Message ---
--- Begin Message ---
Graham Anderson wrote:
I am trying to get the body text from a number of different emails using mimeDecode [Pear] Unfortunately, it appears that the body text could be in any number of locations in the stdClass Object depending on which email is processed. At this point, I can only access the node by looking at the print_r($structure) directly :(

Out of the three different emails I parsed, I got three different locations for the 'body' node
$structure->parts[0]->parts[0]->parts[0]->body;
$structure->body;
$structure->parts[0]->body;

Question:
Is there a way to generically traverse the entire object generated from Mail_mimeDecode and search for the correct node ?

In my case, these conditions need to be met .

if (trim($part->ctype_primary)== "text" && trim($part->ctype_secondary) == "plain")
{
$body = $part->body;
echo "the body text  is: $body";
}
}

I've recently needed to do this for a site I'm writing. This is what I came up with to find the first body (for my purposes I don't care about the type). I've not tested it much, but it will be getting a grilling over the coming weeks. It shouldn't be too hard to modify it to ensure it meets your requirements, but bear in mind that an email is not required to have a text/plain part.

if ($structure->ctype_primary == 'multipart')
{
        $part = $structure->parts[0];
        while ($part->ctype_primary == 'multipart')
                $part = $part->parts[0];

        $body = $part->body;
        $type = $part->ctype_primary.'/'.$part->ctype_secondary;
}
else
{
        $body = $structure->body;
        $type = $structure->ctype_primary.'/'.
                        $structure->ctype_secondary;
}

Hope that helps.

-Stut

--- End Message ---
--- Begin Message ---
Rob Richards wrote:
> Riku Palomäki wrote:
>> Hello,
>>
>> I'm having problems with DOMElement->setAttribute() -method with my php
>> script. I stripped down the code to this:
>>
>> ----------------------
>> $doc = new DOMDocument();
>> $doc->resolveExternals = true;
>> $doc->loadXml('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
>> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd";><a b="" />');
>>
>> $root = $doc->getElementsByTagName('a')->item(0);
>> $root->setAttribute('b', '&gt;');
>> $root->setAttribute('b', '');
>>
>> // This will never be executed
>> echo "done\n";
>> ----------------------
> 
> Can you please bug this (no need for the backtrace), so I don't forget
> it. I see the problem but will take me a day or two to get around to fix.
> 
> As a work around for now you can do:
> $root->setAttributeNode(new DOMAttr('b', '&gt;'));
> $root->setAttribute('b', '');

Ok, http://bugs.php.net/37456


-- 
Riku

--- End Message ---
--- Begin Message ---
Hi All,

I get this,


 Not Found

The requested URL /movie1.php was not found on this server.

------------------------------------------------------------------------
Apache/2.2.0 (Fedora) Server at localhost Port 80

when setting session.save_path to /tmp in /usr/local/lib/php.ini.
Even if I change it back, I still get that error. Restarting httpd doesn't fix it. Only a reboot, ouch! Why is this happening? Cheers.

httpd = 2.2.2
php = 5.1.4
OS = Fedora 5

Mark Sargent.

--- End Message ---
--- Begin Message ---
Mark Sargent a écrit :
Hi All,

I get this,


 Not Found

The requested URL /movie1.php was not found on this server.

------------------------------------------------------------------------
Apache/2.2.0 (Fedora) Server at localhost Port 80

when setting session.save_path to /tmp in /usr/local/lib/php.ini.
Even if I change it back, I still get that error. Restarting httpd doesn't fix it. Only a reboot, ouch! Why is this happening? Cheers.

Hi,

you should check apache log files.
I don't know if your server is allowed to write to /tmp.
what's the initial (default) session.save_path ?
try to set it to a subdirectory of your DocumentRoot. (check httpd.conf for the DocumentRoot). (/www/root/default_vhost/tmp for example, if /www/root/default_vhost is your DocumentRoot).

N F
httpd = 2.2.2
php = 5.1.4
OS = Fedora 5

Mark Sargent.


--- End Message ---
--- Begin Message ---
nicolas figaro wrote:

...

try to set it to a subdirectory of your DocumentRoot. (check httpd.conf for the DocumentRoot). (/www/root/default_vhost/tmp for example, if /www/root/default_vhost is your DocumentRoot).

NO - DONT EVER DO THIS!!!! tmp/session files should not be stored in a 
directory that
can be [potentially] read via http.

.htaccess directives can be used to block access to the dir BUT I still would 
recommend
keeping 'tmp' outside of the web root.

just make sure 'tmp' is writable by the user the webserver is running as.


N F

httpd = 2.2.2
php = 5.1.4
OS = Fedora 5

Mark Sargent.



--- End Message ---
--- Begin Message ---
Hello,

I am looking for an implemantion of FIT (Framework for Integrated Test) for
PHP. 

http://fit.c2.com/
https://sourceforge.net/projects/fitlibrary/

Now I am thinking about implementing it myself. But before I want to know if
anybody is already working on such an implementation or has heart of it?

Thanks alot!

Ronny Unger

#####################

Mail: [EMAIL PROTECTED]
WWW: www.php-workx.de

--- End Message ---
--- Begin Message --- I've been using PHP for a while with a daemon I made a few years ago, which is in use, working great. I used the example that's in the docs:

http://www.php.net/manual/en/ref.sockets.php

A few months ago I started to make a new daemon for other purposes, and I decided to build some objects to make it OOP. This small server is almost fully functional, but I got into a small problem: I can't kill the daemon like I used to with the other daemon. I just won't die, unless I get the pid and send a SIGKILL to the pid.

Both servers are runned executing the PHP script, which has in the first line:

#!/usr/bin/php

In the first daemon all I have to do to kill it is execute a
pkill server_name.

But with the new daemon (the object orientaded one) it doesn't die. Any ideas on why?

--
 21:50:04 up 2 days,  9:07,  0 users,  load average: 0.92, 0.37, 0.18
---------------------------------------------------------
Lic. Martín Marqués | SELECT 'mmarques' || Centro de Telemática | '@' || 'unl.edu.ar';
Universidad Nacional        |   DBA, Programador,
    del Litoral             |   Administrador
---------------------------------------------------------

--- End Message ---
--- Begin Message --- Well, by looking into my cristal ball I think your problem lies at line 12 of file x.php for sure!! It's probably the I_have_not_seen_any_code_at_all("so I can't tell you anything about it") function there.

goodluck!
- tul

Martin Marques wrote:
I've been using PHP for a while with a daemon I made a few years ago, which is in use, working great. I used the example that's in the docs:

http://www.php.net/manual/en/ref.sockets.php

A few months ago I started to make a new daemon for other purposes, and I decided to build some objects to make it OOP. This small server is almost fully functional, but I got into a small problem: I can't kill the daemon like I used to with the other daemon. I just won't die, unless I get the pid and send a SIGKILL to the pid.

Both servers are runned executing the PHP script, which has in the first line:

#!/usr/bin/php

In the first daemon all I have to do to kill it is execute a
pkill server_name.

But with the new daemon (the object orientaded one) it doesn't die. Any ideas on why?

--
 21:50:04 up 2 days,  9:07,  0 users,  load average: 0.92, 0.37, 0.18
---------------------------------------------------------
Lic. Martín Marqués | SELECT 'mmarques' || Centro de Telemática | '@' || 'unl.edu.ar';
Universidad Nacional        |   DBA, Programador,
    del Litoral             |   Administrador
-------------------------------------------------------
--

--- End Message ---
--- Begin Message ---
On Tue, 16 May 2006, M. Sokolewicz wrote:

Well, by looking into my cristal ball I think your problem lies at line 12 of file x.php for sure!! It's probably the I_have_not_seen_any_code_at_all("so I can't tell you anything about it") function there.

No problem. :-)

I solved it making a second script that I run when I want to close the server. This script just conects and sends a "shutdown" string. I changed the daemon so that it will recieve this string and close all conections, close the socket and break all the loops. :-)

Any way, I don't know why the code from the first daemon finish well when a kill is sent to it (remember that this daemon is a copy from the first example at: http://ar2.php.net/manual/en/ref.sockets.php)

--
 21:50:04 up 2 days,  9:07,  0 users,  load average: 0.92, 0.37, 0.18
---------------------------------------------------------
Lic. Martín Marqués | SELECT 'mmarques' || Centro de Telemática | '@' || 'unl.edu.ar';
Universidad Nacional        |   DBA, Programador,
    del Litoral             |   Administrador
---------------------------------------------------------

--- End Message ---
--- Begin Message ---
Martin, 
I'm afraid we cannot help you without reading the code, paste it to
phpfi.com and send the url here

now the general answer is, OOP or not OOP it doesn't matter
there is problem in the code whatever and however it's written dude. 

--- End Message ---
--- Begin Message ---
On Tue, 16 May 2006, Jad madi wrote:

Martin,
I'm afraid we cannot help you without reading the code, paste it to
phpfi.com and send the url here

now the general answer is, OOP or not OOP it doesn't matter
there is problem in the code whatever and however it's written dude.

Yes (the code is really big, that's why I didn't paste it).

My question would be then, how can I control a SIGTERM signal from inside a PHP CLI script?

P.D.: My original problem was solved, as you can see in an earlier post.

--
 21:50:04 up 2 days,  9:07,  0 users,  load average: 0.92, 0.37, 0.18
---------------------------------------------------------
Lic. Martín Marqués | SELECT 'mmarques' || Centro de Telemática | '@' || 'unl.edu.ar';
Universidad Nacional        |   DBA, Programador,
    del Litoral             |   Administrador
---------------------------------------------------------

--- End Message ---
--- Begin Message ---

On May 15, 2006, at 7:53 PM, Richard Lynch wrote:

You can't do that.

Yeah I can, sorta. Well not really as I'm having to pass a reference to the class object around. But that works.


The whold class has to be in a single contiguous file.

Last I checked.

To be able to use $this-> in the functions yeah, although it was available in the file, outside of a function.... but that could get *real* dangerous.


On the plus side, it's incredibly unlikely that having the functions
in separate files was a Good Idea...


Well... I know it's not a *good* idea, it's just an intermediate step that's helping me see the class pieces a little better so I *can* figure out the best way to go. I've got a monster that has grown out of control over time that really needs to be tamed.

Ed

--- End Message ---
--- Begin Message ---

Thanks.
I will check out the links that you and Peer sent me. Qcodo and Cake both look like promising alternatives.

I appreciate the help,

-Brian



Miles Thompson wrote:
At 02:01 PM 5/15/2006, Brian Anderson wrote:

Hello,

I am being asked to find some sort of development environment for PHP/MySQL, if is exists, in which it has some sort of automation/wizzardry. What is being done is a mass of MSAccess interfaces, forms, reports, etc. are needing to be re-written in php and connected to a MySQL database instead of the Access.

What is being asked for is something that although being able to build some interfaces through wizzards/gui's, that is be somewhat logical, and streamlined in its management of code and html. Something that implements some kind of smarty tag or similar woould be good instead of say... Macromedia which can do some fairly bloated and cumbersome things with logic and markup. Also, It would need to be flexible enough to manage projects back and forth between wizzards, and hand coding so that one wasn't limited to the narrow applications of the wizzard.

Does something like this exist?

I have played around with Macromedia, and another app called CodeCharge Studio. I hope that I am asking the right or at least an intelligent question.

-Brian

Do you mean a framework?

Have a look at Qcodo, Cake, etc. Qcodo allows you to preserve your interface while making logic / database changes.

Regards - Miles Thompson


--- End Message ---
--- Begin Message ---
Richard Lynch wrote:
On Thu, May 11, 2006 6:02 pm, D. Dante Lorenso wrote:
    > pecl install memcache
Is it possible that pecl has an --extension-dir flag to tell it WHERE
to install stuff, or perhaps an optional command line arg or ...
Cuz, really, the odds on it being where you want it to be are pretty
slim.

Odds would be increased if 'pecl' would look at what I've already declared in the PHP.ini file ;-)

Dante

--- End Message ---

Reply via email to