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ść.
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. ?>
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ę (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) ale nie o to mi chodziło (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/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
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? (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
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 (IMG:http://forum.php.pl/style_emoticons/default/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
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.12.2025 - 11:08