Frågor om kodning till min hemsida!

Permalänk

Frågor om kodning till min hemsida!

Hejsan !

Jag vet att jag skapat många trådar nu så jag skapar en tråd istället nu med mina frågor ang min hemsida som jag gygger på just nu.

Jag har fått fart på min chat nu då men fortfarande har jag lite ? om det.

I chat fönstret dit man skickar sitt medelande så långst upp i det kommer dessa felmedelanden upp varför:

Warning: Cannot modify header information - headers already sent by (output started at /home/test/chat/shout.php:2) in /home/forcevis/public_html/test/chat/shout.php on line 141

Warning: Cannot modify header information - headers already sent by (output started at /home/test/chat/shout.php:2) in /home/forcevis/public_html/test/chat/shout.php on line 142

Warning: Cannot modify header information - headers already sent by (output started at /home/test/chat/shout.php:2) in /home/forcevis/public_html/test/chat/shout.php on line 143

Warning: Cannot modify header information - headers already sent by (output started at /home/test/chat/shout.php:2) in /home/test/chat/shout.php on line 144

Det roliga med detta är att detta kom efter ett tag som jag prov kört chatten alltså inte direkt. vad kan felet vara med detta?
Raderna den klagar på är dessa:

header('Cache-control: private, no-cache, must-revalidate'); header('Expires: Sat, 01 Jan 2000 00:00:00 GMT'); header('Date: Sat, 01 Jan 2000 00:00:00 GMT'); header('Pragma: no-cache');

Permalänk
Medlem

det är inte så att du gör nån typ av utskrift (något, typ blankrad, echo eller dyl.) innan du bråkar med headern? såvitt jag minns får det inte ske.

Visa signatur

fire walk with me.

Permalänk

Precis. Man får inte modifiera headerinformationen efter att utskrift skett.

Visa signatur

->Can you still feel the butterflies?<-
Jimmy Eat World | Fall Out Boy

Permalänk

Nope det finns det inte ser ut som följande:

<? error_reporting(E_WARNING); if(!isset($Name)) $Name = $_REQUEST['Name']; if(!isset($EMail)) $EMail = $_REQUEST['EMail']; if(!isset($Text)) $Text = $_REQUEST['Text']; if(!isset($HTTP_HOST)) $HTTP_HOST = $_SERVER['HTTP_HOST']; if($Name) { $shouter = $Name; setcookie('shouter', $shouter); } if($EMail) { $shouter_mail = $EMail; setcookie('shouter_mail', $shouter_mail); } if($HTTP_HOST == 'localhost' || ereg('^192\.168\.0\.[0-9]+$', $HTTP_HOST)) { include('config_local.inc.php'); } else { include('config_main.inc.php'); } include('smilies.inc'); function db_connect() { global $db_name, $db_server, $db_user, $db_pass; $status = true; if(!@mysql_connect($db_server, $db_user, $db_pass)) { echo '<font color=red>' . mysql_errno() . ': ' . mysql_error() . '</font><br>'; $status = false; } else if(!@mysql_select_db($db_name)) { echo '<font color=red>' . mysql_errno() . ': ' . mysql_error() . '</font><br>'; $status = false; } return $status; } function timeStamp($ts) { return substr($ts, 0, 4) . '-' . substr($ts, 4, 2) . '-' . substr($ts, 6, 2) . ' ' . substr($ts, 8, 2) . ':' . substr($ts, 10, 2) . ':' . substr($ts, 12); } function checkRepeats($str) { $newstr = substr($str, 0, 3); for($i = 3; $i < strlen($str); $i++) { if($str[$i] == $str[$i-1] && $str[$i] == $str[$i-2] && $str[$i] == $str[$i-3]) continue; else $newstr .= $str[$i]; } return $newstr; } function checkLongWords($str) { global $wordLength; if($wordLength && strlen($str) > $wordLength) { $words = explode(' ', $str); $str = ''; for($i = 0; $i < count($words); $i++) { if(strlen($words[$i]) > $wordLength && !eregi('&[#a-z0-9];', $words[$i])) { $str .= '<img src="angry.gif" width=31 height=20>'; } else $str .= $words[$i] . ' '; } } return $str; } function replaceNonos($str) { global $nonos; for($i = 0; $i < count($nonos); $i++) { $repl = substr('********************', 0, strlen($nonos[$i])); $word = chunk_split($nonos[$i], 1, ' *'); $str = preg_replace('/' . substr($word, 0, strlen($word) - 2) . '/i', $repl, $str); } return $str; } function format($str, $sm_code = '', $sm_img = '') { global $allowHTML; if(!$allowHTML) { $str = str_replace('>', '>', $str); $str = str_replace('<', '<', $str); } $str = eregi_replace('http://', '', $str); $str = checkLongWords($str); $str = checkRepeats($str); $str = replaceNonos($str); if($sm_code && $sm_img) $str = str_replace($sm_code, $sm_img, $str); return $str; } if(db_connect()) { $error = ''; header('Cache-control: private, no-cache, must-revalidate'); header('Expires: Sat, 01 Jan 2000 00:00:00 GMT'); header('Date: Sat, 01 Jan 2000 00:00:00 GMT'); header('Pragma: no-cache'); ?>

Men detta blev efter ett tag alltså inte från början när jag test körde den.

Permalänk
Medlem

du har ju echo i db_connect? den anropas väl innan headern ändras?
edit: ah, det var ju för errors
inte nån include som har nått opassande? vet inte hur det är med cookies eller om error_reporting kan påverka, skulle dock inte förvåna mig

Visa signatur

fire walk with me.

Permalänk

jag vet inte.
Du kan få hela kodningen för sidan :

[code]

<?
error_reporting(E_WARNING);

if(!isset($Name)) $Name = $_REQUEST['Name'];
if(!isset($EMail)) $EMail = $_REQUEST['EMail'];
if(!isset($Text)) $Text = $_REQUEST['Text'];

if(!isset($HTTP_HOST)) $HTTP_HOST = $_SERVER['HTTP_HOST'];

if($Name) {
$shouter = $Name;
setcookie('shouter', $shouter);
}
if($EMail) {
$shouter_mail = $EMail;
setcookie('shouter_mail', $shouter_mail);
}

if($HTTP_HOST == 'localhost' || ereg('^192\.168\.0\.[0-9]+$', $HTTP_HOST)) {
include('config_local.inc.php');
}
else {
include('config_main.inc.php');
}
include('smilies.inc');

function db_connect() {
global $db_name, $db_server, $db_user, $db_pass;

$status = true;
if(!@mysql_connect($db_server, $db_user, $db_pass)) {
echo '<font color=red>' . mysql_errno() . ': ' . mysql_error() . '</font><br>';
$status = false;
}
else if(!@mysql_select_db($db_name)) {
echo '<font color=red>' . mysql_errno() . ': ' . mysql_error() . '</font><br>';
$status = false;
}
return $status;
}

function timeStamp($ts) {
return substr($ts, 0, 4) . '-' . substr($ts, 4, 2) . '-' . substr($ts, 6, 2) . ' ' . substr($ts, 8, 2) . ':' . substr($ts, 10, 2) . ':' . substr($ts, 12);
}

function checkRepeats($str) {
$newstr = substr($str, 0, 3);

for($i = 3; $i < strlen($str); $i++) {
if($str[$i] == $str[$i-1] && $str[$i] == $str[$i-2] && $str[$i] == $str[$i-3]) continue;
else $newstr .= $str[$i];
}
return $newstr;
}

function checkLongWords($str) {
global $wordLength;

if($wordLength && strlen($str) > $wordLength) {
$words = explode(' ', $str);
$str = '';

for($i = 0; $i < count($words); $i++) {
if(strlen($words[$i]) > $wordLength && !eregi('&[#a-z0-9];', $words[$i])) {
$str .= '<img src="angry.gif" width=31 height=20>';
}
else $str .= $words[$i] . ' ';
}
}
return $str;
}

function replaceNonos($str) {
global $nonos;

for($i = 0; $i < count($nonos); $i++) {
$repl = substr('********************', 0, strlen($nonos[$i]));
$word = chunk_split($nonos[$i], 1, ' *');
$str = preg_replace('/' . substr($word, 0, strlen($word) - 2) . '/i', $repl, $str);
}
return $str;
}

function format($str, $sm_code = '', $sm_img = '') {
global $allowHTML;

if(!$allowHTML) {
$str = str_replace('>', '>', $str);
$str = str_replace('<', '<', $str);
}
$str = eregi_replace('http://', '', $str);
$str = checkLongWords($str);
$str = checkRepeats($str);
$str = replaceNonos($str);
if($sm_code && $sm_img) $str = str_replace($sm_code, $sm_img, $str);

return $str;
}

if(db_connect()) {
$error = '';

header('Cache-control: private, no-cache, must-revalidate');
header('Expires: Sat, 01 Jan 2000 00:00:00 GMT');
header('Date: Sat, 01 Jan 2000 00:00:00 GMT');
header('Pragma: no-cache');
?>
<html>
<head>
<meta http-equiv="refresh" content="<? echo $boxRefresh; ?>; URL=<? echo basename($PHP_SELF); ?>">
<title>Output</title>
<?
$messageOrder = strtoupper($messageOrder);
if($messageOrder != 'ASC' && $messageOrder != 'DESC') $messageOrder = 'DESC';

if($messageOrder == 'ASC') {
?>
<script language="JavaScript"> <!--
function autoscroll() {
if(document.body && document.body.offsetHeight) window.scrollBy(0, document.body.offsetHeight);
else if(window.innerHeight) window.scrollBy(0, window.innerHeight);
else if(document.height) window.scrollBy(0, document.height);
}
window.onload = autoscroll;
//--> </script>
<?
}
?>
<link rel="stylesheet" href="shoutbox.css" type="text/css">
</head>
<body marginwidth=0 marginheight=0 topmargin=0 leftmargin=0>
<?
if($Text) {
$tstamp = date('YmdHis');
$sql = "INSERT INTO $tbl_name ($fld_timestamp, $fld_name, $fld_email, $fld_text) ";
$sql .= "VALUES ('$tstamp', '$Name', '$EMail', '$Text')";
if(!mysql_query($sql)) $error .= mysql_error() . '<br>';

$sql = "SELECT MAX($fld_id) AS maxID FROM $tbl_name";
$id = mysql_result(mysql_query($sql), 'maxID') - $boxEntries;
if($id > 0) {
$sql = "DELETE FROM $tbl_name WHERE $fld_id<=$id";
if(!mysql_query($sql)) $error .= mysql_error() . '<br>';
}
}
?>
<table border=0 cellspacing=0 cellpadding=2 width=100%><tr>
<td>
<?
if($error) echo "<font color=red>$error</font><br>";
?>
<table border=0 cellspacing=0 cellpadding=0 width=100%>
<?
$sm_code = $sm_img = array();

while(list($code, $img) = each($sm)) {
$sm_code[] = $code;
$sm_img[] = "<img src='smilies/$img' width=15 height=15 align=top>";
}

$sql = "SELECT * FROM $tbl_name ORDER BY $fld_timestamp $messageOrder LIMIT $boxEntries";
$result = mysql_query($sql);

while($row = mysql_fetch_array($result)) {
$tstamp = timeStamp($row[$fld_timestamp]);
$name = $row[$fld_name] ? format($row[$fld_name]) : '???';
$email = $row[$fld_email];
$text = format($row[$fld_text], $sm_code, $sm_img);
$bgcolor = ($bgcolor != '#6C8EC9') ? '#6C8EC9' : '#6780AB';
?>
<tr bgcolor=<? echo $bgcolor; ?>>
<td class="cssSmall" align=right><font color=#A0A0A0><? echo $tstamp; ?></font></td>
</tr><tr bgcolor=<? echo $bgcolor; ?>>
<td class="cssShoutText"><? if($email) echo '<a href="mailto:' . $email . '">'; ?>
<b><? echo $name; ?>:</b><? if($email) echo '</a>'; ?> <? echo $text; ?></td>
</tr>
<?
}
mysql_close();
?>
</table>
</td>
</tr></table>
</body>
</html>
<?
}
?>

Så ser den ut massa skit men se om ni kan hitta varför det felmedelandet kommer fram. Väldigt tacksam om ni hittar det !

Permalänk
Medlem

[code]

<?
error_reporti

har du inte ett enterslag där i början eller har du det här?

Permalänk

Menar du om jag har enter slag efter

<?
error_reporti

menar du ?

Permalänk
Medlem

Nej före <? ser det ut som när du har klistrat in iaf eftersom du inte börjat din kod direkt efter [code] utan har en blankrad där?

Det finns en anledning till att du får headers already sent och det är att du redan har skrivit ut någonting innan, må det vara bara ett mellanslag så räcker det, kolla igenom alla dina filer som inkluderas innan du försöker skicka dina headers, titta speciellt igenom dina includes och se så att dom inte börjar med ett mellanslag eller slutar med ett mellanslag...

Permalänk

Rosenson det verkade fungera när jag tog bort mellan rum. Tackar för hjälpen !
Jag undrar nu i chaten så sparas ju inläggen man skrivit. Kan man göra så att inläggen raderas efter ett visst antal timmar?
Lägger man det i mysql databasen eller lägger man det i någon av php filerna ?