Jump to content

Archived

This topic is now archived and is closed to further replies.

werty37

A little Help needed with Headers

Recommended Posts

[code]
<?

/* $Id: Guid.php,v 1.0 2004/07/08 05:50:17 binzy Exp $ */

class System
{
    function currentTimeMillis()
    {
        list($usec, $sec) = explode(" ",microtime());
        return $sec.substr($usec, 2, 3);
    }

}

class NetAddress
{

    var $Name = 'localhost';
    var $IP = '127.0.0.1';
    
    function getLocalHost() // static
    {
        $address = new NetAddress();
        $address->Name = $_ENV["COMPUTERNAME"];
        $address->IP = $_SERVER["SERVER_ADDR"];

        return $address;
    }

    function toString()
    {
        return strtolower($this->Name.'/'.$this->IP);
    }

}

class Random
{
    function nextLong()
    {
        $tmp = rand(0,1)?'-':'';
        return $tmp.rand(1000, 9999).rand(1000, 9999).rand(1000, 9999).rand(100, 999).rand(100, 999);
    }
}


class Guid
{

    var $valueBeforeMD5;
    var $valueAfterMD5;

    function Guid()
    {
        $this->getGuid();
    }

    function getGuid()
    {
        $address = NetAddress::getLocalHost();
        $this->valueBeforeMD5 = $address->toString().':'.System::currentTimeMillis().':'.Random::nextLong();
        $this->valueAfterMD5 = md5($this->valueBeforeMD5);
    }

    function newGuid()
    {
        $Guid = new Guid();
        return $Guid;
    }

    function toString()
    {
        $raw = strtoupper($this->valueAfterMD5);
        return substr($raw,0,8).'-'.substr($raw,8,4).'-'.substr($raw,12,4).'-'.substr($raw,16,4).'-'.substr($raw,20);
    }

}

?>

<?php

if (!isset($_COOKIE['SessionID'])):
   $Guid = new Guid();
   setcookie('SessionID',$Guid->toString());
   echo $_COOKIE['SessionID'];    
else:
   echo $_COOKIE['SessionID'];
endif;

?>[/code]


I get an error like this -

[b]Warning: Cannot modify header information - headers already sent[/b]

Anyone, help please..

Thanks

Share this post


Link to post
Share on other sites
Please review [a href=\"http://www.phpfreaks.com/forums/index.php?showtopic=63199\" target=\"_blank\"]http://www.phpfreaks.com/forums/index.php?showtopic=63199[/a]

Share this post


Link to post
Share on other sites
Thanks for the quick reply...
But the error seems to have tripled...


[code]Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /var/www/test/guid.php:2) in /var/www/test/guid.php on line 3

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/test/guid.php:2) in /var/www/test/guid.php on line 3

Warning: Cannot modify header information - headers already sent by (output started at /var/www/test/guid.php:2) in /var/www/test/guid.php on line 87[/code]

I put "session_start()" at the start of the php file..

[code]<?php session_start();
/* $Id: Guid.php,v 1.0 2004/07/08 05:50:17 binzy Exp $ */

class System
{
    function currentTimeMillis()

............
........
?>[/code]

Thanks

Share this post


Link to post
Share on other sites
You can fix this by buffering your output.

[code]<?php
ob_start();
?>[/code]

Put this at the very top line of your script.

[!--coloro:#990000--][span style=\"color:#990000\"][!--/coloro--]Jeremy[!--colorc--][/span][!--/colorc--]

Share this post


Link to post
Share on other sites
you mean like this, right

[code]
<?php
ob_start();
session_start();

/* $Id: Guid.php,v 1.0 2004/07/08 05:50:17 binzy Exp $ */

class System
{
    function currentTimeMillis()
    {
....................................
....................................
....................................
....................................
?>[/code]

When i run the page, i get error like this:

[b]Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /var/www/test/guid.php:2) in /var/www/test/guid.php on line 4

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/test/guid.php:2) in /var/www/test/guid.php on line 4

Warning: Cannot modify header information - headers already sent by (output started at /var/www/test/guid.php:2) in /var/www/test/guid.php on line 88[/b]


Thanks

Share this post


Link to post
Share on other sites
[code] <?php
ob_start();
session_start();
?>

<?php

/* $Id: Guid.php,v 1.0 2004/07/08 05:50:17 binzy Exp $ */

class System
{
    function currentTimeMillis()
    {
....................................
....................................
....................................
....................................
?>[/code]

Try it like this.

[!--coloro:#990000--][span style=\"color:#990000\"][!--/coloro--]Jeremy[!--colorc--][/span][!--/colorc--]

Share this post


Link to post
Share on other sites
[b]Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /var/www/test/guid.php:2) in /var/www/test/guid.php on line 4

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/www/test/guid.php:2) in /var/www/test/guid.php on line 4

Warning: Cannot modify header information - headers already sent by (output started at /var/www/test/guid.php:2) in /var/www/test/guid.php on line 92[/b]


Sorry, It didnt help...

Thanks

Share this post


Link to post
Share on other sites
if you look closer to the error message, it mentions "output started at /var/www/test/guid.php:2". that suggest you might have blank lines before line 2. remove the blank lines and the session will work.

FYI: anything involving headers (header,cookie,session, etc) needs to be sent BEFORE any output.

Share this post


Link to post
Share on other sites
Read this [a href=\"http://www.phpfreaks.com/forums/index.php?showtopic=37442\" target=\"_blank\"]sticky[/a] in the newbies forum.

Share this post


Link to post
Share on other sites

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.