Virhe:
Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\CMS\index.php:1) in C:\xampp\htdocs\CMS\function.php on line 7
Eli olen pähkäillyt paljon tätä ja tässä on php sivun koodi:
<?php function safe_header($str) { if (!headers_sent()) { ob_clean(); return header($str); } return header($str); } if(file_exists($dir)) { header("Location:index.php?error=0"); } /************************************* Functions Page (C) Copyright Paladin CMS Made By Aleksi "Alker" Tanskanen **************************************/ function check_login() { if(isset($_SESSION['name'])) { safe_header("Location:me.php"); } } function check_offline() { if(!isset($_SESSION['name'])) { safe_header("Location:index.php"); } } function check_online() { include("config.php"); if($fp = @fsockopen($ip, $port, $ERROR_NO, $ERROR_STR, 5)) { print "<img src=imgs/online.gif>"; fclose($fp); }else{ print "<img src=imgs/offline.gif"; } } function check_login_errors() { $errors = array("<font color=red>Username not exists</font><br/>","<font color=red>Wrong Password</font><br/>"); if(isset($_GET['error'])) { if(is_numeric($_GET['error'])) { echo $errors[$_GET['error']]; echo " "; } } } ob_flush(); ?>
Tulostat dataa ennen header-funktioita. Sivulla on siis jo tekstiä, kun koitat lähettää header-tietoja. Siirrä esimerkiksi header-funktiot koodissa ylös, hätätapauksessa ob_start-funktio sivun alkuun.
Macro itse asiassa nuo ovat includettu alkuun, mutta käytetään muualla.
Myös tyhjät rivit ja välilyönnit ovat tekstiä, joista tulee virhe. Lisäksi BOM on mahdollinen.
Mitä tarkoitat BOMilla?
http://en.wikipedia.org/wiki/Byte_order_mark
Monet editorit lisäävät tiedostojen alkuun pyytämättä ja ilmoittamatta.
Tietääkseni Notepad ei tuota tee. Tuosta välilyönneistä. Missä ne pitäisi olla, että virhe tulisi?
Ainakin Vistan Notepad tekee, jos talletat UTF8-muodossa. ANSI-muodossa tallennettuna ei tee.
Ja välilyönnit ja rivinvaihdot tietenkni haittaavat missä tahansa koodiblokkien ulkopuolella ennen headersien lähettämistä.
Tätä ihmettelen. Mitä tämä tässä virheessä tarkottaa:output started at C:\xampp\htdocs\CMS\index.php:1
Se tarkoittaa, että olet tulostanut ensimmäisen kerran tiedoston C:\xampp\htdocs\CMS\index.php rivillä 1. Tiedostossa on siis alussa tyhjä rivi tai BOM, josta aiemmin oli puhe.
tyhjää riviä siinä ei ole. Mikä editori pystyy lukemaan Bomin? Jolloin voisin sen poistaa.
alker kirjoitti:
tyhjää riviä siinä ei ole. Mikä editori pystyy lukemaan Bomin? Jolloin voisin sen poistaa.
Lataa Notepad++, avaa tiedosto sillä, valitse Tiedostomuoto -> UTF-8 (ei BOM) ja tallenna tiedosto.
Kiitosta kaikille vastanneille!
Aihe on jo aika vanha, joten et voi enää vastata siihen.