Autor Zpráva
petrarka
Profil *
Ahoj,

s PHP začínám. Sesmolil jsem níže uvedený kód, jehož účelem je, aby se pouze při prvním vstupu na mé stránky uložila url do session proměnné: $_SESSION['moje_promenna']; A tato url se vypsala. Problém je, že některé prohlížeče vypíší proměnnou jednak při prvním vstupu ale i při dalším kliku na jinou stránku, potom již ne. Co musím opravit, aby vše fungovalo, jak má?

if(isset($_SESSION['moje_promenna']) == false){  

$actual_link = "$_SERVER[REQUEST_URI]http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";


if(session_id() == '') {
    session_start();
}

    $_SESSION['moje_promenna']=$actual_link;

  
    print $_SESSION['moje_promenna'];
}
Alphard
Profil
A vy chcete tu první adresu vypisovat na všech stránkách?

session_start();
if(!isset($_SESSION['moje_promenna'])){ 
  $_SESSION['moje_promenna'] = "$_SERVER[REQUEST_URI]http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; // opravdu takhle? ta adresa vypadá divně
}
print $_SESSION['moje_promenna'];
petrarka
Profil *
Alphard:
adresu chci uložit i vypsat pouze při prvním vstupu na svůj web. Url cesta se zobrazuje správná, problém je, že se vypisuje 2x a nikoli jednou a patrně se i vícekrát ukládá, přestože má kód podmínku pro jediný vstup.
Alphard
Profil
Tak v kódu [#2] 5. řádek posuňte do podmínky. Váš původní kód [#1] zahoďte.
petrarka
Profil *
Pokud použiji doporučený kód. Na stránce se objeví zpráva, že session již běži:

Notice: A session had already been started - ignoring session_start()

session_start() - odstraním. Kód upravím do následující podoby:

if(!isset($_SESSION['moje_promenna'])){ 
  $actual_link = "$_SERVER[REQUEST_URI]http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
  $_SESSION['moje_promenna'] = $actual_link;
  print $_SESSION['moje_promenna'];
}

Objevuje se ale stále stejný problém. Výpis proměnné proměnné proběhne 2x. Jednak v okamžiku, kdy stránky otevřu prve a podruhé, kdy kliknu na nějaký odkaz, otevřu stránku v rámci webu. Vůbec nechápu, čím to může být.


řádka dvě je následující:

$actual_link = "$_SERVER[REQUEST_URI]http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";


řádku dvě se mi nedaří vložit správně.
xROAL
Profil
session_start(); by malo byť na stránke len raz a to (najlepšie) úplne na začiatku (resp. predtým, než sa pošle akýkoľvek výstup do prehliadača).

K tomu že sa podmienka vyhodnotí ako true aj keď by už podľa mňa nemala ma bohužiaľ nič nenapadá. (Možno by pomohol celý script? Ak tam okolo toho ešte nie čo je.)
Alphard
Profil
Já jsem session_start(); umístil na první místo, nečekal jsem, že byste ho měl na stránce 2x nebo měl nastavený autostart. Kdyžtak to modifikujte.

Objevuje se ale stále stejný problém. Výpis proměnné proměnné proběhne 2x. Jednak v okamžiku, kdy stránky otevřu prve a podruhé, kdy kliknu na nějaký odkaz, otevřu stránku v rámci webu. Vůbec nechápu, čím to může být.
A máte session_start() na každé stránce? Zdá se mi, že v tom máte nepořádek, v principu je ten kód správně. Jestli se ta akce opakuje, dochází k mazání sessions.
petrarka
Profil *
Díky za rady. Máte pravdu, přehlédl jsem ukončení seance.

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