[ pisac @ 29.03.2016. 21:31 ] @
Za redirekciju sa jedne na drugu stranu koristim header("location:$url");

Međutim, postoji problem. U donjem kodu, kada je slika prikazana (ukoliko je učitana u sesiju) onda dotična header redirekcija ne radi uz poruku u logovima: "Cannot modify header information - headers already sent by (output started at ..." i pokazuje upravo na liniju u kojoj je slika prikazana (<img height=50 src="data:image/jpeg;base64,<?php echo($_SESSION['pic'])?>">)

Code:

<form name="odjava" method="POST" action="_out.php">
    <table border="0" cellpadding="0" cellspacing="0" align="right" width="350">
        <tr>
            <td>
                <table border="0" cellpadding="0" cellspacing="0" align="right" width="350">
                    <tr>
                        <td align="right">
                            <font color="#0000FF">
                            <a href="edit_contact.php">
                                <b><big><?php echo("$_SESSION[email]")?></big></b>
                            </a>
                        </td>
                        <td align="right">
                            <small><?php echo($_SESSION['owner_id'])?>&nbsp;&nbsp;</small>
                        </td>
                    </tr>
                </table>
            </td>
<?php if($_SESSION['pic']){ ?>
            <td>
                <img height=50 src="data:image/jpeg;base64,<?php echo($_SESSION['pic'])?>">
            </td>
<?php }?>
        </tr>
    </table>
</form>


Mene zanima zašto je "headers already sent by" samo kada se prikaže slika, a ne i kada se prikazuju ostali podaci, i kako to rešiti?

Da dodam da sam zaobilazno to zakrpio sa <meta http-equiv='refresh' content='0; url=... ali bih voleo neko rešenje koje bi radilo i sa header("location... jer je takva redirekcija mnogo brža.
[ Burgos @ 29.03.2016. 23:13 ] @
HTTP prvo šalje headere, pa onda body. Ako pošalješ u telu, podrazumevani headeri će automatski biti poslati. Tvoj header koji naknadno pošalješ ne bi bio protumačen kao header, već kao deo poruke (bukvalno bi dobio Location: gdegod u telu).

Gledajući tvoj kod, ne vidim ništa što bi ukazalo na grešku, verovatno je problem negde pre poziva `header` (koji mora biti pre bilo kakvog outputa). Možeš li da pokažeš taj deo koda, od početka, pa do header poziva?
[ pisac @ 30.03.2016. 00:04 ] @
Pa redirekciju pozivam sa mnogo mesta i sa mnogo strana. Svima njima je zajedničko to da prvo includujem stranu sa kodom koji sam dao (to je zaglavlje koje se pokazuje na svakoj strani, piše korisničko ime i slika, itd... malo sam skratio jer je duže), pa onda radim, računam i upoređujem nešto na trenutnoj php strani (ništa novo ne prikazujem) i ako je potrebno onda uradim redirekciju tako što pozovem funkciju

Code:

function redir($redir="")
{
    if($redir=="") $redir="index.php";
    header("location:$redir");
    echo("<html><body><meta http-equiv='refresh' content='0; url=".$redir."'><a href='".$redir."'>".$redir."</a></body></html>");
}


header je primarni način redirekcije, a ukoliko on ne odradi posao onda se aktivira http-equiv (a ukoliko i on ne odradi onda ostaje link). E fora je u tome što kada god je prikazana slika sa onog koda koji sam ranije naveo, onda header ne radi već se aktivira http-equiv, a kada nije prikazana slika onda header odradi posao sam.

Znači samo deo sa prikazom slike menja situaciju, odnosno kao da samo taj deo šalje neki heder.
Code:

<?php if($_SESSION['pic']){ ?>
            <td>
                <img height=50 src="data:image/jpeg;base64,<?php echo($_SESSION['pic'])?>">
            </td>
<?php }?>


Što me zbunjuje.
[ VladaSu @ 30.03.2016. 14:13 ] @
Uvek na kraju radis prikaz podataka a prvo ide ucitavanje i obrada.
[ pisac @ 30.03.2016. 19:19 ] @
To bi moglo biti rešenje, ali moje čuđenje je zašto se tek slanjem slike pojavljuje "headers already sent by...", odnosno zašto sve radi ako se ne pošalje slika?
[ VladaSu @ 30.03.2016. 19:46 ] @
Mozda jer slika je unutar html koda a ne poseban fajl i sa slikom se posalje neki header. Ne znam, nisam probao, samo pretpostavljam.
[ pisac @ 30.03.2016. 22:29 ] @
Hm, da, rešio sam (za sada) problem tako što sam promenio način prikazivanja slike:

Code:

<img height=50 src="pic.php?id=<?php echo($_SESSION['id'])?>">


Sad je slika u sesiji višak pa ću je obrisati.