Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Bezpośredni dostęp do elementów po serializacji tablicy?
-lukasamd-
post 3.05.2012, 10:53:23
Post #1





Goście







Witam,
dzisiaj w pewnym skrypcie spotkałem się z dziwną sytuacją. Chodzi o wysyłanie PW, do tej pory wszystko grało, po zmianie na PHP 5.4.1 w pewnym sensie siadło - brak informacji o odbiorcy.
Nie w tym jednak rzecz. Chodzi o to, że skrypt (nie ja jestem jego autorem) najpierw wykonywal serializację tablicy, a potem odwoływal się mimo to do jej elementów:

  1. $recipient_list = serialize($recipient_list);
  2.  
  3. /**
  4. * Tutaj jakis kod, z $recipient_list nie dzieje się nic
  5. */
  6.  
  7. if(isset($recipient_list['to']) && count($recipient_list['to']) == 1) {
  8. // Jakas akcja


Jako że wcześniej działało, a "jedyne" co się zmieniło to wersja php mam pytanie - czy w php 5.2 / php 5.3 takie coś było legalne?
Po ręcznym dodaniu unserialize wszystko na powrót zaczyna grać, więc innego wyjścia nie widzę.
Albo wersja php, albo jakieś konkretne ustawienie jego konfiguracji - pytanie, jakie?

Ten post edytował lukasamd 3.05.2012, 10:53:52
Go to the top of the page
+Quote Post
!*!
post 3.05.2012, 11:02:40
Post #2





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Logiczne że jak używasz serialize() to musisz użyć unserialize() tak się powinno robić, aż dziwne że Twój sposób działał.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
-lukasamd-
post 3.05.2012, 11:04:39
Post #3





Goście







No napisałem, że to nie żaden mój sposób. To nie mój skrypt i błąd wyszedł dopiero po zmianie wersji php.
Ja wiem, że trzeba używać unserialize i o tym nie zapominam, no ale skoro tutaj go nie było a działalo... jakiś powód być musi.

Ten post edytował lukasamd 3.05.2012, 11:04:54
Go to the top of the page
+Quote Post
toffiak
post 3.05.2012, 11:14:38
Post #4





Grupa: Zarejestrowani
Postów: 395
Pomógł: 80
Dołączył: 24.08.2009

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


  1. <?php
  2. $recipient_list['to']=array('odbiorca1','odbiorca2','odbiorca3');
  3. $recipient_list = serialize($recipient_list);
  4. //$recipient_list = unserialize($recipient_list);
  5.  
  6.  
  7.  
  8. /**
  9.  
  10. * Tutaj jakis kod, z $recipient_list nie dzieje się nic
  11.  
  12. */
  13.  
  14.  
  15. echo(PHP_EOL.count($recipient_list['to']));
  16. echo(PHP_EOL.$recipient_list['to']);
  17.  
  18. if(isset($recipient_list['to']) && count($recipient_list['to']) == 1) {
  19. }
  20. // Jakas akcja
  21. ?>


Gdy tablica nie zostanie odserializowana to skrypt zwróci 1 i 'a' , więc też nie wiem w jaki sposób to mogło działać. Php 5.3.8

Ten post edytował toffiak 3.05.2012, 11:15:12


--------------------
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: 14.08.2025 - 06:53