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áš. nový
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… nový
los 14.08.2007 22:38
los
2. Ten riadok treba na začiatok index.php? nový
msx. 14.08.2007 22:47
msx.
Áno. nový
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.

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é rozbité, pretože mi tu nefungujú niektoré veci, ktoré tam áno, takže skúsim šťastie tam. Zatiaľ ďakujem.

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