2011-07-21 94 views
1

每当我的用户转到会话用户名更改下方的页面时。有人能告诉我为什么吗?我会很感激。我有一种感觉,它可能与我在开始会话后声明的while循环有关。PHP用户登录更改!

这是用户名更改的页面! (leaderboard.php)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<?php 
session_start(); 

if ($_SESSION['username']) 

    $user = "Welcome, ".$_SESSION['username']."!<br><a href='logout.php'>Logout</a>"; 
else 
    die("You must be logged in!"); 

$connect = //CONNECT TO DATABASE 


$query = "SELECT @rank:= @rank + 1 as rank, s.* FROM (SELECT username, score, wins, games FROM stats, (SELECT @rank:=0) r ORDER BY score DESC LIMIT 10) s"; 

if ($query_run = mysql_query($query)) 
{ 
//begin table 
echo "<div class='container'> 
     <table class='tableposition' border='1' width='600' cellpadding='3' cellspacing='0'> 
     <caption>OVERALL RANKINGS</caption> 
     <tr class='tablehead'> 
     <th>RANK</th> 
     <th> USERNAME</th> 
     <th>OVERALL SCORE</th> 
     <th>WIN%</th> 
     </tr>"; 
//begin loop 
    while ($query_row = mysql_fetch_assoc($query_run)) 
    { 
    $rank = $query_row['rank']; 
    $username = $query_row['username']; 
    $score = $query_row['score']; 
    $wins = $query_row['wins']; 
    $games = $query_row['games']; 
    $winpere = $wins/$games * 100; 
    $winper = number_format($winpere,1); 

    echo "<tr class='tablecontents'> 
      <td>$rank</td> 
      <td>$username</td> 
      <td>$score</td> 
      <td>$winper %</td> 
     </tr> 
     "; 
    } 
//end loop 
//close table 
echo "</table> 
     </div>"; 


}else{ 
echo mysql_error(); 
} 

//superbox file 
include('superbox.php'); 
?> 
+0

请将代码降低到最低程度,我们几乎不需要知道您的等级名称等等。使查看槽更容易,更有吸引力回答。 – Wrikken

+0

不要将整数转换为字符串('1235') – Fredrik

回答

5

我已经立即注意到需要修复的一个问题。 session_start是必须在应该由浏览器呈现的任何内容之前调用的那些方法之一。这意味着你需要做的:

<?php 
session_start(); 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<?php 

// everything else. 

虽然我不能保证是你的问题的原因,它是绝对必要的。

+0

好的,我会对这些代码进行更改。 – user830593