Tomasz Kiełbowski

Tomasz Kiełbowski Dyrektor ds.
Klientów Kluczowych,
Vernity

Temat: Łączenie łancuchów w $_POST

Nie mogę sobie poradzić z prawdopodobnie bardzo prostą sprawą.

Jak sformułować wczytanie danych do zmiennej z parametrów przekazanych za pomocą metody $_POST dla następującego przykładu:

<input type="text" name="ilosc'.$id_pozycja.'" id="ilosc'.$id_pozycja.'" size="5" value="'.$ilosc.'">

Próbuję coś w kierunku:
$ilosc = $_POST('ilosc'.['id_pozycja']);

ale mi nie wychodzi.

Może ktoś pomóc?
Marcin Federowicz

Marcin Federowicz Morizon.pl - Od
wyszukania do
zamieszkania

Temat: Łączenie łancuchów w $_POST

Witam

ja to bym proponował takie rozwiązanie :

$id_pozycja = 6;
$element = 'ilosc'.$id_pozycja;

$ilosc = $_POST($element);

dzieki temu mozesz wybrac konkretny element z tablicy $_POST

Następna kwestia jeżeli coś ci się nie wyświetla postaraj się sprawdzić jaką wartość ma tworzona przez ciebie zmienna:

$ilosc = $_POST($element);

var_dump($ilosc);

jeżeli powyzsze zwroci null, to bym sprawdzil jakie wartosci znajduja sie w tablicy $_POST:

var_dump($_POST);

jeżeli powyższe również zwraca pustą tablicę to znaczy że coś jest nie tak z formularzem i nie przekazuje ci poprawnie danych z formularza, ale to już inna para kaloszy :PMarcin Federowicz edytował(a) ten post dnia 03.03.10 o godzinie 22:42

Temat: Łączenie łancuchów w $_POST

$_POST - to nie jest tablica? :)

konto usunięte

Temat: Łączenie łancuchów w $_POST

$_POST to tablica
wiec to: $ilosc = $_POST('ilosc'.['id_pozycja']); nie zadziala
ale to: $ilosc = $_POST['ilosc'.$id_pozycja]; tak

skoro tam probowales operowac id_pozycja zakladam ze ta zmienna gdziesz masz i wiesz ktora to id_pozycja :)
Marcin Federowicz

Marcin Federowicz Morizon.pl - Od
wyszukania do
zamieszkania

Temat: Łączenie łancuchów w $_POST

Michał Sanokowski:
$_POST - to nie jest tablica? :)


no nie wiem :

$_POST
$HTTP_POST_VARS [deprecated]

$_POST -- $HTTP_POST_VARS [deprecated] — HTTP POST variables
Report a bug
Description

An associative array of variables passed to the current script via the HTTP POST method.

$HTTP_POST_VARS contains the same initial information, but is not a superglobal. (Note that $HTTP_POST_VARS and $_POST are different variables and that PHP handles them as such)
Tomasz Kiełbowski

Tomasz Kiełbowski Dyrektor ds.
Klientów Kluczowych,
Vernity

Temat: Łączenie łancuchów w $_POST

zrobiłem to tak:

$ilosc_tmp = 'ilosc'.$id_pozycja;
$ilosc = $_POST[$ilosc_tmp];

Czyli bardzo podobnie do rady Andrzeja.

Dzięki za rady.Tomasz Kiełbowski edytował(a) ten post dnia 03.03.10 o godzinie 23:08

konto usunięte

Temat: Łączenie łancuchów w $_POST

Tomasz Kiełbowski:
zrobiłem to tak:

$ilosc_tmp = 'ilosc'.$id_pozycja;
$ilosc = $_POST[$ilosc_tmp];
Moge zapytac, co robisz pozniej ze zmienna $ilosc po tym jak wladowales w nia to co bylo w formularzu?
Maciej W.

Maciej W. Ruby on what?!

Temat: Łączenie łancuchów w $_POST

Nie wygodniej bedzie jak pola w formularzu nazwiesz "ilosc[$id_pozycja]" - dostaniejsz cos w stylu

<input type="text" name="ilosc[elem1]" />
<input type="text" name="ilosc[elem2]" />
<input type="text" name="ilosc[elem3]" />

(mozna tez zostawic samo ilosc[] czy wstawic tam co tylko chcesz)

Potem zrob sobie
print_r($_POST['ilosc'])

i powinienes zobaczyc

Array ( [elem1] => wartosc_jakas [elem2] => wartosc_jakas [elem3] => wartosc_jakas )


Taka tablice mozesz sobie foreachem przejechac

foreach ($_POST['ilosc'] as $pozycja => $wartosc){
echo $pozycja.'=>'.$wartosc;
}
Tomasz Kiełbowski

Tomasz Kiełbowski Dyrektor ds.
Klientów Kluczowych,
Vernity

Temat: Łączenie łancuchów w $_POST

Andrzej Winnicki:
Tomasz Kiełbowski:
zrobiłem to tak:

$ilosc_tmp = 'ilosc'.$id_pozycja;
$ilosc = $_POST[$ilosc_tmp];
Moge zapytac, co robisz pozniej ze zmienna $ilosc po tym jak wladowales w nia to co bylo w formularzu?

oczywiście, że możesz. $ilosc miała posłużyć do zapisu danych w tabeliMySQL.
Ostatecznie zrezygnowałem z tego rozwiązania i nie skorzystałem z tego.
Tomasz Kiełbowski

Tomasz Kiełbowski Dyrektor ds.
Klientów Kluczowych,
Vernity

Temat: Łączenie łancuchów w $_POST

Maciek Wojdyr:
Nie wygodniej bedzie jak pola w formularzu nazwiesz "ilosc[$id_pozycja]" - dostaniejsz cos w stylu

<input type="text" name="ilosc[elem1]" />
<input type="text" name="ilosc[elem2]" />
<input type="text" name="ilosc[elem3]" />

(mozna tez zostawic samo ilosc[] czy wstawic tam co tylko chcesz)

Potem zrob sobie
print_r($_POST['ilosc'])

i powinienes zobaczyc

Array ( [elem1] => wartosc_jakas [elem2] => wartosc_jakas [elem3] => wartosc_jakas )


Taka tablice mozesz sobie foreachem przejechac

foreach ($_POST['ilosc'] as $pozycja => $wartosc){
echo $pozycja.'=>'.$wartosc;
}

Dzięki, przyda mi się ta rada. W tym kierunku też kombinowałem ale nie wiedziałem jak to zrobić. Z uwagi na to że piszę tylko wieczorami po 1-2h trudno czasem myśleć jasno po całym dniu.

konto usunięte

Temat: Łączenie łancuchów w $_POST

Tomasz Kiełbowski:
oczywiście, że możesz. $ilosc miała posłużyć do zapisu danych w tabeliMySQL.
Ostatecznie zrezygnowałem z tego rozwiązania i nie skorzystałem z tego.

To na przyszlosc podpowiedz tylko
nigdy, przenigdy nie dopuszczaj by dane wchodzace z formularza (nie wazne jak bardzo ufasz uzytkownikom) byly po prostej lini przekazywane do zapytania bazy danych.
Jest to najprostszy sposob na sql injection.

Generalnie sugeruje wyrobic sobie nawyk sprawdzania KAZDEJ zmiennej ktorej uzywasz ze zrodla POST albo GET, bo wszystkie te zmienne moga byc zpreparowane przez uzytkownika i w razie niezabezpieczenia moga Ci namieszac.
Mateusz Młynarczyk Pmp

Mateusz Młynarczyk Pmp Senior Project
Manager

Temat: Łączenie łancuchów w $_POST

najlepiej korzystać z wbudowanych np w Zend Framework filtrów które załatwią sprawę sql injection czy też przeprowadzą za nas walidację, bez potrzeby sprawdzania każdego elementu tablicy $_POST :)

konto usunięte

Temat: Łączenie łancuchów w $_POST

Mateusz Młynarczyk:
najlepiej korzystać z wbudowanych np w Zend Framework filtrów które załatwią sprawę sql injection czy też przeprowadzą za nas walidację, bez potrzeby sprawdzania każdego elementu tablicy $_POST :)

Nie kazdy ma i uzywa ZEND'a
... nie trzeba browaru by napic sie piwa ;)

Wystarczy jedna funkcja przez ktora bedziemy zawsze przepuszczac kazda wchodzaca zmienna, a w funckji takie bajery jak: htmlentities, stripslashes, mysql_real_escape_string, strip_tags i na wszelki wypadek str_replace i moze cos jeszcze - wedlug uznania ;)
Kiedys napisalem sobie taka funkcje kompleksowa i poki co - bardzo ladnie sie sprawuje, skutecznie filtrujac tresc.



Wyślij zaproszenie do