0

私はPHPコードを持っています。コードを実行すると、正しく動作しますが、いくつかの警告が表示されます。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

私に何ができる ???、私のコードを以下に示します..

 <?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-->  
4

8 に答える 8

3

この問題には多くの解決策があります!!!!

1)header()何よりも前にある必要があります。ヘッダーがインクルードファイルにある場合は、ページの上部にインクルードし、session_startヘッダーを含むそのページに書き込みます.....

2)ob_start()ページの開始時に使用します。ページの出力をバッファに保存し、すべてのものを同時に出力しob_end_flush()、最後にも使用します...

3)ヘッダーコマンドの前に空のスペースとエコーステートメントを削除することを忘れないでください

4)include("nav_class.php"); $obj=new navig();直後に移動

    そうしないと
     {
      header("location:index.php?er=3");
     }
  include("nav_class.php");
  $obj=新しいナビ();

およびconfig.phpにechoステートメントがないことを確認してください

例 echo "データベース接続成功";

コメントも削除

また、削除するか死ぬ ("sorry".$pic); クエリで

于 2012-11-07T06:25:21.863 に答える
1

醜い、醜いコード....

<?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-->

...
于 2012-11-07T06:22:36.380 に答える
1

ob_start()スクリプトの開始時と終了時に使用しますob_end_flush()

参照

于 2012-11-07T06:10:20.133 に答える
0

警告を非表示にすることはお勧めしません。これを使用して警告を非表示にすることができます...

error_reporting(E_ERROR | E_PARSE);
于 2012-11-07T06:10:53.890 に答える
0

コードにエラーが含まれています。インクルードされたファイルの内容を確認できませんが、投稿されたエラー メッセージは、セッションが既に開始されているときにセッションを開始しようとしているというものです。

あなたのコードで探して、前に物事session_start()をしないでくださいechoheader()

于 2012-11-07T06:11:07.997 に答える
0

を呼び出すまでデータをエコーし​​ないheader()でください。この問題は発生しません。

于 2012-11-07T06:11:18.413 に答える
0

あなたの nav_class.php は 119 行目に何かを出力しています。このスクリプトの 32 行目でヘッダーを呼び出しています。

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

いくつかの救済策があります:

  • ヘッダーを呼び出す前に何も出力しない
  • nav_class.php をインクルードして作成する前にヘッダーを呼び出します (とにかく、ヘッダー呼び出しの前に$obj 使用していません)。$obj
  • swapnesh が示唆したように、 and を使用ob_start()ob_end_flush()ます。

最初の 2 つのソリューションのいずれかを優先します。

于 2012-11-07T06:21:53.870 に答える
0

しないでください、echoまたはprint_r()ヘッダーの読み込み後に、本当にすべてのエラーを無効にしたい場合は、codeigniter を使用している場合は index.php ファイルを確認してから、すべてのエラー メッセージを設定解除できます。オプションと設定があります

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.');
    }
}

php.iniを確認してから、必要なエラーのタイプを確認し、パラメーターを1つだけ設定してerror_reporting(E_ALL);、この関数で置き換えて、パラメーターを置き換えることができます

于 2012-11-07T06:34:42.100 に答える