Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> hurtowe rejestrowanie zmiennych, w sesji ;)
ennics
post
Post #1





Grupa: Zarejestrowani
Postów: 312
Pomógł: 0
Dołączył: 29.12.2004

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


czy rozsądne będzie hurtowe rejestrownie zmiennych poprzez
wczytanie tablicy $_POST tym sposobem ?

  1. <?php
  2.  
  3.   foreach ( $_POST as $zmienna => $wartosc )
  4.   {
  5.     $_SESSION['$zmienna'] = $wartosc;
  6.   }
  7.  
  8. ?>


kodu jeszcze nie sprawdzałem w działaniu...

Ten post edytował ennics 27.01.2005, 20:04:27


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
aleksander
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 742
Pomógł: 0
Dołączył: 14.12.2003
Skąd: Gdańsk, Trójmiasto

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


jeżeli chcesz do $_SESSION skopiować całą tablicę $_POST, szybciej będzie:
  1. <?php
  2. $_SESSION = $_POST
  3. ?>
Go to the top of the page
+Quote Post
sf
post
Post #3





Grupa: Zarejestrowani
Postów: 1 597
Pomógł: 30
Dołączył: 19.02.2003
Skąd: Tychy

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


Jak dla mnie nie będzie to rozsądne bo każdy sobie będzie mógł stworzyć taką sesję wysyłając przez post swoje zmienne. Nawet będzie mógł zmienić już istniejącą sesję na swoją wartość.


--------------------
Zapraszam na mój php blog, tworzenie stron.
Go to the top of the page
+Quote Post
ennics
post
Post #4





Grupa: Zarejestrowani
Postów: 312
Pomógł: 0
Dołączył: 29.12.2004

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


dzieki olo,
hmm, jest jeszcze opcja tego typu
że w formularzu którym przesyłam zmienne użytkownicy nie zawsze
wypełniają wszystkie pola - ergo, nazwy zmiennych są przesyłane
ale brak w nich wartości... czy wtedy w sesji pojawią się puste zmienne ?
jak ustawić pętle żeby nie dopuszczała do rejestrownia "pustych"
zmiennych ?

edit.

Cytat
każdy sobie będzie mógł stworzyć taką sesję wysyłając przez post swoje zmienne. Nawet będzie mógł zmienić już istniejącą sesję na swoją wartość.

hmm, nie wiem czy dobrze rozumuję. tablica $_POST jest już "określona" przez formularz, jak można przesłać do niej dodatkowe dane ?
pozatym, dane wynikowe nie mają wpływu na działanie aplikacji, jeśli użytkownik je zmieni pojawią się błędne wpisy w bazie danych i błędnie wygenerowny dokumnet .rtf (.doc)

Ten post edytował ennics 27.01.2005, 20:30:28


--------------------
Go to the top of the page
+Quote Post
invx
post
Post #5





Grupa: Zablokowani
Postów: 655
Pomógł: 0
Dołączył: 28.11.2003
Skąd: Zagórz

Ostrzeżenie: (80%)
XXXX-


  1. <?php
  2. $_POST[nazwa] = &#092;"to co chcesz eby sie rownala\";
  3. ?>

albo
  1. <?php
  2. $_POST[nazwa] = $_POST.&#092;"dodatkowe info\";
  3. ?>


--------------------
RCXcms
www.rcx.prv.pl
Pierwszy polski w pełni zintegrowany system portal
Go to the top of the page
+Quote Post
ennics
post
Post #6





Grupa: Zarejestrowani
Postów: 312
Pomógł: 0
Dołączył: 29.12.2004

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


invx, dzięki za odp (przyda się winksmiley.jpg ale nie o to mi chodziło smile.gif
pisałem w kontekście wypowiedzi sf.

btw, sprawdziłem, niby działa coś w tym sytlu
  1. <?php
  2.  
  3. $_SESSION = $_POST;
  4. foreach ( $_SESSION as $zmienna => $wartosc )
  5. {
  6. echo &#092;"$zmienna : $wartosc<br>n\";
  7. }
  8.  
  9. ?>

ale jak przechodzę do następnego okna to wysypuje się wszystko
(wygląda to tak jakby niszczyło całą sesjie) i wraca do okna logowania winksmiley.jpg

Ten post edytował ennics 27.01.2005, 20:44:24


--------------------
Go to the top of the page
+Quote Post
invx
post
Post #7





Grupa: Zablokowani
Postów: 655
Pomógł: 0
Dołączył: 28.11.2003
Skąd: Zagórz

Ostrzeżenie: (80%)
XXXX-


bo $_SESSION nadpisuje pusta $_POST

musisz dac warunek
  1. <?php
  2.  
  3. if ( !empty ( $_POST[nazwa] ) )
  4. {
  5. $_SESSION[nazwa] = $_POST[nazwa];
  6. }
  7.  
  8. ?>


P.S.
a jak by nie szlo to jeszcze isset() dozuc w warunku

Ten post edytował invx 27.01.2005, 21:01:55


--------------------
RCXcms
www.rcx.prv.pl
Pierwszy polski w pełni zintegrowany system portal
Go to the top of the page
+Quote Post
sf
post
Post #8





Grupa: Zarejestrowani
Postów: 1 597
Pomógł: 30
Dołączył: 19.02.2003
Skąd: Tychy

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


Cytat(ennics @ 2005-01-27 20:18:23)
Cytat
każdy sobie będzie mógł stworzyć taką sesję wysyłając przez post swoje zmienne. Nawet będzie mógł zmienić już istniejącą sesję na swoją wartość.

hmm, nie wiem czy dobrze rozumuję. tablica $_POST jest już "określona" przez formularz, jak można przesłać do niej dodatkowe dane ?
pozatym, dane wynikowe nie mają wpływu na działanie aplikacji, jeśli użytkownik je zmieni pojawią się błędne wpisy w bazie danych i błędnie wygenerowny dokumnet .rtf (.doc)

Można zrezlizować takie coś za pomocą fsockopen" title="Zobacz w manualu PHP" target="_manual. Możesz wysłać co chcesz. Dlatego też zostały wprowadzone tablice globalne takie jak $_GET, $_POST. Ty poprostu chcesz hurtowo przekierować wszystko co wysyła się za pomocą POST do sesji, bez jakiejkolwiek kontroli co jest wysyłane.

Także wszystkie skrypty spamerskie operują na tym działaniu fsockopen" title="Zobacz w manualu PHP" target="_manual. Chyba nie myślałeś, że skrypt wchodzi na stronę, wypełnia pola i wysyła posta? tongue.gif


--------------------
Zapraszam na mój php blog, tworzenie stron.
Go to the top of the page
+Quote Post
ennics
post
Post #9





Grupa: Zarejestrowani
Postów: 312
Pomógł: 0
Dołączył: 29.12.2004

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


hehe, nie sf, taki naiwny nie jestem biggrin.gif

tak będzie dobrze:
  1. <?php
  2.  
  3.   foreach ( $_POST as $zmienna => $wartosc )
  4.   {
  5.     if ( !empty( $_POST[$zmienna] ) )
  6.     {
  7.       $_SESSION[$zmienna] = $_POST[$zmienna];
  8.     }
  9.   }
  10.   print_r ($_SESSION);
  11.  
  12. ?>


Ten post edytował ennics 28.01.2005, 11:30:11


--------------------
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 Aktualny czas: 20.08.2025 - 10:16