Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> jak utrzymać dane wysłane przez POST, sesje lub cookies
damianooo
post 3.11.2011, 09:42:17
Post #1





Grupa: Zarejestrowani
Postów: 496
Pomógł: 2
Dołączył: 15.07.2011
Skąd: Katowice

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


Witam,

Potrzebuję utrzymać dane wysłane w formularzu metodą POST ... utrzymać tzn. coś w stylu zapisu ... jednak wolałbym nie zapisywać ani do pliku ani do bazy tych danych ...
chciałbym utrzymać dane za pomocą sesji lub cookies ...

próbuję za pomocą sesji i cookies ale nic z tego .. jak przełączam się na następną stronę to dana z POSTa znika

przykład:

  1. <?php
  2. $_SESSION['zm_kk'] = $_POST['kk'];
  3. $zmienna2 = $_SESSION['zm_kk'];
  4. setcookie("kkkk", $zmienna2);
  5. ?>



jest może jakiś ciekawy trick na trzymanie danych wysłanych przez POST ?


Ten post edytował damianooo 3.11.2011, 09:43:34
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 19)
phpion
post 3.11.2011, 09:43:55
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Wystartowałeś sesję przez session_start?
Go to the top of the page
+Quote Post
nospor
post 3.11.2011, 09:44:13
Post #3





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No ale na następnej stronie nie możesz już robić:
$_SESSION['zm_kk'] = $_POST['kk'];
bo przecież $_POST['kk'] na następnej stronie już nie istnieje. Na następnej stronie dopierasz się już do sesji
echo $_SESSION['zm_kk'];

ps: session_start() robisz wszędzie?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
damianooo
post 3.11.2011, 09:50:36
Post #4





Grupa: Zarejestrowani
Postów: 496
Pomógł: 2
Dołączył: 15.07.2011
Skąd: Katowice

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


tak dokładnie ... o tym nie zapominam smile.gif

może coś robię nie tak .. robię to w następujący sposób :

index.php

  1. <?php
  2.  
  3.  
  4. $_SESSION['zm_kk'] = $_POST['kk'];
  5. $zmienna2 = $_SESSION['zm_kk'];
  6. setcookie("kkkk", $zmienna2);
  7.  
  8.  
  9. if (isset($_COOKIE['kkkk']))
  10. {
  11. naglowek_a.php
  12. content_a.php
  13. stopka_a.php
  14.  
  15. }
  16. else
  17. {
  18. naglowek.php
  19. content.php
  20. stopka.php
  21. }
  22. ?>


i na tych stronach naglowek, content nie robię już session_start()
Go to the top of the page
+Quote Post
nospor
post 3.11.2011, 09:53:18
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Przeczytałes w ogole co ci napisalem?
Cytat
No ale na następnej stronie nie możesz już robić:
$_SESSION['zm_kk'] = $_POST['kk'];
bo przecież $_POST['kk'] na następnej stronie już nie istnieje. Na następnej stronie dopierasz się już do sesji
echo $_SESSION['zm_kk'];


Poza tym, skoro operujesz już na sesji to wywal ciacha. Nie mieszaj bez potrzeby dwóch mechanizmów.
I kolejne pozatym: jak się upierasz do ciach, to wiedz, ze setcookie() powoduje ze $_COOKIE zawiera ciacho dopiero przy następnym odwolaniu do strony


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
damianooo
post 3.11.2011, 09:58:41
Post #6





Grupa: Zarejestrowani
Postów: 496
Pomógł: 2
Dołączył: 15.07.2011
Skąd: Katowice

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


tak ale chyba nie zrozumiałem tego:

Cytat
Na następnej stronie dopierasz się już do sesji
echo $_SESSION['zm_kk'];



czyli rozumiem że mój sposób jest zły i powinienem to zrobić tak:


index.php

  1. <?php
  2.  
  3.  
  4. $_SESSION['zm_kk'] = $_POST['kk'];
  5. $zmienna2 = $_SESSION['zm_kk'];
  6. setcookie("kkkk", $zmienna2);
  7.  
  8. echo "<a href='druga_strona.php'>nastepna strona</a>";
  9.  
  10. ?>


druga_strona.php
  1. <?php
  2.  
  3.  
  4. $_SESSION['zm_kk'];
  5. echo $_SESSION['zm_kk'];
  6. ?>



i wtedy będę widział daną z $_SESSION['zm_kk'] na każdej stronie

Ten post edytował damianooo 3.11.2011, 09:59:09
Go to the top of the page
+Quote Post
nospor
post 3.11.2011, 10:01:11
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No to jeszcze raz:
Tam gdzie odbierasz dane z post masz mieć:
$_SESSION['zm_kk'] = $_POST['kk'];
I to wszystko.

Tam gdzie odbierasz dane z sesji masz mieć:
echo $_SESSION['zm_kk'];
czy cokolwiek innego co odbiera dane z sesji.
Proste jak budowa cepa.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
damianooo
post 3.11.2011, 10:24:35
Post #8





Grupa: Zarejestrowani
Postów: 496
Pomógł: 2
Dołączył: 15.07.2011
Skąd: Katowice

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


spoko ... ja to rozumiem że nie może być na tej samej stronie odbierania $_POST ... jednak chciałem aby struktura mojej aplikacji webowej była taka jak pokazałem w przykładzie ... jeśli tak to nie zadziała to faktycznie będę musiał to zbudować trochę inaczej
Go to the top of the page
+Quote Post
nospor
post 3.11.2011, 10:33:35
Post #9





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No to zrob warunek
  1. if (isset($_POST['kk']))
  2. $_SESSION['zm_kk'] = $_POST['kk'];

Wowczas wszystko moze byc w jednym pliku.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
damianooo
post 3.11.2011, 12:05:52
Post #10





Grupa: Zarejestrowani
Postów: 496
Pomógł: 2
Dołączył: 15.07.2011
Skąd: Katowice

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


nie wiem czemu ale mi to nie działa mimo wszystko ... może pokażę całość jak mam teraz:

jakasstrona.pl wysyła w POST dane "a", "b", "c" do strony mojastrona.pl ...

i tak w pliku index.php jest:

  1. if ( ($_GET['j'] == 'p1') && ($_GET['conte'] == 'zzz') && (($_GET['a'] == 'e7') || ($_GET['a'] == 'e8')) && (isset($_POST['a'])) )
  2. {
  3. $_SESSION['zm_a'] = $_POST['a'];
  4. $_SESSION['zm_b'] = $_POST['b'];
  5. $_SESSION['zm_c'] = $_POST['c'];
  6.  
  7. naglowek_a.php
  8. content_a.php
  9. stopka_a.php
  10. }
  11. else
  12. {
  13. naglowek.php
  14. content.php
  15. stopka.php
  16. }


natomiast w pliku content_a.php jest:


  1. if ( ($_GET['j'] == 'p1') && ($_GET['conte'] == 'zzz') && ($_GET['a'] == 'e7) && (isset($_SESSION['zm_a'])) )
  2. {
  3. ....
  4. }
  5. elseif( ($_GET['j'] == 'p1') && ($_GET['conte'] == 'zzz') && ($_GET['a'] == 'e8) && (isset($_SESSION['zm_a'])) )
  6. {
  7. ...
  8. }


tylko coś chyba źle mam zapisane ponieważ jeśli zrobię tak:

strona1.php

  1. <?php
  2.  
  3.  
  4. $_SESSION['zm_a'] = $_POST['a'];
  5. $_SESSION['zm_b'] = $_POST['b'];
  6. $_SESSION['zm_c'] = $_POST['c'];
  7.  
  8. echo "<a href='strona2.php?j=p1&conte=zzz&a=e7'>WITAMY NA STRONIE - Przejdź do części głównej</a>";
  9.  
  10. ?>



a na strona2.php tak:

  1. <?php
  2.  
  3.  
  4. if ( ($_GET['j'] == 'p1') && ($_GET['conte'] == 'zzz') && (($_GET['a'] == 'e7') || ($_GET['a'] == 'e8')) && (isset($_SESSION['zm_a'])) )
  5. {
  6.  
  7. naglowek_a.php
  8. content_a.php
  9. stopka_a.php
  10. }
  11. else
  12. {
  13. naglowek.php
  14. content.php
  15. stopka.php
  16. }
  17.  
  18. ?>


to działa

tylko, że wolałbym jednak uniknąć wyświetlania takiego powitalnego INTRO

Ten post edytował damianooo 3.11.2011, 12:07:38
Go to the top of the page
+Quote Post
wNogachSpisz
post 3.11.2011, 14:59:25
Post #11





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


Najprościej byłoby wyświetlać dane po otrzymaniu POST, czyli bez przekierowań.
Tyle ze wtedy F5 nie działa happy.gif
Go to the top of the page
+Quote Post
damianooo
post 4.11.2011, 10:37:47
Post #12





Grupa: Zarejestrowani
Postów: 496
Pomógł: 2
Dołączył: 15.07.2011
Skąd: Katowice

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


mam prośbę do nospor'a ... możesz spróbować mi jeszcze pomóc ? ... chciałbym uniknąć pokazywania intro "Witamy ... " ...
co robię źle jeszcze w tym skrypcie ? ...

dzięki,
Go to the top of the page
+Quote Post
tomm
post 4.11.2011, 11:40:47
Post #13





Grupa: Zarejestrowani
Postów: 142
Pomógł: 28
Dołączył: 7.04.2008

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


w linii

  1.  
  2. if ( ($_GET['j'] == 'p1') && ($_GET['conte'] == 'zzz') && ($_GET['a'] == 'e7) && (isset($_SESSION['zm_a'])) )


masz nie zamknięty apostrof po e7.

Poza tym jesli includejesz plik content_a to w nim nie musisz już sprawdzać warunków

  1. ($_GET['j'] == 'p1') && ($_GET['conte'] == 'zzz')


bo zrobiłes to juz kilka linii wczesniej, sprawdzasz jedynie czy jest to e7 czy e8 oraz zmienną sesyjną
Go to the top of the page
+Quote Post
damianooo
post 4.11.2011, 12:24:57
Post #14





Grupa: Zarejestrowani
Postów: 496
Pomógł: 2
Dołączył: 15.07.2011
Skąd: Katowice

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


dzięki za uwagę , jednak apostrofu nie miałem tylko tu a normalnie w kodzie jest ... natomiast druga sprawa o której napisałeś i tak nie rozwiązuje problemu ...

nie wiem czemu nie chce utrzymać mi sesji jeśli zrobię to tak jak opisałem
Go to the top of the page
+Quote Post
tomm
post 4.11.2011, 12:33:15
Post #15





Grupa: Zarejestrowani
Postów: 142
Pomógł: 28
Dołączył: 7.04.2008

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


a pokaż co wyświetli print_r($_SESSION) i print_r($_GET), daj to w pliku naglowek_a zamiast if'ow
Go to the top of the page
+Quote Post
damianooo
post 4.11.2011, 12:52:19
Post #16





Grupa: Zarejestrowani
Postów: 496
Pomógł: 2
Dołączył: 15.07.2011
Skąd: Katowice

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


a więc tak ... nie wiem czemu prosiłeś abym to zrobił w pliku naglowek_a.php przecież tam nie ma IFów , są w content_a.php .... ale nie ważne zrobiłem tak jak mówiłeś i
w tablicy wszystko jest czyli zarówno dana z POST['a'] jak i z pozostałych dwóch ...

chodzi o to że jeśli teraz kliknę w menu na odnośnik z $_GET['a'] == 'e8' czyli inną stroną, to ta tablica staje sie pusta ... (nie utrzymuje w sesji danych zapisanych przez POST )

Go to the top of the page
+Quote Post
tomm
post 4.11.2011, 13:16:38
Post #17





Grupa: Zarejestrowani
Postów: 142
Pomógł: 28
Dołączył: 7.04.2008

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


jeśli dobrze rozumiem to warunek w pliku content_a (wcześniej również chodziło mi o ten plik)

  1. if ( ($_GET['j'] == 'p1') && ($_GET['conte'] == 'zzz') && ($_GET['a'] == 'e7) && (isset($_SESSION['zm_a'])) )

jest spełniony i robi się wszystko co w if'ie, masz tam również jakiś odnośnik do innej strony i po przejściu do tej strony zmiennej sesyjnej już nie ma. Czy tak?
Go to the top of the page
+Quote Post
damianooo
post 4.11.2011, 14:04:52
Post #18





Grupa: Zarejestrowani
Postów: 496
Pomógł: 2
Dołączył: 15.07.2011
Skąd: Katowice

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


tak dobrze ...

po prostu jest tam też menu i jak wybierę opcję z $_GET['a'] == 'e8' to już nie widać tych zmiennych

Zbiorę wszystko do kupy żeby była większa jasność i zrobię małą symulację:

plik (strona w sieci do której mam oczywiście dostęp) jakasstrona.php ma:

  1. <form action="mojastrona.php?j=p1&conte=zzz&a=e7" method="POST" target="_blank">
  2. <input type='hidden' name='a' value='10'>
  3. <input type='hidden' name='b' value='20'>
  4. <input type='hidden' name='b' value='30'>
  5. <input type='submit' name='submit' value='Zamowienia' style="border:none;background-color:transparent;color:#198F57;font-size:11px;">
  6. </form>


plik (moja strona w sieci ) mojastrona.php ma:



  1.  
  2. if ( ($_GET['j'] == 'p1') && ($_GET['conte'] == 'zzz') && (($_GET['a'] == 'e7') || ($_GET['a'] == 'e8')) && (isset($_POST['a'])) )
  3. {
  4. $_SESSION['zm_a'] = $_POST['a'];
  5. $_SESSION['zm_b'] = $_POST['b'];
  6. $_SESSION['zm_c'] = $_POST['c'];
  7.  
  8. naglowek_a.php
  9. content_a.php
  10. stopka_a.php
  11. }
  12. else
  13. {
  14. naglowek.php
  15. content.php
  16. stopka.php
  17. }


i teraz tak. Plik content_a.php zawiera w sobie menu oraz content i wygląda mniej więcej tak:


  1. echo "<div>";
  2. if ($_GET['a'] == 'e8')
  3. {
  4. echo "<a href='mojastrona.php?j=p1&conte=zzz&a=e7'><b>PAKIETY</b></a>";
  5. }
  6. elseif( ($_GET['a'] == 'e7') OR ($_GET['a'] == 'qqq8a1'))
  7. {
  8. echo "<a href='mojastrona.php?j=p1&conte=zzz&a=e8'><b>REGULAMIN</b></a>";
  9. }
  10.  
  11. echo "</div>";
  12.  
  13. echo "<div>";
  14.  
  15. if ( ($_GET['j'] == 'p1') && ($_GET['conte'] == 'zzz') && ($_GET['a'] == 'e7') && (isset($_SESSION['zm_a'])) )
  16. {
  17. ....
  18. }
  19. elseif( ($_GET['j'] == 'p1') && ($_GET['conte'] == 'zzz') && ($_GET['a'] == 'e8') && (isset($_SESSION['zm_a'])) )
  20. {
  21. ...
  22. }
  23. echo "</div>";


Ten post edytował damianooo 4.11.2011, 14:07:06
Go to the top of the page
+Quote Post
tomm
post 4.11.2011, 14:46:28
Post #19





Grupa: Zarejestrowani
Postów: 142
Pomógł: 28
Dołączył: 7.04.2008

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


Twój problem polega na tym że odnosnikiem
  1.  
  2. echo "<a href='mojastrona.php?j=p1&conte=zzz&a=e7'><b>PAKIETY</b></a>";

wywołujesz znowu stronę mojastrona.php ale nie przesyłając już do niej tablicy $_POST
a to sprawdzasz w pierwszym if'ie.
Wyciągnij ten warunek z tego if'a i wstaw troche ponizej tzn

  1. if ( ($_GET['j'] == 'p1') && ($_GET['conte'] == 'zzz') && (($_GET['a'] == 'e7') || ($_GET['a'] == 'e8')) )
  2. {
  3. if( (isset($_POST['a']) ){
  4. $_SESSION['zm_a'] = $_POST['a'];
  5. $_SESSION['zm_b'] = $_POST['b'];
  6. $_SESSION['zm_c'] = $_POST['c'];
  7. }
  8. naglowek_a.php
  9. content_a.php
  10. stopka_a.php
  11. }
Go to the top of the page
+Quote Post
damianooo
post 7.11.2011, 10:03:56
Post #20





Grupa: Zarejestrowani
Postów: 496
Pomógł: 2
Dołączył: 15.07.2011
Skąd: Katowice

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


ok pomogłeś mi tomm ... teraz jest lepiej .. tylko trzeba jeszcze dodać ten kawałek:

  1. else
  2. {
  3. naglowek_a.php
  4. content_a.php
  5. stopka_a.php
  6. }



bo inaczej jak odświeżam stronę albo jak przełączam się na inną stronę to wyświetla się pusta strona

dzięki, pozdrawiam
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 - 05:00