Prateek Dubey
Prateek Dubey

Reputation: 3

Ignore PHP Warnings

I have a PHP code . when i run the code , it works properly but there appears some warnings , that is -Warning: Cannot modify header information - headers already sent by (output started at /home/fundumob/public_html/app_create/nav_class.php:119) in /home/fundumob/public_html/app_create/profile.php on line 32

what can i do ??? ,my code is given below..

 <?php session_start(); error_reporting(E_ALL ^ E_WARNING);?>
 <?php
  //include("local_config.php");
  include("lib/config.php");
  include("nav_class.php");
  $obj=new navig();

  if(isset($_SESSION['user_id']))
  {
  $user_id=$_SESSION['user_id'];
  $pic="select Picture from Profile where user_id=$user_id ";
  $pic_result=mysql_query($pic) or die ("sorry".$pic);
  $count=mysql_num_fields($pic_result);

  if($count==1)
  {

   $rows=mysql_fetch_row($pic_result);

   $_SESSION['picture']=$rows[0];
   $profile_pic=$_SESSION['picture'];

   $photo="profile/".$profile_pic;
    }
   else
   {
    $photo="profile/img.jpg";
   }
   }
   else
   {
   header("location:index.php?er=3");
    }

    ?>

   <div id="templatemo_header_wrapper">

<div id="templatemo_header">

    <div id="site_logo"></div>


      <div id="menu_nav" >
    <ul id="css3menu1" class="topmenu">
    <li class="topfirst"><a href="profile.php?apps=1" style="height:15px;line-
     height:15px;">Dashboard</a></li>
     <li class="topmenu"><a href="#" style="height:15px;line-height:15px;">Profile</a>      
       </li>
  <li class="topmenu"><a href="#" style="height:15px;line-height:15px;">Settings</a>  
   </li>
  <li class="toplast"><a href="#" style="height:15px;line-height:15px;">Prateek    

</ul>
</div>  </div><!-- end of header -->
 </div>

  <div id="tempatemo_content_wrapper">

   <div id="templatemo_content" align="center">

    <div class="recent_projects">

          <div align="right">
           <table width="50%" border="0">
           <tr>
           <td width="85%" height="20" style="border-right:1px solid #D0D0D0;"><div    
         align="right">Welcome&nbsp;&nbsp;&nbsp;<?php echo $_SESSION['fname']."&nbsp;". 
      $_SESSION['lname']; ?></div></td>
           <td width="15%" > <div align="center"><a href="logout.php">Log Out</a></div>
          </td>
           </tr>
           </table>
          </div>

    </div>
  <!--end of recent project-->  

Upvotes: 0

Views: 1165

Answers (8)

sonofagun
sonofagun

Reputation: 535

Your nav_class.php is outputting something at line 119, and possibly after that. You are calling header on line 32 of this script:

header("location:index.php?er=3");

There are a few remedies:

  • Don't output anything before calling header
  • call header before including nav_class.php and creating $obj (you're not using $obj before your header call anyway)
  • As swapnesh suggested, use ob_start() and ob_end_flush().

I would favor one of the first two solutions.

Upvotes: 0

Bhavik Patel
Bhavik Patel

Reputation: 613

Don't echo or print_r() after header load and if you really want to disable all errors then check index.php file if you are using codeigniter then you can unset all error messages.. there are there option and set

if (defined('ENVIRONMENT'))
{
    switch (ENVIRONMENT)
    {
        case 'development':
            error_reporting(E_ALL);
        break;

        case 'testing':
        case 'production':
            error_reporting(0);
        break;

        default:
            exit('The application environment is not set correctly.');
    }
}

just check your php.ini and then check which type of error you want to and set only one parameter and replace error_reporting(E_ALL); in this function you can replace your parameter

Upvotes: 0

Umair Aziz
Umair Aziz

Reputation: 1528

There are many solutions to this problem!!!!

1)header() must be before anything else, If header is in any included file then include it at top of page and write session_start in that page containing header.....

2)Use ob_start() at start of page, It will store the output of page in buffer and then output every thing at same time, also use ob_end_flush() at end...

3)Remember to remove empty spaces and echo statements if any before header command

4)Move include("nav_class.php"); $obj=new navig(); just after

    else
     {
      header("location:index.php?er=3");
     }
  include("nav_class.php");
  $obj=new navig();

and in config.php Make sure that there is no echo statement

e.g echo "Database Connection Successful";

Remove comments as well

Also remove or die ("sorry".$pic); in query

Upvotes: 3

Luke Stevenson
Luke Stevenson

Reputation: 10351

Ugly, ugly code....

<?php

@session_start();
error_reporting(E_ALL ^ E_WARNING);

//include("local_config.php");
include( 'lib/config.php' );
include( 'nav_class.php' );

$obj = new navig();

if( !isset( $_SESSION['user_id'] ) ){

  if( !headers_sent() )
    header( 'Location: index.php?er=3' );
  echo '<script type="text/javascript">document.location.href="index.php?er=3";</script>';
  die();

}

$photo = 'profile/img.jpg';

if( !isset( $_SESSION['picture'] ) ){

  $user_id = (int) $_SESSION['user_id'];
  $pic = "SELECT Picture FROM Profile WHERE user_id=$user_id";

  if( ( $pic_result = mysql_query( $pic ) ) && mysql_num_rows( $pic_result )==1 ){
    $row = mysql_fetch_row( $pic_result );
    $_SESSION['picture'] = $row[0];
    $photo = 'profile/'.$row[0];
  }

}else{

  $photo = 'profile/'.$_SESSION['picture'];

}

?>

<div id="templatemo_header_wrapper">
  <div id="templatemo_header">
    <div id="site_logo"></div>
    <div id="menu_nav">
      <ul id="css3menu1" class="topmenu">
        <li class="topfirst"><a href="profile.php?apps=1" style="height:15px;line-height:15px;">Dashboard</a></li>
        <li class="topmenu"><a href="#" style="height:15px;line-height:15px;">Profile</a></li>
        <li class="topmenu"><a href="#" style="height:15px;line-height:15px;">Settings</a></li>
        <li class="toplast"><a href="#" style="height:15px;line-height:15px;">Prateek</li>
      </ul>
    </div>
  </div><!-- end of header -->
</div>

<div id="tempatemo_content_wrapper">
  <div id="templatemo_content" align="center">
    <div class="recent_projects">
      <div align="right">
        <table width="50%" border="0">
          <tr>
            <td width="85%" height="20" style="border-right:1px solid #D0D0D0;"><div align="right">Welcome&nbsp;&nbsp;&nbsp;<?php echo $_SESSION['fname'].'&nbsp;'.$_SESSION['lname']; ?></div></td>
            <td width="15%" ><div align="center"><a href="logout.php">Log Out</a></div></td>
          </tr>
        </table>
      </div>
    </div>
    <!--end of recent project-->

...

Upvotes: 1

slashingweapon
slashingweapon

Reputation: 11317

Don't echo any data until after you call header(), and you won't have this problem.

Upvotes: 0

Raptor
Raptor

Reputation: 54258

Your codes contain errors. I cannot see the contents of included files, but the error message you posted is that, you try to start a session when a session is already started.

Look for session_start() in your codes and do not echo things before header()

Upvotes: 0

Arun Killu
Arun Killu

Reputation: 14263

i dont recommend hide warning better you fix it you can use this to hide warning...

error_reporting(E_ERROR | E_PARSE);

Upvotes: 0

swapnesh
swapnesh

Reputation: 26732

use ob_start() at the start of your script and ob_end_flush() at the end.

Reference

Upvotes: 1

Related Questions