PHP Sessions - Uyarılar

4 Cevap php

Dün ve ben sorunu ama im hala almıyorum denemek ve düzeltmek için yana değişiklikler yaptık - Ben soru "Zaten sunucu hamleden sonra gönderilen başlıklarını php uyarı" sordu!

Ben başka bir şirket tarafından yapılmış kod üzerinde çalışıyorum! Im kendi sunucusu kapalı siteyi hareketli ve bizim üzerine koyarak ama benim sorunum oturumları yeni sunucuda sayfalar arasında çalışmıyor olmasıdır değil!

I am getting the warning: Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/com10002/public_html/bank/index.php:28) in /home/com10002/public_html/bank/includes/quickform.php on line 3

Benim index.php

include('includes/functions.php');

$activeTab = "navhome";	
$sent = false;

$title = (isset($_GET['title']))? mysql_real_escape_string($_GET['title']) : 'Home';	
$title = str_replace('-',' ', $title);

if($title != '') {	

	$sql = "SELECT * 
			FROM contents 
			WHERE name LIKE '%$title%'
			LIMIT 1";

	$result = @mysql_query($sql);		
	$row = mysql_fetch_assoc($result);		
}

//Set page title
$pagetitle = (isset($row['name']) && $title != 'Home')? ucwords($row['name']) : "Bank Charges";

HTML .. KAFA .. META VERİ VE ADI Etiketler .. ECT

('/ header.php içerir') içerir;

	<div class="textarea">
		<?php include('includes/rightcol.php'); ?>
		<div id="contentvideo" style="display:none;"></div>
		<h1><?=$row['h1'];?></h1>
		<h2><?=$row['h2'];?></h2>
		<?=$row['intro'];?>	

		<?php  include('includes/quickform.php');?>

		<?=$row['page_content'];?>			
	</div>

	<?php include('includes/subnav.php'); ?>

ve quickform.php içinde

if($_POST) {
	session_start();
	$error = false;	
	$captcha = false;
	$sent = false;
etc.......

Bu kendi kod ve şu anda kendi sunucusu üzerinde çalışıyor!

1) I have tried moving the session_start() to the top of index.php 2) Putting a session on both pages. 3) Removing white space before the session when it was in the index.php

Benim yeni sürüm sitesi www.compensation-claims.org/bank az olduğunu

Bu onlar quickform.php de oturumu koymak neden olarak benim kod im emin değil, çünkü

4 Cevap

Bu soru için listelenen bazı yanıtları göz atın:

http://stackoverflow.com/questions/622192/php-warning-headers-already-sent-in-unknown

FRİKİKLERİNDEN herhangi bir durum olabilir söz olmadığına bakın.

Hızlı ve kirli bir düzeltme böyle bir şey ayarı, output_buffering on your server, by modifying your php.ini file (and restarting Apache) aktive olacaktır:

output_buffering=4096

Hatta sadece 1 karakter zaten gönderilmiş ise HTTP başlıklarını gönderilen olamaz çünkü var sorun; Bu yönergesi kullanarak, veri 4k tamponlu olmuştur önce hiçbir şeyin gönderilmesi gerektiğini göstermektedir.

Bu genellikle .php dosyalarının başında / sonunda mevcut, ve sorun bu tür neden yeterli bazı beyaz boşluk tampon için yeterli.

Not: Bu kirli hızlı-ve-düzeltme, ama bu uygulama çalışma almak yardımcı olabilir.

Of course, the best solution would be to remove any kind of output that is sent before calling session_start / or to move the call to session_start to the beginning of your PHP script.
One thing that often helps is to remove the closing ?> tag at the end of .php files, so you don't have any white space after it, as it doesn't exist anymore (yes, that's perfectly valid)


EDIT after having a second look at the given code :

In header.php,

  • Sen (div "textarea" gibi HTML kodu) bazı çıktı yapıyoruz
  • And, only then, you are starting the session with session_start
    • bazı çıktı zaten tarayıcınıza gönderilen olduğu gibi, session_start çerez oluşturmak, ve başarısız olur.

Yani, you really need to move the session_start as high as possible: ama şu örneği için index.php in başında, o; ya da, belki, functions.php üstündeki, her yerde onu almak için ...

... Ama kesinlikle değil bazı HTML çıktısının ortasında!

* (Ne daha önce output_buffering hakkında söyledi muhtemelen bu (iyi değil) kodu önce çalışmış nedenidir)

This should solve the problem, I think...
Good luck, anyway !

Bir UNIX karakter dönüş için Windows farklı satırbaşları nasıl işleyeceğini tarayıcıya gönderilen ediliyor gibi geliyor. Başlıkları göndermeden önce gönderilen bir veya daha çok karakter bu hata oluşmasına neden olur. Alternatif diğer sunucu istemciye göndermeden önce yakalama ve herhangi bir çıktı ayrıştırma bir php.ini yönergesi tarafından etkin çıktı tamponlama olduğunu olabilir. Bu sıkıştırma nedeniyle durum olabilirdi. Ben php.ini configariton karşılaştırarak ve gzip sıkıştırma öncesinde taşımak için Apache sunucu üzerinde etkin olup olmadığını görmek öneririz.

Sen php.ini yapılandırma değerlerini ayarlamak için komut ini_set () işlevini kullanabilirsiniz.

ini_set('output_buffering', 4096);