ugrás a tartalomhoz

Előre nem ismert számú paraméter átadása

Blackfriar · 2010. Ápr. 2. (P), 12.43
Sziasztok !

Mi a legelegánsabb megoldása annak a problémának, ha előre nem ismert számú paramétert szeretnék átadni HTML-ből egy PHP fájlnak ?
Természetesen az is lényeges, hogy a PHP fájl tudja majd, hány paramétert kell átvennie.

Segítségeteket előre is köszönöm !
 
1

GET / POST

Poetro · 2010. Ápr. 2. (P), 13.09
Mind GET mind POST esetén "korlátlan" számú paramétert lehet átadni, az átadott paramétereket a $_GET illetve $_POST tömbben találod. Mivel tömb, annak van hossza az egyes elemeken pedig foreach-csel mehetsz végig.
2

nem inputból

Blackfriar · 2010. Ápr. 2. (P), 19.03
Ez rendben is volna, de mi van, ha a paraméterek nem inputból származnak ?

Pl. az alábbi eset hogy alakulna több paraméter esetén ?

HTML-ből meghívott PHP fájl paraméterátadással:
location.href = "http://www.akarmi.hu/valami.php/317

a PHP fájlban a param változó értéke 317 lesz
$param = substr($_SERVER['PATH_INFO'],1);

Gondolom, az utolsó / jel utáni rész feldolgozására egy algoritmust kellene írni. Ennél van-e elegánsabb megoldás ?
3

GET

Poetro · 2010. Ápr. 2. (P), 20.28
A GET paraméterek miért származnának "input"-ból? És persze az általad említett példa önmagában nem működik, megfelelő rewrite beállítások nélkül meg fogja keresni a valami.php mappát, és abban a 317-es nevű fájlt, ami minden valószínűség szerint nem létezik.

http://example.com/example.php?valtozo1=ertek1&valtozo2=ertek2 esetén a $_GET tömbben elérhető lesz a valtozo1 illetve valtozo2 kulcs, feltöltve az ertek1 és ertek2 értékekkel. És egy darab formot nem használtam.
4

biztos

Blackfriar · 2010. Ápr. 2. (P), 20.44
Biztos igazad van.

Erről mi a véleményed ?
5

Apache esetén ha

kuka · 2010. Ápr. 3. (Szo), 14.46
Apache esetén ha AcceptPathInfo be van kapcsolva, akkor működni fog.

De mivel a PATH_INFO nem strukturált adat mint a QUERY_STRING, magadnak kell feldolgoznod. Azaz a server és a PHP szempontjából előre ismert a paraméterek száma: mindig 1.

Ha úgy érted, hogy minden törtvonallal határolt részt külön paraméterként akarsz kezelni, akkor lásd az explode() függvényt.