-1

私はしばらくの間、このエラーに苦労しています。

プロファイル サイトを作成しました。ローカルで実行すると、ログインしてプロファイル ページにリダイレクトするのに問題はありません。

しかし、すぐにアップロードしても、ログインを押しても何も起こりません。空のページが表示されます...しかし、ページのソースを開くと、init.inc.php ファイルが読み取られていることがわかります。しかし、コメントコードが読み取られるだけです..そして、エラーメッセージが表示されないので、何が問題なのか本当にわかりません。

ああ、あなたが私が言おうとしていることを理解してくれることを願っています:)

これは私のログインページです

<?php 
 include 'core/inc/init.inc.php';
 if ($_SERVER['HTTP_HOST'] != 'localhost') // running in remote server
    $server = 'pixeltouch2.mysql.domeneshop.no';  
    else // running locally
    $server = 'pixeltouch2.mysql.domeneshop.no';

mysql_connect($server, "LOGIN", "pass") or die(mysql_error());
  mysql_select_db("pixeltouch2") or die(mysql_error()) ;


$errors = array();

if (isset($_POST['username'], $_POST['password'])){
    if(empty($_POST['username'])){
        $errors[] = 'The username cannot be empty.';    
    }
        if(empty($_POST['password'])){
        $errors[] = 'The password cannot be empty.';
    }
//Log in
    if (valid_credentials($_POST['username'], $_POST['password']) == false ){
        $errors[] = 'Username / Password incorrect.';
    }
        if (empty($errors)){
            $_SESSION['username'] = htmlentities($_POST['username']);
            $_SESSION['uid'] = fetch_user_id($_SESSION['username']);

            header("Location: profile.php?uid=" . $_SESSION['uid']);
                die();
                echo $_SESSION['uid'];
        }
}
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title>Pixeltouch</title> 

<link rel="stylesheet" type="text/css" href="ext/style.css" />

</head> 
<body> 
<div id="page-wrap"> 
<div id="main-content"> 
<br/>
<?php include_once('template/head.inc.php');
?>
<div id="menu"> 

<?php include_once('template/nav.inc.php');
?> 

</div> 
<!-- SKRIVBOX-->

<div>
<?php 
if(empty($errors) == false){
?>
<ul>

<?php

foreach ($errors as $error) {
    echo "<li>$error</li>";
}

?>
</ul>

<?php

}else{
echo 'Need an account ? <a href="register.php">Register here</a>'; 
}

?>



</div>
<br/>
<form method="post" action="" >
<p>
<label for="username">Username:</label>
<input type="text" name="username" id="username" value="<?php if (isset($_POST['username'])) echo  htmlentities($_POST['username']); ?>" />
</p>
<p>
<label for="password">Password: </label>
<input type="password" name="password"  id="password" />
</p>
<p>
<input type="submit" value="Login" />
</p>

</form>


<!-- SKRIVBOX END-->
</div> 

<?php include_once('template/foot.inc.php');
?>
</div>
</body>
</html>

そして私のinit.inc.phpファイル

     <?php
     session_start();

/*
     mysql_connect("pixeltouch2.mysql.domeneshop.no", "LOGIN", "PASS") or die(mysql_error()) ; 
     mysql_select_db("pixeltouch2") or die(mysql_error()) ;
     */

     if($_SERVER['HTTP_HOST'] != 'pixeltouch2.mysql.domeneshop.no')// running in remote server
        $server = 'pixeltouch2.mysql.domeneshop.no';  
        else // running locally
        $server = 'pixeltouch2.mysql.domeneshop.no';

    mysql_connect($server, "login", "pass") or die(mysql_error());
      mysql_select_db("pixeltouch2") or die(mysql_error()) ;

     $path = dirname(__FILE__);
     include("{$path}/user.inc.php");

     ?>


                                        <!--Registration/Login (START)-->
     <?php 


     $exceptions = array('register', 'login', 'user_list', 'profile', 'edit_profile', 'upload');

     $page = substr(end(explode('/', $_SERVER['SCRIPT_NAME'])), 0, -4);

     if(in_array($page, $exceptions) == false){
        if (isset($_SESSION['username']) == false){
        header('Location: login.php');
        die();
        }
      }
     ?>

                                        <!--Registration/Login (END)--> 


                                            <!--User Profile (START)-->
     <?php
     $_SESSION['uid'] = 1;


     ?>

                                            <!--User Profile (END)-->

エラーログ

Warning: Cannot modify header information - headers already sent by (output started at /home/3/p/pixeltouch/www/book/core/inc/init.inc.php:2) in /home/3/p/pixeltouch/www/book/login.php on line 32

When I look @ line 32 I its my  header("Location: profile.php?uid=" . $_SESSION['uid']);
                die();
                echo $_SESSION['uid'];

それで、セッションについて何か、それが機能するようにコードを書く別の方法はありますか?

4

1 に答える 1

1

さて、エラーはすぐそこにそれを言います。すでにブラウザに出力を送信しています。「出力」とは、httpヘッダー以外のブラウザに送信されるものを意味します。

したがって、ファイルで次のものを探します。

  • ヘッダーの場所ステートメントの前にステートメントをエコー/印刷します。
  • タグの前の空白または改行文字<?php(含まれているファイルでも)。
  • ページの先頭でバイト順マーク(BOM)を使用します。

だから..私が見るあなたのコードサンプルを見る(+記号はスペースを示します)

++++<?php
      session_start();

その使用を修正する必要があります

<?php
  session_start();
// No spaces at the beginning

またはこの部分でも

 // You close the php tag
 ?>++++++++++
 ++++<!--Registration/Login (START)-->+++++++
 <?php 
 $exceptions = array('register', 'login', 'user_list', 'profile', 'edit_profile', 'upload');

あなたはそれをする必要はありません、そしてあなたはhtmlコメントを送っています。

このような問題を回避するには、常に出力バッファリングを使用して、ヘッダーの前に出力が送信されないようにすることができます。

于 2012-05-25T14:43:52.053 に答える