Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem PHP - Problém s platnosťou premennej

V PHP mám súbor s týmto "diagramom":

index.php
    .
    .
 include ---> head.php 
    .             .
    .       function head()
    .             {
  head()          .
    .          include ---> show.php
    .             .            .
    .             }       function show()
    .            ---           {
    .                    zobrazenie $_SESSION['lang']
    .                          }
    .                    nastavenie $_SESIION['lang']
    .                        show()
    .                   
 include ---> lang.php
    .            .
    .            .
    .         formulár
   ---

Vo formulári sa nachádzajú tlačítka, ktoré nastavia hodnotu premennej $language. Podľa hodnoty tejto premennej sa v show.php nastaví hodnota $_SESSION['lang']. Problém je v tom, že hodnota $language je v show.php nedefinovaná. Ale ak dám include"show.php" do index.php, tak je hodnota $language v poriadku. Problém je v tom, že musím to použiť tak, ako to je nakreslené a teda buď rozšíriť platnosť premennej $language na celú reťaz, lenže to by znamenalo prepisovať niekoľko desiatok súborov pravdepodobne. Lepšie riešenie je nastaviť $_SESSION['lang'] už za formulárom. Formulár funguje tak, že jedinou jeho akciou je nastavenie hodnoty $language a potom sa znovunačíta index.php. $language je vlastne skrytý prvok na formulári. Potrebujem poradiť ako vo formulári nastaviť session a tým odbúrať potrebu premennej.

Předmět Autor Datum
no moc tomu nerozumím, ale nešlo yb hodnotu z toho formuláře uložit místo do $language přímo do té $…
peca 14.08.2007 19:40
peca
Takto je definovaný formulár (je tu len jedno tlačítko): <form name="send" id="send" method="post">…
msx. 14.08.2007 20:45
msx.
zkus toto: if($_POST['language']) $_SESSION['lang'] = $_POST['language'];
peca 14.08.2007 20:57
peca
Lenže neviem, kam s tým. Z formulárov mám guláš.
msx. 14.08.2007 21:45
msx.
1. možnosť: Použiť globálnu premennú (global) - na začiatku každej funkcie, ktorá pracuje s globálno…
los 14.08.2007 22:38
los
2. Ten riadok treba na začiatok index.php?
msx. 14.08.2007 22:47
msx.
Áno.
los 14.08.2007 22:52
los
No skúšam to doma, ale nefunguje to. Skúsim v robote, tam to hádam pôjde. Mám to tu aj tak nejaké ro… poslední
msx. 14.08.2007 23:00
msx.

Takto je definovaný formulár (je tu len jedno tlačítko):

<form name="send" id="send" method="post">
        <input type="hidden" name="language" id="language">
</form>
<table border=0 cellpading=0 cellspacing=0 bordercolor=gray>
  <tr>
    <td><center>
	  <?
        echo"<img src='".$path."images/en0.gif' border='0'><br><br>"
	  ?>
    </center></td>
  </tr>
  <tr>
    <td><center>
	  <?
        echo"<input name=\"en_\" type=\"button\" value=\"Anglicky\" onclick=\"send.language.value = this.name; send.submit();\" >"  
	  ?>
    </center></td>
  </tr>
</table>

Ako to mám urobiť pre session?

1. možnosť: Použiť globálnu premennú (global) - na začiatku každej funkcie, ktorá pracuje s globálnou premennou language, napísať global $language.

2. možnosť: Na začiatku priradiť tú hodnotu do session:

if (isset($_POST["language"]))
  $_SESSION["lang"] = $_POST["language"];

3. možnosť: Posielať si $language ako parameter.

Zpět do poradny Odpovědět na původní otázku Nahoru