Autor Zpráva
ananasovapasta
Profil *
nevíte jak opravit tuto chybu :

session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /storage/www1/1/site54011/wwwroot/menu.php:1)

v kódu:
<?php 
require 'FW/hr.php';
require 'FW/lc.php';
lc::loginControl();
?>
ananasovapasta
Profil *
a třída lc :

<?php
class lc{
	/**
	 * lc::loginControl()
	 * zjisťuje zda uživatel je přihlášen, pokud ne přesune uživatele na stránku s přihlašovacím formulářem
	 */
	public static function loginControl(){
		session_start();
		if(isset($_SESSION['login'])){
			if($_SESSION['login']=='O'||$_SESSION['login']=='P'||$_SESSION['login']=='M'){
				
			}else{
				header('Location:index.php');
			}
		}else{
			header('Location:index.php');
		}
	}
}
?>
Alphard
Profil
Nejčastější potíže s PHP (FAQ)
BOM nebo jiný výstup (mezera, chybová hláška, ...)
ananasovapasta
Profil *
Alphard:
BOM nebo jiný výstup (mezera, chybová hláška, ...)

bohužel odpovědi nerozumím , nevím co má tato chybová hláška společného s BOM
Alphard
Profil
ananasovapasta:
bohužel odpovědi nerozumím , nevím co má tato chybová hláška společného s BOM
A do toho FAQ jste se podíval?
ananasovapasta
Profil *
ano, ale nic o té chybě tam nevidím
Alphard
Profil
Jestli nic z tohoto nepomohlo, tak fajn, budeme to řešit dál, ale musíte to napsat.

headers already sent...
Pokud už byl generovaný nějaký výstup, tak už nelze používat funkce header(), setcookie() ani session_start(). Jejich volání skončí chybou.
Přesvědčete se, že před začátkem <?php ?> není žádný text (ani mezera) a že nebylo nic odesláno třeba funkcemi jako echo nebo print.
Pokud je text v UTF-8, tím výstupem může být i tzv. BOM signatura, vizte výše zmíněný Divný znak (čtvereček)....

Divný znak (čtvereček) na začátku includovaného souboru v UTF-8
Soubor v kódování UTF-8 a UTF-16 může začínat takzvanou BOM signaturou. V případě UTF-8 je sice zcela zbytečná, přesto ji některé editory vkládají.
Řešením je ve svém editoru nastavit, aby BOM nevkládal, nebo to nějakým způsobem odmazat. V některých editorech to nelze.
Vizte relevantní článek (maciweb.net). Odkaz najdete na původní stránce.
A stručný popis UTF-8
ananasovapasta
Profil *
no zadny znak pred <?php není a ten čtvereček by se zobrazil na výstupu ne?
takze bohuzel vazne nevim v cem je problem ...
Alphard
Profil
A v menu.php je jenom tohle?
<?php 
require 'FW/hr.php'; 
require 'FW/lc.php'; 
lc::loginControl(); 
?>


Upravuji, já bych session_start() nedával do metody. Dejte ho na začátek před všechny include a třeba bude po problému.
ananasovapasta
Profil *
odebrání z loginControl metody session_start() a přidání session_start na začátek před requiry vede k této chybě :



Smyčka při přesměrování

Server přesměrovává požadavky na tuto adresu sám na sebe a to takovým způsobem, které zabraňují jejich dokončení.

* Tento problém může být způsoben zakázáním nebo odmítnutím
cookies.


a menu.php obsahuje

<?php
session_start();
require 'FW/hr.php';
require 'FW/lc.php';
lc::loginControl();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html>
<head>
<title></title>
<link rel='StyleSheet' href="css/menu.css" type="text/css" >
</head>
<body>
<table>
            <tr>
                <td>
	    
	    <table >
	      <?php
			hr::echoEmployeeMenuSection();	
			hr::echoDepartmentMenuSection();
					?>
            <tr>
                <td>
                    <img alt='' src='images/gear_64.png' ></td>
                <td>
                    <a href='roles.php'  target='content'>Roles</a></td>
            </tr>
            <tr>
                <td>
                    </td>
                <td>
                    <a href='addRoleForm.php' target='content'>+ ADD</a></td>
            </tr>
             <tr>
                <td>
                    </td>
                <td>
                    <a href='plannedRoles.php' target='content'>+ PLAN</a></td>
            </tr>
             <tr>
                <td>
                <img alt="" src="images/block_64.png" >
                    </td>
                <td>
                    <a href='logout.php'  target="_parent">LOGOUT</a></td>
            </tr>
        </table>
	    
	            </td>
                <td>
                    &nbsp;</td>
            </tr>
        </table>
        </body>
		</html>


Moderátor Majkl578: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
ananasovapasta
Profil *
a co je jeste divny, ze na nejakej strankach mi to tu chybu nehlasi ale na nekterych jo, ale kazda zacina stejne ..
Majkl578
Profil
Smyčka v nejčastěji přesměrování znamená, že script přesměrovává sám na sebe a tím tvoří nekonečnou smyčku. Může to být způsobené například použitím header('Location: index.php') v souboru index.php na místě, kde se funkce vždy zavolá.
nightfish
Profil
ananasovapasta:
no zadny znak pred <?php není a ten čtvereček by se zobrazil na výstupu ne?
takze bohuzel vazne nevim v cem je problem ...
PHP tvrdí, že je... takže jaký používáš editor?
ananasovapasta
Profil *
nightfish:
PHP tvrdí, že je... takže jaký používáš editor?
phpDesigner
ananasovapasta
Profil *
tak už se mi to podařilo rozchodit, díky moc za pomoc :)
pro každého kdo dělá v php designeru je to file-> file encoding

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0