Autor Zpráva
norwayfishing
Profil
Zdravím,

mám web u provozovatele wed...
Na stránce používám SESSION. Při aktualizaci stránky se mi SESSION vytvoří, uloží do příslušného adresáře, ale další stránka si ho už nevyzvedne, ale vytvoří novou (prázdnou) SESSION. Tím pádem nefunguje předávání parametrů mezi stránkami.

Testovací stránky:
po vyřešení problému odstraněny z webu

Obsah page1.php:
<?php
session_start();

echo 'Welcome to page #1<br />';

$_SESSION['favcolor'] = 'green';
$_SESSION['animal']   = 'cat';
$_SESSION['time']     = time();

// Works if session cookie was accepted
echo date('Y m d H:i:s', $_SESSION['time']);
echo "<br>";
echo '<br /><a href="page2.php">page 2</a>';


// Or maybe pass along the session id, if needed
echo '<br /><a href="page2.php?' . SID . '">page 2</a>';
?>

Obsah page2.php
<?php
session_start();

echo 'Welcome to page #2<br />';

echo $_SESSION['favcolor']; // green
echo $_SESSION['animal'];   // cat
echo date('Y m d H:i:s', $_SESSION['time']);

// You may want to use SID here, like we did in page1.php
echo '<br /><a href="page1.php">page 1</a>';
?>

Výpis page1.php
Welcome to page #1
2015 09 20 10:50:38

page 2
page 2


Výpis page2.php
Welcome to page #2
1970 01 01 01:00:00
page 1


Výpis SESSION z page1.php
favcolor|s:5:"green";animal|s:3:"cat";time|i:1442739078;

Výpis SESSION z page2.php
jednak má jiné id a za druhé je prázdné (což je logické, protože se do něj nic neukládá)

Napadá Vás nějaký důvod prož to tak je? Už se s tím trápím 2 dny :-(

Díky za každé nakopnutí
PS: správce provozovatele webu se dušují že z jejich strany je vše OK. Přitom mi na localhostu vše funguje jak má. Na obou je verze php 5.3.
Davex
Profil
Vypadá to na chybu Diskuse JPW: Nejčastější potíže s PHP (FAQ) » Headers already sent….

Asi máš vypnutý výpis chyb a varování PHP, takže se to nedozvíš.
norwayfishing
Profil
Takže nejdřív zapnout hlášení chyb a na základe toho pak zjistit jestli se jedná o problém toho header?

A když to bude tou chybou, kterou si popsal, jaké je řešení?

Ptám se proto, že před znaky php nic nemám, skripty jsou uloženy v utf8 bez BOM, nic dopředu neodesílám
Davex
Profil
Já vidím v kódu ještě před textem Welcome to page prázdný řádek, který v kódu u echo není. Nicméně, když jsem se při té příležitosti díval i na HTTP hlavičku, tak tam hlavička Set-Cookie byla, takže to nebude tento problém.

Nefunguje to proto, že je v této hlavičce příznak secure, který znamená, že se má cookies odesílat pouze přes zabezpečené HTTPS, které ale na webu nepoužíváš. V konfiguraci PHP je tedy zapnuté session.cookie_secure a mělo by se to vypnout.
norwayfishing
Profil
2 Dave
No obavám se toho, že přímo do nastavení php se nedostanu, ale potvrzuje mou doměnku, že je to nastavením php.Dá se tato funkce vypnout přes .htaccess? To je totiž asi jediná možnost co mi poskytovatel dovolí.
lionel messi
Profil
norwayfishing:
Dá se tato funkce vypnout přes .htaccess?

V prípade, že môže .htaccess upravovať chod php_ini (možnosť musí byť povolená na serveri), bude fungovať nasledovné:

php_value session.cookie_secure 0
norwayfishing
Profil
lionel messi:
php_value session.cookie_secure 0

Tak php_value nelze pomocí .htaccess aplikovat. Je to zakázané, vyhazuje to pak chybu 500 :-(

Nějaké další nápady?


EDIT:
Tak teď jsem projel nastavení pih.ini na straně serveru a session.cookie_secure je nastavené na hodnotu Off
Tak jsem teda z toho už vážně jelen :-O

EDIT 2:
Asi jsem našel příčinu. wed... má ještě klientské nastavení a tam jsem měl session.cookie_secure zapnuté. Takže jsem ho teď vypnul a uvidím zda to pomohlo (bohužel musím min. 30 minut čekat)
ForestCZE
Profil
norwayfishing:
Buď si pod session_start(); přidej:

ob_start();

a nebo si v php ini najdi output_buffering a nastav ho:

output_buffering = On
Jan Tvrdík
Profil
ForestCZE:
Radíš úplné nesmysly. Přečti si celé vlákno.
ForestCZE
Profil
Jan Tvrdík:
Pokud mu to hlásí: "Headers already sent", jak jsem se tady dočetl, tak mně tento postup problém vyřešil...
norwayfishing
Profil
Tak už to funguje.
Díky všem!!!
Jak jsem psal v posledním EDIT. Chyba byla (tak jak to bývá) mezi klávesnicí a židlí.
Měl jsem v admin menu (v nastavení webu) zapnutou volbu "session.cookie_secure". Bohužel se to neprojevovalo přímo v phpinfo(). Takže pravdu měl Davex. A jemu děkuji za nakopnutí správným směrem.
Jan Tvrdík
Profil
ForestCZE:
1) Je to úplně špatný způsob, jak řešit „Headers already sent“ chybu.
2) On tu chybu vůbec nemá, měl úplně jiný problém.
ForestCZE
Profil
Jan Tvrdík:
On tu chybu vůbec nemá, měl úplně jiný problém.
To jsem potom pochopil taky. Takže konec debaty...

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: