Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem PHP - problém s přesměrováním

Ahoj, nevíte proč při přesměrování (např. header ("location: ../index.php?page=page1");) Mi to píše Cannot modify header information - headers already sent byoutput started at C:\Program Files (x86)\VertrigoServ\www\iq_test\index.php:30)...?

Přitom tam žádný výstup nemám a řádek 30 je <?php. Pod tím je vložení požadované stránky...Díky

Zde je kód indexu:

<?php
  Session_start();
?>
<!DOCTYPE html>
<html>
  <head>
  	<meta charset="utf-8">
    <title>IQ test</title>
  	<link href="css/style.css" rel="stylesheet" type="text/css" />
    <link rel="stylesheet" href="css/jquery-ui.css" />
    <script src="js/jquery-1.9.1.js"></script>
    <script src="js/jquery-ui.js"></script>
    <script src="./js/jscript.js" type="text/javascript"></script>
    <link href="images/iq.gif" rel="icon" type="image/x-icon"/> 
  </head>
  <body>
    <div id="center">
<!-- ========================= Záhlaví stránky ============================= -->    
      <div id="header">
         <a href="index.php?page=page1"><img id="logo" src="images/logo_nadpis2.gif" alt="logo" /></a>
      </div>
      <div id="content">
         <div id='leftside'>
            <div class='navlist'>
               <h4>menu:</h4><br>
               <a href='index.php?page=page1&amp;vybrany_test=1'>test1</a>  
            </div> 
         </div>
         <div id="rightside">
            <h4>Aktuality</h4>
            <h6>Počet dokončených měření:</h6>
            <p>xxx</p> 
         </div>
         <div id="middle">  
<?php                  
  if($_GET['page']=='' or $_GET['page']=='../index'){
    $_GET['page']="page1"; //kdyz nebude strana vybrana (tj bude '') tak to ulozi stranu jako strana1 jinak vezme files/nazev co vybereš, doplni priponu a includne
  }
  $stranka="pages/".$_GET['page'].".php"; 
  if(file_exists($stranka)){
      include($stranka);     
  }else{
    include("pages/chyba404.php");
  } 
?>
        </div>
        <div id="cleaner"></div>

<!-- ======================== Patička stránky ============================== -->
        <div id="footer">
          <h3>Autor stránek: <a href="mailto:vaclavsedlar@seznam.cz">Václav Sedlář</a>, vytvořeno v roce 2013</h3>		
	     </div>

	   </div>	
    </div>
  </body>
</html>  
Předmět Autor Datum
A ty vkládané stránky vypadají jak? nový
Wikan 27.02.2013 12:46
Wikan
Jak píše Wikan ještě bych jen dodal, že bych udělal menší změnu ifu if($_GET['page']=='' or $_GET['… nový
tomas.kulhanek 27.02.2013 12:56
tomas.kulhanek
ok, změním...ještě přidávám soubor page1.php což je úvodní strana a kam se také snažím přesměrovat..… nový
n.u.r.v. 27.02.2013 14:00
n.u.r.v.
Teď jsem ještě zkusil přesměrování na stránku pokus.php, kam jsem dal jen: <?php Session_start(); i… poslední
n.u.r.v. 27.02.2013 18:24
n.u.r.v.

Jak píše Wikan
ještě bych jen dodal, že bych udělal menší změnu ifu

if($_GET['page']=='' or $_GET['page']=='../index'){
    $_GET['page']="page1"; //kdyz nebude strana vybrana (tj bude '') tak to ulozi stranu jako strana1 jinak vezme files/nazev co vybereš, doplni priponu a includne
  }

osobně bych změnil na

  if(!isset($_GET['page']) && ($_GET['page']=='' || $_GET['page']=='../index')){
    $_GET['page']="page1"; //kdyz nebude strana vybrana (tj bude '') tak to ulozi stranu jako strana1 jinak vezme files/nazev co vybereš, doplni priponu a includne
  }

ok, změním...ještě přidávám soubor page1.php což je úvodní strana a kam se také snažím přesměrovat...: úvodní stránka je vlastně poslední else...ten první if je když uživatel vybere něco v menu které je napsané nahoře...

<?php
  if(session_id()==""){
    session_start();
  }
  $_SESSION['test_spusten']=-1;
  $_SESSION['$kod']=0;
  
  if(!isset($_GET['vybrany_test'])){$_GET['vybrany_test']="";}
  if($_GET['vybrany_test']!=""){//pokud uživatel vybral v menu nějakou položku...
    if(file_exists("../inc/db.php")){
      require "../inc/db.php";     // pripojime se k databazi
    }else{
      require "inc/db.php";     // pripojime se k databazi
    }
    $id_testu = $_GET['vybrany_test'];
    $vybrany_test = mysql_query("SELECT * FROM seznam_testu WHERE `seznam_testu`.`id` = '$id_testu' ");
    $pocet_testu=mysql_NumRows($vybrany_test);
    if($pocet_testu==1){//pokud test nalezen...
      if($_SESSION['$kod']==0){
        $t=Time();
        $_SESSION['$kod']=SubStr($t,(strlen($t)-5),(strlen($t)-1));//vytvoření kodu relace...
      }
      //výpis informací o vybraném testu (popis,délka,počet otázek,...):
      echo "<div id='nadpis-sekce'>".mysql_Result($vybrany_test, 0, "nazev_testu")."</div>";
      echo "<p class='text'>".mysql_Result($vybrany_test, 0, "popis_testu")."<br><br>Délka testu: ".mysql_Result($vybrany_test, 0, "delka_testu")." minut<br><br>Počet otázek: ".mysql_Result($vybrany_test, 0, "pocet_otazek")."";
      //formulář pro zadání věku a spuštění testu:
      $n=md5(rand(10000,90000));
      echo "<form id='spustit_test' name='spustit_test' method='post' action='index.php?page=spustit_test' >";
        echo "<input type='hidden' name='id_formu' value=".$n." />";
        echo "<input type='hidden' name='vybrany_test' value=".$id_testu." />";
        echo "<label>Zadejte Váš věk:</label><input id='form_vek' type='number' name='vek' required min='4' max='99'/>";
        echo "<input type='submit' value=' Spustit test! ' id='odeslat-tlacitko_start' name='spustit_test' />";
      echo "</form>";
    }else{//pokud test nenalezen, nebo nalezeno více testů se stejným id - nemůže se stát, ale pro jistotu...
      echo "<p class='text'>Test není momentálně k dispozici!</p>"; 
    }
//======================== Obsah úvodní strany =================================    
  }else{//pokud uživatel nevybral nějakou položku v menu, tak zobrazit úvodní stránku:
    //Session_Destroy();//pro jistotu zrušíme session...
    echo "<div id='nadpis-sekce'>Vítejte na stránkách xxx</div>";
    echo "<p class='text'>xxx</p>";    
  }
?>

Vlastně všechnystránky co tvořím mám tímto stylem, takže vetšinou to je styl označit část kodu, ctrl+c, ctrl+v a všude to funguje...určitě to bude nějaká blbost, ale já ji zatím nevidím...

Původně jsem si myslel že to je tím, že menu a pravý sloupec mám generovaný přes funkci a tu funkci volám v každé stránce (i v page1.php) úplně na začátku, takže jsem to vymazal a hodil zatím na pevno do indexu (stav teď), ale nepomohlo...

Teď jsem ještě zkusil přesměrování na stránku pokus.php, kam jsem dal jen:

<?php
Session_start();
  if(file_exists("../inc/db.php")){
    require "../inc/db.php";     // pripojime se k databazi
  }else{
    require "inc/db.php";     // pripojime se k databazi
  }
?>

A ta samá chyba, takže to vzniká někde v indexu...

Zpět do poradny Odpovědět na původní otázku Nahoru