Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

PHP HTML Przekazanie zmiennych do innego skryptu przez sesję

adam220 09 Lut 2017 13:25 831 4
  • #1 09 Lut 2017 13:25
    adam220
    Poziom 14  

    Witam,
    dotychczas skrypt A przekazywał do skryptu B dane przez formularz
    z kontrolkami radio + ukryte zmienne.

    Kod: html
    Zaloguj się, aby zobaczyć kod


    Oczywiście przycisk wywoływał docelowy skrypt i przekazywał dane metodą POST.

    CEL: teraz ma być tak, że skrypt A wyśle przez POST tylko ID sesji, a docelowy skrypt B odczyta zmienne z sesji.
    Przyczyną jest wiele danych przekazywanych między różnymi skryptami i ciągła konieczność dopisywania kolejnych ukrytych zmiennych. Sesja załatwiłaby sprawę.

    Tylko że w pierwotnym rozwiązaniu kliknięcie kontrolki
    - ustawiało zmiennej h na wartość np 12 a
    - przycisk submit to wysyłał.
    Czyli przebiegało to dwuetapowo.

    A w rozwiązaniu z sesją konieczne wydaje się
    - ustawienie wartości zmiennej kontrolką radio,
    - wywołanie przez formularz skryptu który to zapisze do sesji i
    - wywołanie skryptu docelowego.
    Czyli trzyetapowo...

    Czy nie można jakoś prościej zrealizować CELu?
    Może ja coś komplikuję?

    0 4
  • #2 09 Lut 2017 13:50
    pralat
    Poziom 12  

    Masz rację, że aby dane trafiły do sesji muszą zostać wysłane, więc bez wysyłki formularza POSTem się nie obejdzie.
    Chyba, że schowasz te dane w cookie zamiast w sesji - wtedy wysyłka postem nie będzie potrzebna. Pytanie jednak czy to uprości czy też skomplikuje rozwiązanie.

    0
  • #3 09 Lut 2017 14:29
    adam220
    Poziom 14  

    @pralat dzieki.
    Staram się uniezależnić od cookies bo stykam się z wyłączoną opcją cookies -ale przy działających cookies to zadziała i ile skrypt uruchamia cały czas ten sam komputer. Jeśli różne, to już nie.

    W międzyczasie wymyśliłem takie rozwiązanie i proszę o komentarz.

    Problemem jest że skryptów jest wiele.
    Każdy z nich potencjalnie może wywołać inny, a ten inny jeszcze inny.
    Stąd konieczność przekazywania dużego kompletu danych przy każdym wywoływaniu,
    gdyż przekazać muszę nie tylko to co potrzebne w wywoływanym skrypcie
    ale również to co może potrzebować kolejny, wywołany przez niego.

    Zatem, jeśli wszyscy mają potencjalną możliwość wywołania wszystkich,
    to każdy każdemu musiał przekazywać komplet wszystkich zmiennych,
    żeby w łańcuchu wywołań żadna zmienna się nie zagubiła, bo może być potrzebna.

    Kiedy zmiennych było mało, to mogło tak być, ale przy rozbudowie trzeba było
    przy dodaniu każdej nowej zmiennej odszukać we wszystkich(!) skryptach wszystkie formularze POST
    i dopisać w nich tą nową jako ukrytą.
    Horror przy modyfikacji i jeszcze większy przy testowaniu.

    Rozwiązaniem jest oczywiście sesja ale - jak napisałem w pierwszym poście - konieczna jest większa liczba zadziałań skryptów.

    I tu pomyslałem żeby zrobić taki system:
    - Każdy skrypt dostaje przez POST identyfikator sesji oraz tylko tę zmienną która się zmieniła w poprzednim skrypcie.
    - Każdy skrypt od razu przepisuje do sesji tą jedną zmienioną i dopiero wykonuje swoje zadanie.
    - Każdy skrypt jeśli ma wywołać inny, to zmienione przez siebie zmienne (których wartość w sesji już nie jest aktualna) przekazuje jako POST do wywoływanego.

    Tym sposobem
    - w danych POST (oprócz id sesji) latają tylko zmienne zmieniane, a nie rozrastający się komplet, łatwo nad tym zapanować. Nie trzeba aktualizować innych skryptów,
    - nie ma wywoływania żadnego skryptu wyłącznie po to by nowe dane zapisać do sesji bo zrobi to każdy skrypt "przy okazji" i to na starcie (czyli problem wymieniony przeze mnie w 1 poście nie wystepuje)

    Nie widzę wad tego rozwiązania, ale proszę o komentarz bardziej doświadczonych.

    0
  • #4 09 Lut 2017 14:53
    pralat
    Poziom 12  

    Jeżeli przybywa pól formularzy i trudno nad nimi panować, należy je budować dynamicznie wg definicji pobieranej z serwera. Może być to zwykła tablica php, która będzie określała jakie formularz ma mieć pola i skąd czerpać wartości.

    0
  • #5 10 Lut 2017 02:20
    Rezystoreczek
    Poziom 20  

    a gdyby uzyć Ajaxa :?:

    0
  Szukaj w 5mln produktów