If you include ob_start() at the beginning of the code this will turn
output buffering on and hence enable you to send the header() tag at any
line in the code.

Peter

-----Original Message-----
From: Ryan F. Bayhonan [mailto:[EMAIL PROTECTED]] 
Sent: Tuesday, 5 February 2002 5:54 PM
To: Peter; [EMAIL PROTECTED]
Subject: Re: [PHP] Problem...header already sent by


Hello Peter. Good Day.

Omitting <html></html> does not solve the problem. I've experience this
problem also before. I found out that the once causing the problem is
when any data that has been sent to the client. I have listed some
example below.

Examples: All of these will cause a warning when header is called.

1. Since the tag <html> will be interpreted by the client browser first
before the <?php ... ?> tags, data has been sent to the client, telling
the client that an html file is being rendered. So when the browser
interprets the header function, a warning will be issued.

    <html>
    <?php
            header( some parameters );
            exit;
     ?>

2. This will also cause an error. Remember that a call to an echo or
print function will send data (the parameters of the function) to the
client. So when the header is interpreted, a warning will be issued.

<?php
    echo "Some text";
    header( some params );
    exit;
?>

Hope this is clear to you now. When a data has been sent already to the
client, a call to a header will fail. The best thing you must do is to
put the logic/check part on the first line of the file (See below). In
the example below, I check first is the a user is valid by calling the
the function verify_user( params... ) before any other html tags be
rendered. So when the user is not valid it will redirect an error page,
if it is valid, the Welcome to page will be printed.

<?php
 session_start();
 include 'include/config.inc';
 include 'include/pgsql.inc';

 if (!verify_user($username, $Password, $c_id))
 {
  session_register("isValid");
  $isValid=false;
  $title = "Web-based Training System Login";
  $msg = "Access Denied!!!";
  $link = "../../index.php?id=".$c_id;
  header("Location:
notify2.php?title=".urlencode($title)."&msg=".urlencode($msg)."&link=".u
rlen
code($link));
  exit;
 }
?>
<html>
<body>
        Welcome to the page.
</body>
</html>

Hope this help you more.

Until then...

Ryan F. Bayhonan

----- Original Message -----
From: "Peter" <[EMAIL PROTECTED]>
To: "Ryan F. Bayhonan" <[EMAIL PROTECTED]>;
<[EMAIL PROTECTED]>
Sent: Tuesday, February 05, 2002 2:14 PM
Subject: Re: [PHP] Problem...header already sent by


> Hi Ryan,
>   I tried and took the <html></html> tags out and I still get the same

> messaage.  Why?
>
> Thanks,
> Peter
>
>
> > Hello Peter.
> >
> > I discribe my reply below:
> >
> > > **************************
> > > Warning: Cannot add header information - headers already sent by
(output
> > > started at C:\apache\htdocs\proj\sports\phps\verify.php:2) in 
> > > C:\apache\htdocs\proj\sports\phps\verify.php on line 26
> > > ***************************
> >
> > This warning message appear when the server already send data to the
> client.
> >
> > > 1. <html>
> > > 2. <?php
> > >     ....
> > >
> > >
> > >  23.   if (!$auth) {
> > >  24.      header("www-Authenticate: Basic realm='Private'");
> > >  25.      header("HTTP/1.0 401 Unauthrized");
> > > ...
> > > ?>
> > > </html>
> >
> > In the above code, the <html></html> tag has been sent to the client
> browser
> > already, thus when calling header function it would cause a warning
> telling
> > you that data has been rendered already.
> >
> > Hope this help.
> >
> > Ryan
> >
> >
>
> --
> 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


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to