ugrás a tartalomhoz

Űrlap feldolgozás PHP_SELF-el

reagenross · 2010. Május. 11. (K), 00.12
Sziasztok!

Egy keresőt gyártok egy honlaphoz és elakadtam. PHP_SELF el dolgoznám fel a keresőben bejelölt attribútumokat. Ezt úgy terveztem elérni, hogy amikor betöltődik az index.html, ellenőrzöm, hogy a keresési attribútumok létrejöttek -e a $_GET tömbben.

Eddig minden okés.

Ezután a megoldás viszont nem jó,mert ha ezután a honlapon egy query stringes linkre kattintok, tehát az oldal újratöltődik, akkor megint megtörténik a keresési attribútumok vizsgálata a $_GET tömbben, és mivel ezek már létrejöttek egyszer, így nem a query stringes linknek megfelelő ágon foga program tovább futni.

Létezik PHP-ben olyan függvény, amely elveszi a GET tömbben tárolt változóim értékét?
Vagy teljesen rossz úton járok?

Ha tudok valami megoldást, ne kódot írjatok, mert azt magamtól szeretném megcsinálni. Inkább egy ötlet kellene amin el lehet indulni.
 
1

Valami nem stimmel

Poetro · 2010. Május. 11. (K), 01.57
amikor betöltődik az index.html, ellenőrzöm, hogy a keresési attribútumok létrejöttek -e a $_GET tömbben

Ez eddig tiszta, végigmész a $_GET tömbbön, és megvizsgálód hogy az adott kulccsal vannak-e benne elemek. Ha minden stimmel, akkor volt keresés.
a megoldás viszont nem jó,mert ha ezután a honlapon egy query stringes linkre kattintok, tehát az oldal újratöltődik, akkor megint megtörténik a keresési attribútumok vizsgálata a $_GET tömbben

Miért nem jó, hogy megtörténik a vizsgálat? Különben honnan tudnád, hogy volt-e keresés?
megtörténik a keresési attribútumok vizsgálata a $_GET tömbben, és mivel ezek már létrejöttek egyszer, így nem a query stringes linknek megfelelő ágon foga program tovább futni

Mik is jöttek létre egyszer? Általában egy linken lehetnek vannak query stringek, nem értem hogy kapcsolódik össze a kettő. Jó lenne valami példát látni.
Létezik PHP-ben olyan függvény, amely elveszi a GET tömbben tárolt változóim értékét?

A $_GET tömb egy változó, méghozzá egy tömb. Ebben kulcsok-érték párok vannak tárolva. Nem tiszta, mit is szeretnél csinálni.
2

Létezik PHP-ben olyan

kuka · 2010. Május. 11. (K), 08.16
Létezik PHP-ben olyan függvény, amely elveszi a GET tömbben tárolt változóim értékét?

Ez úgy hangzik, mintha az unset() függvényre gondolnál.
Vagy teljesen rossz úton járok?

Nagy valószínűség szerint. Szerintem az alábbi két példa URL esetében ránézésre és programozásilag is világos, hogy melyik a keresés:

http://example.com/?resz=blog&kategoria=web&cikk=kereses

http://example.com/?kereses=hun+a+cikk

Akkor meg egy ilyensmi kód miért nem volna elég?

if ($_GET['kereses']) {
  keresd_meg($_GET['kereses']);
} else {
  include $_GET['resz'].'/'.$_GET['kategoria'].'/'.$_GET['cikk'].'.php';
}
(A fenti példa csak a szemléltető, ilyent gyakorlatban ne csinálj.)
Ezt úgy terveztem elérni, hogy amikor betöltődik az index.html, ellenőrzöm, hogy a keresési attribútumok létrejöttek -e a $_GET tömbben.

Úgy-e az az "index.html" csak elírás? Különben nem lenne értelme a PHP fórumban kérdezni.
3

PHP_SELF

janoszen · 2010. Május. 11. (K), 10.29
Nem akarok hülyeséget mondani, de legjobb emlékezetem szerint a PHP_SELF értéke nincs minden platformon kitöltve, markánsan néhány FastCGI implementációban hülyeséget tartalmaz. Az egyetlen megbízható változó (aminél nem találkoztam eddig buggal) az a $_SERVER['REQUEST_URI'].
4

Mondjuk attól függ mit

kuka · 2010. Május. 11. (K), 12.00
Mondjuk attól függ mit akarsz. Egy mod_rewrite-al átírt kérés esetén $_SERVER['REQUEST_URI'] az eredetileg kért állományt, $_SERVER['PHP_SELF'] pedig a valóban lefuttatott script nevét tartalmazza.
5

Jaja, viszont a mod_rewrite

Ifju · 2010. Május. 11. (K), 12.11
Jaja, viszont a mod_rewrite determinisztikusan működik, és ha a form tag action attributumába beírod, az mindig ugyanazt a kódot kell, hogy meghívja.
6

Kell?

janoszen · 2010. Május. 11. (K), 12.20
Kérdés, hogy kell-e. Eleinte több meló (úgy 2-3 munkaórával) de később nagy kényelmet ad az, hogy van egy saját URL kezelő mechanizmusod és nem kell a rewrite szabályokat túrni. Főleg, hogy láttam már kétoldalas rewrite listát lassan futni. Kivettük, gyártottunk helyette egy C modult és egyből csak 2/3 annyi gép kellett.
7

Rájöttem mi a baj...

reagenross · 2010. Május. 11. (K), 12.35
Az volt a probléma, hogy a linken lévő lekérdező karakter ugyanazt a $_GET['valami']-t
használta, mint ami a keresési attribútumok között is szerepelt. A form name átírásával megoldódott a probléma.

Köszönöm a válaszokat.