Tervehdys,
Ongelmani on lähinnäi seuraavanlainen:
Index.php:ssä on includettu kirjaudu.php ja uloskirjaudu.php tiedostoja, joissa molemmissa on header("Refresh: 0; url=index.php"); funktio.
Ongelma ilmeisesti piileekin siinä, että includet ovat keskellä index.php koodia ja uudelleen ohjausta ei ilmeisesti siksi tapahdu? Kokeilin exit(); - funktiota / session_write_close(); - funktiota ennen uudelleenohjausta, mutta index.php sivua ei sitten suoriteta loppuun, eikä se voi näinkään onnistua!
Mikä auttaisi pulmaan?
Headerit pitää asettaa aina heti ensimmäisenä eli ennen niitä ei saa olla mitään muuta tulostusta.
Esimerkki uloskirjaudu.php , mutta se ei kuitenkaan uudelleenohjaa minnekkään.
header("Refresh: 0; url=frontpage.html");
session_unregister('sessio_kayttajatunnus');
session_destroy();
session_write_close();
Toimii kyllä jos korvaan header -funktion linkillä, joka ohjaa etusivulle ihmeellistä.. Lisäksi huomasin jos napautan kirjaudu ulos linkkiä kahdesti, niin uloskirjautuminen onnistuu?
Ilmeisesti toi include 'uloskirjaudu.php'; pitäisi korvata jollain muulla kuin include käskyllä?
Öh... Siis haluat että se tuhoaa sessiot ja ohjaa sitten etusivulle? Laita ensin nuo sessiojutut ja sitten header('Location: [sivu]');
Sitäkin tuli kokeiltua, mutta tuloksetta.
<?php $_SESSION = array(); session_destroy(); $domain = $_SERVER[ 'SERVER_NAME' ]; header( 'Location: http://' . $domain ); ?>
Frameworkeilla taas helpompaa.
Eli tosiaan nämä ohjauksen näyttävät toimivan
ob_start(); ob_end_flush(); avulla, mutta ilmeisesti sessiot tuhoutuu samalla? Eli olisiko järkevämpää tehdä joku funktio ihan sivun alkuun ja sinne tehdä kaikki uudellenohjaukset vai mitenkä? Ei nyt ihan vielä mennyt jakeluun tämä homma :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.