PHP Fehler aber code korrekt?

strex

Erfahrenes Mitglied
Ich habe folgendes geproggt das einige Daten aus der DB liest. Das ganze passiert auf smarty.

Nun hat es einige Wochen funktioniert nun zeigt es mir folgende Fehler an:

Code:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/htdocs/web1/html/game/u.php:11) in /home/htdocs/web1/html/game/u.php on line 26

Das script:

Code:
<? 
  error_reporting(E_ALL); 
  require("config.inc.php"); 
  $PATH=$CONFIG['internal']['path']; 
  require("$PATH/mysql.inc.php"); 
  require("$PATH/config.inc.php"); 

  define('SMARTY_DIR', $CONFIG['internal']['smarty_dir']); 
  require(SMARTY_DIR.'Smarty.class.php'); 

  $smarty = new Smarty; 
  $smarty->assign("CONFIG_game_name",$CONFIG["game"]["name"]); 
  $smarty->assign("CONFIG_internal_serverpath",$CONFIG["internal"]["serverpath"]); 
  
  ini_set('session.save_handler', 'files');
  session_start(); 
  //print_r($_SESSION); 
  if(isset($_SESSION["id"])) 
  { 
    require('resbar.inc.php'); 
    if(!isset($db)) 
    { 
      $db = new cl_extended_database; 
    } 
    if(!isset($_GET['c'])) 
    { 
      echo "Error in ".__FILE__." : ".__LINE__.": \$_GET['c'] not set!<br>"; 
      die(); 
    } 
    $xid    =    $db->user_get_id($_GET['c']); 
    $db->query("SELECT punkte FROM user_statistik WHERE userid='$xid' AND art='all';"); 
    $db->err(); 
    $row   =   $db->fetch(); 
    $xpunkte=   $row["punkte"]; 

      $db->reinit(); 
      $db->query("SELECT * FROM planets WHERE userid='$xid';"); 
      $db->err(); 
     $null   =   0; 
    
      while($row=$db->fetch()) 
    { 
       $xplan[$null]["gal"]   =   $row["gal"]; 
       $xplan[$null]["sys"]   =   $row["sys"]; 
       $xplan[$null]["plan"]   =   $row["plan"]; 
       $xplan[$null]["pname"]   =   $row["pname"]; 
       $null++; 
    } 

   $smarty->assign("xall",$xpunkte); 
   $smarty->assign("planeten",$xplan); 
   $smarty->assign("admin",$CONFIG['game']['admin']); 
   $smarty->assign("planet_count",$db->planet_count($xid)); 
   $smarty->assign("c",$_GET['c']); 
   $smarty->display("u.thtml"); 
  } 
  else 
  { 
    $smarty->display("login_warning.thtml"); 
  } 
  
?>

Ausserdem bekomme ich es nicht hin, dass diese Querry auch getätigt wird. "SELECT allyid FROM ally_members WHERE userid='$xid';" Bei jedem Versuch dies noch eizubaun bekomme ich immer wieder Fehler.

Wie bekomme ich dies hinein?

Danke für eure Antworten schon mal!
 
Der Antwort-Header kann nach dem Senden des Antwortkörpers nicht mehr geändert werden. Sprich: vor Aufruf der session_start()-Funktion darf es keinerlei Ausgabe geben – Leerzeichen, Zeilenumbrüche, etc. eingeschlossen.
 
Also das mit dem session start kapier ich einfach nicht. Davor ist ja nichts was stören könnte oder sieht irgendjemand etwas? Ausserdem hatte es ja auch wunderbar funktioniert und geändert wurde im code nichts mehr.

Also ich habe verswucht dieses so zulösen, leider wird nichts im template ausgegeben obwohl dies stimmen müsste.

Code:
<? 
  error_reporting(E_ALL); 
  require("config.inc.php"); 
  $PATH=$CONFIG['internal']['path']; 
  require("$PATH/mysql.inc.php"); 
  require("$PATH/config.inc.php"); 

  define('SMARTY_DIR', $CONFIG['internal']['smarty_dir']); 
  require(SMARTY_DIR.'Smarty.class.php'); 

  $smarty = new Smarty; 
  $smarty->assign("CONFIG_game_name",$CONFIG["game"]["name"]); 
  $smarty->assign("CONFIG_internal_serverpath",$CONFIG["internal"]["serverpath"]); 
  
  session_start(); 
  //print_r($_SESSION); 
  if(isset($_SESSION["id"])) 
  { 
    require('resbar.inc.php'); 
    if(!isset($db)) 
    { 
      $db = new cl_extended_database; 
    } 
    if(!isset($_GET['c'])) 
    { 
      echo "Error in ".__FILE__." : ".__LINE__.": \$_GET['c'] not set!<br>"; 
      die(); 
    } 
    $xid    =    $db->user_get_id($_GET['c']); 
    $db->query("SELECT punkte FROM user_statistik WHERE userid='$xid' AND art='all';"); 
    $db->err(); 
    $row   =   $db->fetch(); 
    $xpunkte=   $row["punkte"]; 
	
	$xid    =    $db->user_get_id($_GET['c']); 
    $db->query("SELECT allyid FROM ally_members WHERE userid='$xid';"); 
    $db->err(); 
    $row   =   $db->fetch(); 
    $xallyid=   $row["allyid"]; 

      $db->reinit(); 
      $db->query("SELECT * FROM planets WHERE userid='$xid';"); 
      $db->err(); 
     $null   =   0; 
	 
      while($row=$db->fetch()) 
    { 

       $xplan[$null]["gal"]   =   $row["gal"]; 
       $xplan[$null]["sys"]   =   $row["sys"]; 
       $xplan[$null]["plan"]   =   $row["plan"]; 
       $xplan[$null]["pname"]   =   $row["pname"]; 
       $null++; 

    } 
	
   $smarty->assign("xall",$xpunkte); 
   $smarty->assign("allyid",$allyidu);
   $smarty->assign("planeten",$xplan); 
   $smarty->assign("admin",$CONFIG['game']['admin']); 
   $smarty->assign("planet_count",$db->planet_count($xid)); 
   $smarty->assign("c",$_GET['c']); 
   $smarty->display("u.thtml"); 
  } 
  else 
  { 
    $smarty->display("login_warning.thtml"); 
  } 
  
?>
 
NomadSoul hat gesagt.:
Setzte session_start einfach in die oberste Zeile in deinem Script, auch VOR den includes.


Danke das hat geklappt aber bei den anderne scripts klappt es auch so wie ich das gemacht habe.

edit:// wenn ich wie oben nun die allyid auslesen möchte wird zwar kein Fehler angezeigt aber es wird nichts im template angegeben und der platzhalter ist auch richtig.
 
Zuletzt bearbeitet:
Dieser hier

Code:
$xid    =    $db->user_get_id($_GET['c']); 
    $db->query("SELECT punkte FROM user_statistik WHERE userid='$xid' AND art='all';"); 
    $db->err(); 
    $row   =   $db->fetch(); 
    $xpunkte=   $row["punkte"];

und

Code:
$db->reinit(); 
      $db->query("SELECT * FROM planets WHERE userid='$xid';"); 
      $db->err(); 
     $null   =   0;

wird alles Korrekt gelesen und Ausgegeben. Also GET wird schonmal richtig gesetzt. Also an diesem kann es ja nich liegen. Hat irgenjemand noch eine Idee, wäre sehr dankbar.
 
Zurück