Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sesje - zmienna nie jest przekazywana
Forum PHP.pl > Forum > PHP
Pakinter
Mam nastepujacy problem. Sa dwa skrypty sklep.php i sklep1.php w pierwszym robie takie cos session_register("tablicawyn"). Jest to zmienna tablicowa. Wszystko dziala jadnie do czasu wylaczenia przez uzytkownika ciasteczek. Wtedy po przejsciu do skryptu sklep1.php wywala blad ze nie zdefiniowana takiej zmiennej. Czy ktos moze mi pomoc rozwiazac ten problem? Z gory dzieki. A oto kody tych sklyptow

Sklep.php

  1. <center><h1>Sklep</h1></center><br>
  2. <h3>Towary:</h3><br>
  3. <table border=\"1\">
  4. <tr>
  5. <th>Nr</th> <th>Nazwa</th> <th>Cena towaru</th><th></th>
  6. </tr>
  7.  
  8. <?php
  9.  session_register(&#092;"tablicawyn\");
  10.  $plik=fopen(&#092;"towary.txt\",\"r\");
  11.  $tablica=file(&#092;"towary.txt\");
  12.  $ile=count($tablica);
  13.  echo &#092;"<form action=sklep.php method='POST'>\";
  14.  for($i=0;$i<$ile;$i++)
  15.  {
  16.  echo &#092;"<tr>\";
  17.  $tab=explode(&#092;" \",$tablica[$i]);
  18.  for($j=0;$j<3;$j++)
  19.  {
  20.  echo &#092;"<td>$tab[$j]</td>\";
  21.  }
  22.  echo &#092;"<td><input type=checkbox name=check[] value=$i></td>\"; 
  23.  echo &#092;"</tr>\"; 
  24.  }
  25.  echo &#092;"</table><br>\";
  26.  echo &#092;"<input type=hidden name=\".session_name().\"value=\".session_id().\">\";
  27.  echo &#092;"<input type=Submit value='Dodaj'><br>\";
  28.  echo &#092;"</form>\";
  29.  if($_SERVER[&#092;"REQUEST_METHOD\"]==\"POST\")
  30.  {
  31.  $wart=0;
  32.  $ile1=count($check);
  33.  for($i=0;$i<$ile1;$i++)
  34.  {
  35.  $rob=$check[$i];
  36.  $tab1=explode(&#092;" \",$tablica[$rob]);
  37.  for($j=0;$j<3;$j++)
  38.  $tablicawyn[$i][$j]=$tab1[$j];
  39.  $wart+=$tab1[&#092;"2\"];
  40.  }
  41.  echo &#092;"<br>Ilosc towarow=$ile1<br>\";
  42.  echo &#092;"Wartosc towarow=$wart\";
  43.  echo &#092;"<form action=sklep1.php method='GET'>\";
  44.  echo &#092;"<input type=hidden name=\".session_name().\"value=\".session_id().\">\";
  45.  echo &#092;"<input type=Submit value='Zamow'><br>\";
  46.  echo &#092;"<form>\";
  47.  }
  48. ?>


Sklep1.php


  1. <center><h1>Sklep</h1></center><br>
  2. <h3>Zamowienie</h3><br>
  3.  
  4.  
  5. <?php
  6. if(isset($Kupuje))
  7. {
  8. settype($tresc,&#092;"string\");
  9. for($i=0;$i<(count($_SESSION['tablicawyn']));$i++)
  10.  {
  11.  for($j=0;$j<4;$j++)
  12. $tresc=$tresc.$_SESSION['tablicawyn'][$i][$j].&#092;" \"; 
  13.  } 
  14. $adres=&#092;"adres@jdjd.pl\";
  15. $temat=&#092;"zamowienie\"; 
  16. mail($adres,$temat,$tresc); 
  17.  
  18. echo &#092;"<b>Zamowienie przyjeto<br></b>\";
  19. session_unregister(&#092;"tablicawyn\");
  20. echo &#092;"<a href='sklep.php'>Wroc do sklepu</a>\";
  21. }
  22. else
  23.  {
  24. echo &#092;"<table border='1'>\"; 
  25. echo &#092;"<tr>\";
  26. echo &#092;"<th>Nr</th> <th>Nazwa</th> <th>Cena towaru</th><th>Ilosc</th>\";
  27. echo &#092;"</tr>\";
  28.  
  29.  $razem=0;
  30.  $ile=count($_SESSION['tablicawyn']);
  31.  if($_SERVER[&#092;"REQUEST_METHOD\"]==\"POST\")
  32.  {
  33. for($i=0;$i<$ile;$i++)
  34.  {
  35.  $a[$i]=$ilosc[$i];
  36.  $_SESSION['tablicawyn'][$i][&#092;"3\"]=$a[$i];
  37.  $razem+=$ilosc[$i];
  38.  }
  39.  }
  40. else
  41. {
  42.  for($i=0;$i<$ile;$i++)
  43.  $a[$i]=&#092;"1\";
  44.  }
  45.  echo &#092;"<form action=sklep1.php method=POST>\";
  46.  for($i=0;$i<$ile;$i++)
  47.  {
  48.  echo &#092;"<tr>\";
  49.  for($j=0;$j<3;$j++)
  50. {
  51. echo &#092;"<td>\".$_SESSION['tablicawyn'][$i][$j].\"</td>\";
  52. }
  53.  echo &#092;"<td><input type=text name=ilosc[] value=\".$a[$i].\" size=2 maxlength=3></td>\";
  54.  echo &#092;"</tr>\";  
  55.  }
  56. echo &#092;"</table>\";
  57. echo &#092;"<table width=250><tr><td align=right><input type=Submit value='Zmien'></td></tr></table>\";
  58. echo &#092;"<input type=hidden name=\".session_name().\"value=\".session_id().\">\";
  59. echo &#092;"</form>\";
  60. if($_SERVER[&#092;"REQUEST_METHOD\"]==\"POST\")
  61.  {
  62. $DoZapl=0;
  63. for($i=0;$i<$ile;$i++)
  64.  {
  65.  $DoZapl+=$_SESSION['tablicawyn'][$i][&#092;"2\"]*$a[$i];
  66.  }
  67.  
  68.  echo &#092;"<b>Razem: $DoZapl zl, ilosc towarow: $razem</b>\";
  69.  echo &#092;"<form action=sklep1.php method=POST>\";
  70.  echo &#092;"<input type=hidden name=\".session_name().\"value=\".session_id().\">\";
  71.  echo &#092;"<input type=Submit name=Kupuje value=Kup>\";
  72.  echo &#092;"</form>\";
  73.  }
  74.  }//else isset($Kupuje)
  75. ?>
czachor
używaj nie session_register("tablicawyn") tylko $_SESSION['tablicawyn'] = 'blah';
Pakinter
no wszedzie uzywam $_SESSION['tablicawyn'] a raz na poczatku pierwszego skryptu session_register("tablicawyn"); zeby dodac zmienna do sesji no i nie dziala sad.gif
crash
Manual:
Cytat
Przy użyciu $_SESSION (lub $HTTP_SESSION_VARS) nie powinno się używać session_register()
Pakinter
Ok rozumiem. Wywalam juz ta session_register() Ale nadal mi nie dzialaja sesje bez cookies. Gdy wyswietlam id sesji zarowno w pierwszym skrypcie jak i drugim i gdy uzywam cookiekie id sesji jest takie samo. Gdy natomiast wylacze cookies w pierwszym i drugim skrypcie pokazuje sie calkiem inny id sesji. Gdzie lezy przyczyna?
scanner
Przenoszę: Skrypty -> php

Dział Skrypty służy do rozwiązywania problemów ze skryptami gotowymi, pobranymi z sieci!.
Pakinter
Juz doszedlem do jest zle ale nie wiem dlaczego tak sie dzieje

  1. <?php
  2.  echo &#092;"<form action=sklep1.php method=GET>\";
  3.  echo &#092;"<input type=hidden name=\".session_name().\"value=\".session_id().\">\";
  4.  echo &#092;"<input type=Submit value='Zamow'><br>\";
  5.  echo &#092;"<form>\";
  6. ?>


Otorz jak przechodze do drugiej strony przy uzyciu tego formularza to gubie sesje. Natomiast jak zamiast tego formularza dam link

  1. <?php
  2. echo &#092;"<a href=sklep1.php?\".SID.\">sklep</a>\";
  3. ?>

no to przechodzi do drugiej stronu i widzi sesje. Czy ktos moze mi wytlumaczyc dlaczego tak sie dzieje?
scanner
RTFM: http://pl2.php.net/manual/pl/ref.session.php
RTFM: http://pl2.php.net/manual/pl/install.confi...nable-trans-sid
Cytat
Istnieją dwie metody propagacji identyfikatora sesji:

    *Ciasteczka
    * Parametry URL'a

Moduł sesji obsługuje obie metody. Ciasteczka są metodą optymalną, ale ponieważ nie są one pewne (klienci nie muszą ich akceptować), nie możemy na nich polegać. Druga metora wstawia identyfikatory sesji bezpośrednio do URL'i.

php może to robić 'przezroczyście' jeśli został skompilowany z opcją --enable-trans-sid. Jeśli włączysz tą opcję, względne URI zostaną automatycznie podmienione tak, aby zawierały identyfikator sesji. Możesz także użyć stałej SID która jest definiowana jeśli klient nie wysłał odpowiedniego ciastka. SID jest albo w postaci nazwa_sesji=id_sesji lub pustym stringiem.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.