اشکال در فرستادن header

elyass

Member
سلام خدمت همه دوستان
یه نیگاه به این کد بندازید
PHP:
<html>

<head>
  <title></title>
</head>

<body>
<?php

ERROR_REPORTING(-1);


$colours[0] = '#FFFF99';
$colours[1] = '#99FFFF';
$colours[2] = '#99FF99';
$colours[3] = '#FF9999';
$colours[4] = '#FF99FF';
$colours[5] = '#9999FF';
$colours[6] = '#999999';
$colours[7] = '#886800';
$colours[8] = '#004699';
$colours[9] = '#990099';

if ((isset($_SERVER['HTTP_REFERER'])) and ($_SERVER['HTTP_REFERER'] != '')) {
$keywords = "";
$url = urldecode($_SERVER['HTTP_REFERER']);
if (eregi("www\.google",$url)) {
preg_match("'(\?|&)q=(.*?)(&|$)'si", " $url ", $keywords);
$search_engine = 'Google';
}
if (eregi("www\.alltheweb",$url)) {
preg_match("'(\?|&)q=(.*?)(&|$)'si", " $url ", $keywords);
$search_engine = 'AllTheWeb';
}

if (eregi("search\.msn",$url)) {
preg_match("'(\?|&)q=(.*?)(&|$)'si", " $url ", $keywords);
$search_engine = 'MSN';
}

if ((eregi("yahoo\.com",$url)) or (eregi("search\.yahoo",$url))) {
preg_match("'(\?|&)p=(.*?)(&|$)'si", " $url ", $keywords);
$search_engine = 'Yahoo';
}
if (eregi("looksmart\.com",$url)) {
preg_match("'(\?|&)qt=(.*?)(&|$)'si", " $url ", $keywords);
$search_engine = 'Looksmart';
}
if (($keywords[2] != '') and ($keywords[2] != ' ')) {
$keywords = preg_replace('/"|\'/', '', $keywords[2]); // Remove quotes
$keyword_array = preg_split("/[\s,\+\.]+/",$keywords); // Create keyword array
}
 $j = (sizeof($keyword_array) > 10) ? 10 : sizeof($keyword_array);

 if ($j > 0) {

 $page_contents = ob_get_contents();
 ob_end_clean();

 $page_parts = explode('<body', $page_contents);
 $page_body = '<body' . $page_parts[1];

$keywords_list = '';

for ($i = 0; $i < $j; $i++) {
 //$page_contents = preg_replace('/(>)([^<]*)([^a-z]+)(' . $keyword_array[$i] . ')([^a-z]+)/i', '$1$2$3<span style="font-weight: bold; background-color: ' . $colours[$i] . ';">$4</span>$5', $page_contents);
 $page_body = str_replace('\"', '"', substr(preg_replace('#(\>(((?>([^><]+|(?R)))*)\<))#se', "preg_replace('#\b(" . $keyword_array[$i] . ")\b#i', '<span style=\"font-weight: bold; background-color: " . $colours[$i] . ";\"><b>\\\\1</b></span>', '\\0')", '>' . $page_body . '<'), 1, -1));
 $keywords_list .= $keyword_array[$i] . ', ';
 }

$notice = '<div style="border-bottom: 1px solid #000; font-size: 80%; padding: 3px;">Welcome, ' . $search_engine . ' user. The following search terms have been highlighted: ' . substr($keywords_list, 0, -2) . '<br></div>';

$page_body = eregi_replace("(<body[^>]*>)", "\\1" . $notice, $page_body);

echo $page_parts[0] . $page_body;
}
}
header('location:index.php');
?>

</body>

</html>
حالا من اگهsession_start رو قبل از ERROR_REPORTINGقرار بدم هدر ارسال نمیشه و اگه بعد از headerقرار بدم ارور میده که قبل از اینکهsession آغاز بشه شما خروجی دارید.از اساتید کسی میتونه بهم کمک کنه این مشکل رو حل کنم؟:-?
 

k2-4u

Well-Known Member
PHP:
<?php
session_start();
?>

<html>

<head>
  <title></title>
</head>

<body>
<?php
قسمت بالای کد رو اینطوری بگذار
ولی مشکل اینجاست . که
اگر session هم نگذاری صفحه به احتمال زیاد Error میده
موقع استفاده از header نباید چیزی به سمت مروگر بره
اگر مجبورین از کد جاوا اسکریپ برای انتقال استفاده کنید
 
آخرین ویرایش:

elyass

Member
PHP:
<?php
session_start();
?>

<html>

<head>
  <title></title>
</head>

<body>
<?php
قسمت بالای کد رو اینطوری بگذار
ولی مشکل اینجاست . که
اگر session هم نگذاری صفحه به احتمال زیاد error میده
موقع استفاده از header نباید چیزی به سمت مروگر بره
اگر مجبورین از کد جاوا اسکریپ برای انتقال استفاده کنید
ممنون دوست عزیز
ولی یعنی چی نباید چیزی سمت مرورگر بره؟ بیشتر توضیح میدید؟
 

k2-4u

Well-Known Member
خب یک مثال می زنم
شما در کد بالا
کد:
<html>

<head>
  <title></title>
</head>
<body>
این کد ها رو به سمت کسی که سایت رو باز می کنه فرستادین
منظورم از مرورگر .برنامه ای است که کاربر سایت رو باهاش باز می کنه مثلا Internet Explorer

شما تابع header رو باید وقتی استفاده کنید
که هیچ خروجی از فایل php شما به سمت کاربر نره

مثلا شما اینجا
کد:
echo $page_parts[0] . $page_body;
هم . خروجی به صفحه ارسال کردین
که باعث میشه تابع header
خطا بده

تابع header رو قبل از اینکه چیزی به کاربر ارسال بشه باید اجرا کنید
 

جدیدترین ارسال ها

بالا