Asi nefungují Session
Ahoj,
na localhostu jsem si udělat login systém, kde po přihlášení mám: $_SESSION[‚username‘] = $name; header(‚location:home.php‘);
a na stránce home page: <?php echo $_SESSION[‚username‘]?> + nad kodem v php:
<?php
session_start();
if(!isset($_SESSION[‚username‘])){
header(‚location:login.php‘);
}
?>
no jméno mi to nevypisuje, ani když jsem si dal echo $_SESSION[‚username‘]; v souboru, kde dělám po přihlášení.
pak mi tím pádem nefunguje ani php kód nad html a když se přihlásím, tak mě to vrátí zpátky, protože to nenajde tu session.
Díval jsem se na stackoverflow a tam psali: Povolujete soubory cookie ze vzdálené domény? PHP je obvykle nakonfigurováno tak, aby ukládalo vaše session_id v cookie na vašem počítači, takže pokud nepovolíte cookies z vaší domény webhostingu, session_id nebude uložen z login.php, a proto jej nelze vyvolat na index.php
a nevím, jestli je zde v konfiguraci php potřeba něco zapnout nebo vypnout, nebo jinou verzi php než 7.3?
Budu rád za každou pomoc 🙂
8 Answers
Ano, už to jede, stačilo vypnout session secure v konfiguraci php, to jsem přesně potřeboval vědět, jestli zde nemůže být něco špatně a bylo. Děkuji za vyřešení problému.
Dobrý den,
ten kod co jsem Vám zaslal jsou tři soubory a tři platné kody.
To, že se Vám zřejmě do session proměnné neukládají data by mohlo znamenat, že se ta daná věc vůbec nevyvolává. Pokud do chcete používat, musí to nejprve nějaký script reálně otevřít, aby se ta proměnná mohla uložit a následně teprve bude viditelná v ostatních souborech. Pokud si výše uvedené vzorové tři soubory umístíe na Váš webhosting, můžete si jednoduše nasimulovat jak toto funguje. Login musí být vyvolán jako první, aby se proměnná uložila a byla vidět na ostatních stránkách: index, home…
pokud budete mít v login
$_SESSION
[
'ahoj'
] =
'wedos'
;
neznamená to, že je to automaticky uloženo také v home či index, musí se nejprve vyvolat login aby se to řádně uložilo a mohlo se to zobrazit v index či home.
w_home.php
<?php session_start(); echo session_id(); echo '<br>'; echo $_SESSION['ahoj'];
w_index.php
<?php session_start(); echo session_id(); echo '<br>'; echo $_SESSION['ahoj'];
w_login.php
<?php session_start(); $_SESSION['ahoj'] = 'wedos'; header('Location: http://wedos.gamelab.cz/w_home.php');
do w_index.php jsem navíc umístil phpinfo(); , aby jste si případně mohl zkontrolovat rozdílnost verzí já v rámci debugu pracoval s v.7.1.
V tomto případě je to plně funkční
Dobrý den,
jediný rozdíl, který vidím je, že na tomto webhostingu máte v konfiguraci PHP vypnutý parametr session_use_only_cookies. Bohužel upřimně nevím, zda na to tento parametr může mít vliv (spíše ne).
Ostatní proměnné se Vám vypisují? Nemůže být problém ve formuláři? Případně si zkuste script na jiném webhostingu.
Dobrý den,
prosím o upřesnění na kterém z Vašich hostingů se toto děje?
a když si ji vypíšu, tak se nevypíše, ani když místo $name dát např: „ahoj“;
na stránce validation.php mám
a v home page home.php mám
a jak říkám, na localhostu mi to šlo, tak právě nevím, proč to nejde zde