Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Problem z zanikającą sesją
Adis92
post 4.07.2010, 00:30:46
Post #1





Grupa: Zarejestrowani
Postów: 146
Pomógł: 12
Dołączył: 9.01.2009
Skąd: Płock

Ostrzeżenie: (0%)
-----


Witam. Mam pewien problem. Otóż piszę skrypt i natchnąłem się na problem bodajże z gubiącą sesją.
W tej części mi wyświetla prawidłową zawartość sesji.
  1. <?php
  2. if(isset($_POST['usun'])){
  3.  
  4. if(isset($_SESSION['wybor'])){
  5.  
  6. print_r($_SESSION['wybor']);
  7.  
  8. ?>
  9. <form action="" method="POST">
  10. <div id="uwaga">
  11. <br />Czy jestes pewien że chcesz usunąć wybrane konta?<br />
  12. <input type="submit" class="pyt" name="tak" value="Tak" />
  13. <a href='java script:history.back()'>Nie</a>
  14. </div>
  15. </form>
  16. <?php
  17. }else echo '<div id="uwaga"><br />Nie wybrałeś żadnego konta do usunięcia!</div>';
  18. }

lecz tutaj już mi nie wyświetla w ogóle sesji.
  1. if(!isset($_SESSION['wybor'])){
  2. $_SESSION['wybor'] = array();
  3. }
  4.  
  5. $_SESSION['wybor'] = $_POST['zaznacz'];
  6.  
  7. if(isset($_POST['tak'])){
  8.  
  9. print_r($_SESSION['wybor']);
  10.  
  11. foreach((array)$_SESSION['wybor'] as $id){
  12. $ins = @mysql_query("DELETE FROM uzytkownicy WHERE id=$id") or die("MySQL ERROR: ".mysql_error());
  13. }
  14.  
  15. if($ins){
  16.  
  17. echo '<div id="ok"><br />
  18. konto zostało usunięte poprawnie!
  19. </div>';
  20.  
  21. unset($_SESSION['wybor']);
  22. }else{
  23.  
  24. echo '<div id="uwaga"><br />
  25. Wystąpił błąd podczas usuwania konta!
  26. </div>';
  27. }
  28. }

czy ktoś może wie w czym tkwi problem ?

Ten post edytował Adis92 4.07.2010, 00:34:20
Go to the top of the page
+Quote Post
muk4
post 4.07.2010, 00:37:22
Post #2





Grupa: Zarejestrowani
Postów: 309
Pomógł: 56
Dołączył: 3.11.2006
Skąd: Gliwice

Ostrzeżenie: (0%)
-----


a dałeś na początku pliku session_start() ?
Go to the top of the page
+Quote Post
Adis92
post 6.07.2010, 15:01:38
Post #3





Grupa: Zarejestrowani
Postów: 146
Pomógł: 12
Dołączył: 9.01.2009
Skąd: Płock

Ostrzeżenie: (0%)
-----


tak dałem ob_start(); i session_start();


Czy naprawdę nikt nie wie co może być przyczyną questionmark.gif Wiem że post pod postem ale ciągle mnie nurtuje ten problem :/
Go to the top of the page
+Quote Post
gigzorr
post 6.07.2010, 15:45:10
Post #4





Grupa: Zarejestrowani
Postów: 652
Pomógł: 47
Dołączył: 6.02.2010
Skąd: Radom

Ostrzeżenie: (0%)
-----


jak includujesz to daj w index.php na samej gorze session_start(); ob_start(); .
Go to the top of the page
+Quote Post
Adis92
post 6.07.2010, 17:57:33
Post #5





Grupa: Zarejestrowani
Postów: 146
Pomógł: 12
Dołączył: 9.01.2009
Skąd: Płock

Ostrzeżenie: (0%)
-----


w index.php też mam już podane.
Go to the top of the page
+Quote Post
tehaha
post 6.07.2010, 17:59:39
Post #6





Grupa: Zarejestrowani
Postów: 1 748
Pomógł: 388
Dołączył: 21.08.2009
Skąd: Gdynia

Ostrzeżenie: (0%)
-----


pokaż cały kod a nie takie skrawki, może dałeś 2 razy session_start(), daj na kilku etapach skryptu print_r($_SESSION); i zlokalizuj dokładnie miejsce, w którym tracisz dane to znajdziesz problem
Go to the top of the page
+Quote Post
Adis92
post 6.07.2010, 18:06:11
Post #7





Grupa: Zarejestrowani
Postów: 146
Pomógł: 12
Dołączył: 9.01.2009
Skąd: Płock

Ostrzeżenie: (0%)
-----


  1. <?php
  2. ?>
  3. <h1>Konto</h1>
  4.  
  5. <div id="haslo">
  6. <?php
  7. /* Function */
  8. include("includes/funkcje.php");
  9. /* End Function */
  10.  
  11. /* Database connection */
  12. include("includes/db.inc.php");
  13.  
  14. $connection = mysql_connect($host, $user, $password)
  15. or die("".$obrazek. "<h5>Brak połączenia z serverem MySQL</h5>");
  16. $db = mysql_select_db($baza, $connection)
  17. or die("".$obrazek. "<h5>Brak połączenia z bazą danych</h5>");
  18. /* End Database connection */
  19.  
  20. if($_SERVER['REQUEST_METHOD']== 'GET'){
  21.  
  22. ?>
  23. <form action="<?= $PHP_SELF ?>" method="POST">
  24.  
  25. <div id="account_menu">
  26. <input type="submit" class="dodaj" name="nowe" value="nowe" />
  27. <input type="submit" class="edycja" name="edycja" value="edycja" />
  28. <input type="submit" class="usun" name="usun" value="usuń" />
  29. </div>
  30.  
  31. <div id="account_table">
  32. <table class="table"">
  33. <tr class="first" style="background: #4babbf; color: #fff;">
  34. <td class="first" style="width: 15px; text-align: center;">#</td>
  35. <td style="width: 150px; padding: 0px 0px 0px 8px">Nazwa</td>
  36. <td style="width: 120px; padding: 0px 0px 0px 8px">Pozycja</td>
  37. <td style="width: 150px; padding: 0px 0px 0px 8px">Ostatnie logowanie</td>
  38. <td style="width: 40px; padding: 0px 1px 0px 1px">Aktywne</td>
  39. <td class="last" style="width: 40px; padding: 0px 0px 0px 2px">Status</td></tr>
  40. <?php
  41. /* Select base */
  42. if($db){
  43. $tabelka = mysql_query("SELECT * FROM uzytkownicy");
  44. } else echo "Blad wyboru Bazy!";
  45. /* End select base */
  46.  
  47. if($tabelka){
  48. while($dane = mysql_fetch_assoc($tabelka)){
  49.  
  50. $aktywne = $dane['aktywne'];
  51. $status = $dane['status'];
  52. $ostatnie_logowanie = data_pl($dane['ostatnie_logowanie']);
  53.  
  54. if($aktywne == 0){
  55. $aktywne = "<img src='images/icon/cross.png' title='brak aktywacji' alt='NIE' />";
  56. }elseif($aktywne == 1){
  57. $aktywne = "<img src='images/icon/accept.png' title='aktywowane' alt='TAK' />";
  58. }
  59.  
  60. if($status == 0){
  61. $status = "<img src='images/icon/cross.png' title='wylogowany' alt='wylogowany' />";
  62. }elseif($status == 1){
  63. $status = "<img src='images/icon/accept.png' title='zalogowany' alt='zalogowany' />";
  64. }
  65.  
  66. echo "<tr class='last''>
  67. <td class='first' style='text-align: center;'><input type='checkbox' name='zaznacz[".$dane['id']."]' value='".$dane['id']."' /></td>
  68. <td style='padding: 0px 0px 0px 8px'>".$dane['nazwa']."</td>
  69. <td style='padding: 0px 0px 0px 8px'>".$dane['pozycja']."</td>
  70. <td style='text-align: center;'>".$ostatnie_logowanie."</td>
  71. <td style='width: 40px; text-align: center;'>".$aktywne."</td>
  72. <td class='last' style='text-align: center;'>".$status."</td></tr>";
  73. }
  74. }
  75. ?>
  76. </table>
  77. </div>
  78. </form>
  79. <?php
  80.  
  81. }elseif ($_SERVER['REQUEST_METHOD']== 'POST'){
  82.  
  83. if(!isset($_SESSION['wybor'])){
  84. $_SESSION['wybor'] = array();
  85. }
  86.  
  87. $_SESSION['wybor'] = $_POST['zaznacz'];
  88.  
  89. if(isset($_POST['tak'])){
  90.  
  91. print_r($_SESSION['wybor']);
  92.  
  93. foreach((array)$_SESSION['wybor'] as $id){
  94. $ins = @mysql_query("DELETE FROM uzytkownicy WHERE id=$id") or die("MySQL ERROR: ".mysql_error());
  95. }
  96.  
  97. if($ins){
  98.  
  99. echo '<div id="ok"><br />
  100. konto zostało usunięte poprawnie!
  101. </div>';
  102.  
  103. unset($_SESSION['wybor']);
  104. }else{
  105.  
  106. echo '<div id="uwaga"><br />
  107. Wystąpił błąd podczas usuwania konta!
  108. </div>';
  109. }
  110. }
  111.  
  112. if(isset($_POST['usun'])){
  113.  
  114. if(isset($_SESSION['wybor'])){
  115. print_r($_SESSION['wybor']);
  116.  
  117. ?>
  118. <form action="" method="POST">
  119. <div id="uwaga">
  120. <br />Czy jestes pewien że chcesz usunąć wybrane konta?<br />
  121. <input type="submit" class="pyt" name="tak" value="Tak" />
  122. <a href='java script:history.back()'><input type="button" class="pyt" name="nie" value="Nie" /></a>
  123. </div>
  124. </form>
  125. <?php
  126. }else echo '<div id="uwaga"><br />Nie wybrałeś żadnego konta do usunięcia!</div>';
  127. }
  128.  
  129. if(isset($_POST['edycja'])){
  130.  
  131. }
  132.  
  133. if(isset($_POST['nowe'])){
  134.  
  135. ?>
  136.  
  137. <form action="<?= $PHP_SELF ?>" method="POST">
  138.  
  139. <div id="account_menu">
  140. <input type="submit" class="nowy" name="submit" value="dodaj" />
  141. <a href='java script:history.back()'><input type="button" class="usun" value="anuluj" /></a>
  142. </div>
  143.  
  144. <div id="uwaga">
  145. <br />Pola oznaczone * muszą zostać wypełnione!
  146. </div>
  147.  
  148. <table class="account_create">
  149. <tr><td>Nazwa*:</td><td>
  150. <input type="text" name="nazwa" tabindex="1" /></td></tr>
  151.  
  152. <tr><td>E-mail*:</td><td>
  153. <input type="text" name="email1" tabindex="2" /></td>
  154. <td>Powtórz e-mail*:</td><td>
  155. <input type="text" name="email2" tabindex="3" /></td></tr>
  156.  
  157. <tr><td>Stare hasło*:</td><td>
  158. <input type="password" name="old_pass" tabindex="4" /></td></tr>
  159. <tr><td>Hasło*:</td><td>
  160. <input type="password" name="haslo1" tabindex="4" /></td>
  161. <td>Powtórz hasło*:</td><td>
  162. <input type="password" name="haslo2" tabindex="5" /></td></tr>
  163.  
  164. <tr><td>Pozycja*:</td><td>
  165. <select name="pozycja" tabindex="6" />
  166. <option value="Adminnistrator">Administrator
  167. <option value="Redaktor">Redaktor
  168. </select></td></tr>
  169.  
  170. <tr><td>Kod potwierdzający*:</td><td>
  171. <input type="text" name="kod" tabindex="7" /></td>
  172. <td><img src="includes/image.php" style="margin: 0px -20px 0px 20px" id="image" alt=""></td>
  173. <td><a href="#" onclick="document.getElementById('image').src='includes/image.php?'+Math.random()*1000000;return!1;">
  174. <img src="images/icon/reload.png" alt="Refresh" style="margin: 0px 0px 0px -170px"/></a> </td></tr>
  175. </table>
  176.  
  177. </form>
  178. <?php
  179. }
  180.  
  181. $nazwa = $_POST['nazwa'];
  182. $email1 = $_POST['email1'];
  183. $email2 = $_POST['email2'];
  184. $haslo1 = mysql_escape_string(md5($_POST['haslo1']));
  185. $haslo2 = mysql_escape_string(md5($_POST['haslo2']));
  186. $pozycja = $_POST['pozycja'];
  187. $data_dodania = time();
  188. $pass = $_POST['kod'];
  189. $blad = "<a href='java script:history.back()'><< Powrót</a>";
  190.  
  191. function passcheck($pass) {
  192. $nr = floor(time() / 3600);
  193. for($i = 0; $i < strlen($pass); $i++)
  194. if($i % 2 == 0) $a .= $pass[$i]; else $b .= $pass[$i];
  195. $a = base_convert(strrev($a), 36, 10);
  196. $b = base_convert($b, 36, 10);
  197. if($a + $b <= $nr && $a + $b >= $nr - 2) return true;
  198. return false;
  199. }
  200.  
  201. function verifyEmail($email) {
  202.  
  203. $wholeexp = '/^(.+?)@(([a-z0-9\.-]+?)\.[a-z]{2,5})$/i';
  204. $userexp = "/^[a-z0-9\~\\!\#\$\%\&\(\)\-\_\+\=\[\]\;\:\'\"\,\.\/]+$/i";
  205.  
  206. if (preg_match($wholeexp, $email, $regs)) {
  207. $username = $regs[1];
  208. $host = $regs[2];
  209.  
  210. if (checkdnsrr($host, MX)) {
  211. if (preg_match($userexp, $username)) {
  212. return true;
  213. } else { return false; }
  214. } else { return false; }
  215. } else { return false; }
  216.  
  217. }
  218.  
  219.  
  220. if(isset($_POST['submit'])){
  221.  
  222. if($nazwa and $haslo1 and $haslo2 and $email1 and $email2 and $pozycja and $pass) {
  223.  
  224. if(!sprawdzenie($nazwa)){
  225.  
  226. if($haslo1 == $haslo2){
  227.  
  228. if($email1 == $email2){
  229.  
  230. if(passcheck($pass) == true){
  231.  
  232. if($email1){
  233.  
  234. $query = mysql_query("INSERT INTO uzytkownicy SET nazwa='$nazwa', haslo='$haslo1', email='$email1', pozycja='$pozycja', data_dodania='$data_dodania'") or die("MySQL ERROR: ".mysql_error());
  235.  
  236. $ip = $_SERVER['REMOTE_ADDR'];
  237.  
  238. if($query) echo "<p class='info'><br>Konto o nazwie ".$_POST['nazwa']." zostało utowrzone poprawnie. <br>
  239. <br>Twoje Ip to: ".$ip."<br><br><a href='?ids=konto'>Powrót</a><br><br></p>";
  240.  
  241. else echo "<p class='info'>".$obrazek."Błąd! Nie udało się wysłać wiadomosci<br><br></p>";
  242.  
  243. mysql_close($connection);
  244.  
  245. }else echo "<p class='info'>".$obrazek."<br>Email jest niepoprawny!!!<br>".$blad."<br><br></p>";
  246.  
  247. }else echo "<p class='info'>".$obrazek."Kod z obrazka jest nie poprawny !!!<br>".$blad."<br><br></p>";
  248.  
  249. }else echo "<p class='info'>".$obrazek."Emaile są różne!!! Popraw to!<br>".$blad."<br><br></p>";
  250.  
  251. }else echo "<p class='info'>".$obrazek."Hasła są różne!!! Popraw to!<br>".$blad."<br><br></p>";
  252.  
  253. }else echo "<p class='info'>".$obrazek."Podana nazwa już istnieje w bazie!<br>".$blad."<br><br></p>";
  254. } else echo "<p class='info'>".$obrazek."Uzupełnij wszystkie pola<br>".$blad."<br><br></p>";
  255.  
  256. }}?>
  257. </div>
  258. <?php
  259. ?>

Dodam że wszystkie sesje są tylko traci wartości tej jednej.

Ten post edytował Adis92 6.07.2010, 18:16:25
Go to the top of the page
+Quote Post
muk4
post 6.07.2010, 18:37:17
Post #8





Grupa: Zarejestrowani
Postów: 309
Pomógł: 56
Dołączył: 3.11.2006
Skąd: Gliwice

Ostrzeżenie: (0%)
-----


linia 105:
  1. unset($_SESSION['wybor']);

Może dlatego?
Go to the top of the page
+Quote Post
Adis92
post 6.07.2010, 18:49:23
Post #9





Grupa: Zarejestrowani
Postów: 146
Pomógł: 12
Dołączył: 9.01.2009
Skąd: Płock

Ostrzeżenie: (0%)
-----


Raczej nie ponieważ to dopiero się wykona gdy prawidłowo zostanie wykonana zmienna $ins lecz w tym momencie wyskakuje zawartość else. Do poprawnego wykonania zmiennej $ins jest potrzebna zawartość przechowywana w sesji, a właśnie w tym jest problem że sesja jest pusta.

Ten post edytował Adis92 6.07.2010, 18:50:22
Go to the top of the page
+Quote Post
muk4
post 6.07.2010, 19:30:59
Post #10





Grupa: Zarejestrowani
Postów: 309
Pomógł: 56
Dołączył: 3.11.2006
Skąd: Gliwice

Ostrzeżenie: (0%)
-----


  1. $_SESSION['wybor'] = $_POST['zaznacz'];
  2. //DEBUG START
  3. var_dump($_SESSION['wybor']);
  4. var_dump($_POST['zaznacz']);
  5. //DEBUG STOP
  6. if(isset($_POST['tak'])){
  7. print_r($_SESSION['wybor']);


Podmień na ten kod i wklej na forum co wywala.
I wywal @ przy
  1. $ins = @mysql_query("DELETE FROM uzytkownicy WHERE id=$id") or die("MySQL ERROR: ".mysql_error());

Może pokazuje jakiś istotny błąd.
Go to the top of the page
+Quote Post
Adis92
post 6.07.2010, 19:39:26
Post #11





Grupa: Zarejestrowani
Postów: 146
Pomógł: 12
Dołączył: 9.01.2009
Skąd: Płock

Ostrzeżenie: (0%)
-----


Kod
array(2) { [14]=>  string(2) "14" [15]=>  string(2) "15" } array(2) { [14]=>  string(2) "14" [15]=>  string(2) "15" } Array ( [14] => 14 [15] => 15 )

To wywaliło a gdy wszedłem w instrukcję if(isset($_POST['tak']))
Kod
NULL NULL

Wychodzi na to że w pewnym momencie nagle znikają nie wiadomo dlaczego.

Ten post edytował Adis92 6.07.2010, 19:50:02
Go to the top of the page
+Quote Post
muk4
post 6.07.2010, 20:50:34
Post #12





Grupa: Zarejestrowani
Postów: 309
Pomógł: 56
Dołączył: 3.11.2006
Skąd: Gliwice

Ostrzeżenie: (0%)
-----


Co ty mówisz. Przecież pokazuje, że $_SESSION['wybor'] jest tablicą z polami:
14 => 14
15 => 15

To ci wypluło
Kod
array(2) { [14]=>  string(2) "14" [15]=>  string(2) "15" } array(2) { [14]=>  string(2) "14" [15]=>  string(2) "15" } Array ( [14] => 14 [15] => 15 )


var_dump dla $_SESSION['wybor']:
Kod
array(2) { [14]=>  string(2) "14" [15]=>  string(2) "15" }

var_dump dla $_POST['zaznacz'] (to samo):
Kod
array(2) { [14]=>  string(2) "14" [15]=>  string(2) "15" }

print_r dla $_SESSION['wybor'] (to samo co wyzej tylko bez typów):
Kod
Array ( [14] => 14 [15] => 15 )


Nic nie znika.

Ten post edytował muk4 6.07.2010, 20:50:50
Go to the top of the page
+Quote Post
Adis92
post 6.07.2010, 22:07:00
Post #13





Grupa: Zarejestrowani
Postów: 146
Pomógł: 12
Dołączył: 9.01.2009
Skąd: Płock

Ostrzeżenie: (0%)
-----


No tak ale później gdy dochodzi do tego miejsca
  1. if(!isset($_SESSION['wybor'])){
  2. $_SESSION['wybor'] = array();
  3. }
  4.  
  5. $_SESSION['wybor'] = $_POST['zaznacz'];
  6.  
  7. if(isset($_POST['tak'])){
  8.  
  9. print_r($_SESSION['wybor']);
  10.  
  11. foreach((array)$_SESSION['wybor'] as $id){
  12. $ins = @mysql_query("DELETE FROM uzytkownicy WHERE id=$id") or die("MySQL ERROR: ".mysql_error());
  13. }
  14.  
  15. if($ins){
  16.  
  17. echo '<div id="ok"><br />
  18. konto zostało usunięte poprawnie!
  19. </div>';
  20.  
  21. unset($_SESSION['wybor']);
  22. }else{
  23.  
  24. echo '<div id="uwaga"><br />
  25. Wystąpił błąd podczas usuwania konta!
  26. </div>';
  27. }
  28. }
  29.  

to już są wartości NULL
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 15.07.2025 - 15:04