ugrás a tartalomhoz

PHP formok kezelése linkekkel - hogyan?

Venemo · 2005. Május. 28. (Szo), 19.11
Sziasztok!
Van egy PHP programom, ami a websiteom menürendszerét úgy generája, hogy a menüben levő linkek egy formon belül vannak, és kattintásra elküldik azt. Így:
<object>
<form action='/chaosrpg/új/index.php' method='post' name='frmCikkelyMP0'>
<div class='sor'>
<input type='hidden' name='fomenupont' value='3'/>
<input type='hidden' name='almenupont' value='2'/>
<input type='hidden' name='cikkely' value='0'/>
<a href='#' onclick='document.frmCikkelyMP0.submit()'>Cikkcím</a>
</div>
</form>
</object>

A PHP kód egy XHTML fájlba van beágyzva, és a W3C validátora érvénytelennek találja, mivel a form elemnek nem lehet name paramétere. Viszont ha helyette az id-t írom, a form nem lesz elküldve, hanem egy hibaüzenetet kapok, amikor a linkre kattintok.
A kérdésem az, hogy hogyan lehet elérni ugyanezt a hatást a name paraméter nélkül, úgy, hogy a kód érvényes XHTML kód maradjon???

Venemo
 
1

Változtass a PHP-n

Török Gábor · 2005. Május. 28. (Szo), 19.16
Vélhetőleg a PHP űrlapküldéskor azt vizsgálja, a form nevével egyező változót kap-e. Állítsd át úgy, hogy vagy egy független rejtett elemet vizsgáljon, vagy a küldés gomb beállítottságát (ami küldésnél mindenféleképpen kell, hogy teljesüljék), vagy bármi egyéb ötlet is szóba jöhet.

--
slink
http://20y.hu/
2

Nem a PHP-vel van a gond

Venemo · 2005. Május. 28. (Szo), 19.28
Nem a PHP okozza a problémát, hanem a link amikor egy form elküldésére hivatkozik, a form nevével hivatkozik rá. Ha viszont nincs name (név) paraméter (hanem csak id), akkor a formra nem tud hivatkozni.
(A hibaüzenet az IE felugró ablakában jelent meg, a PHP-nek ehhez semmi köze nincs.)
Venemo
3

getElementById

Anonymous · 2005. Május. 28. (Szo), 19.32
Azt ugyan nem értem, hogy miért van ott az <object>, de a getElementById-t használva remekül működik a dolog.
<object>
<form action='' method='post' id='frmCikkelyMP0'>
<div class='sor'>
<input type='hidden' name='fomenupont' value='3'/>
<input type='hidden' name='almenupont' value='2'/>
<input type='hidden' name='cikkely' value='0'/>
<a href='#' onclick="document.getElementById('frmCikkelyMP0').submit()">Cikkcím</a>
</div>
</form>
</object>


Gyulus
6

Kösz!

Venemo · 2005. Május. 29. (V), 22.53
Az <object> azért kell, mert a W3C validátora szerint az nem szabványos, ha csak úgy egy formot raknék oda, hanem felsorolt néhány elemet, hogy azokon belül kell szerepelnie.
A getElementById-t pedig nem ismertem. Kösz!
16

object

kgyt · 2005. Május. 30. (H), 18.48
Akkor rakd inkább egy div-be, ha más értelmes nem jut eszedbe.
Az object rossz választás.

--
Szeretettel: Károly György Tamás
kgyt&kgyt.hu - http://kgyt.hu
4

Minek POST?

attlad · 2005. Május. 28. (Szo), 20.00
Miért nem jó a sima link azaz GET-es kérés küldése ehhez?

Attila
7

jelszavak

Venemo · 2005. Május. 29. (V), 23.00
A GET metódus nem alkalmas jelszavak küldésére, mert az megjelenne a címsávban.
9

Re: jelszavak

attlad · 2005. Május. 29. (V), 23.34
Hogy adod át a jelszót? Minden menüpontra kattintás előtt be kell írnia a jelszót?? Vagy van még hidden mező benne? Mert ha igen, azt se épp jó megoldás, mert a böngésző cache fájlokba bekerülhet a jelszó.

Mindenestre az ajánlott megoldás az lenne, ha beléptetnéd egyszer a felhasználót és indítanál egy munkamenetet, ami alapján már tudod azonosítani:

PHP: Munkamenet kezelő függvények
http://hu.php.net/session

Attila
13

Hiddenek lesznek

Venemo · 2005. Május. 30. (H), 13.21
Az űrlapban még hidden mező lesz, és abban fogom tárolni a felhaználói nevet, és a titkosított jelszót.

A munkamenet-függvényeket sajnos nem ismerem, de jó ötletnek tűnnek.
17

jelszó

kgyt · 2005. Május. 30. (H), 18.49
Ha titkosított, akkor mehet GET-ben is.


--
Szeretettel: Károly György Tamás
kgyt&kgyt.hu - http://kgyt.hu
19

és a log fájlok?

Jano · 2005. Május. 30. (H), 20.32
Hát azért ez nem biztos. Egy sima lekérési log fájlba akkor is bekerülhetnek az URL-ek és a felhasználó jelszava ekkor kitudodhat.
20

cache

kgyt · 2005. Május. 30. (H), 21.06
Az a gyorsítótárban is megvan, ha hiddenekben tárolja...

--
Szeretettel: Károly György Tamás
kgyt&kgyt.hu - http://kgyt.hu
5

Vagy a link helyére egy css

Anonymous · 2005. Május. 28. (Szo), 20.02
Vagy a link helyére egy css -sel megformázott submit gombot teszel.
Igy még a javascript sem kell a működéshez. Egyebként miért választottad ezt a szokatlan megoldást? A form -oknak alapvetően más a funkciójuk!

bongyi
8

CSS formázott submit?

Venemo · 2005. Május. 29. (V), 23.03
Fogalmam sincs, hogy hogyan lehet CSS-sel submit gombot így formázni. (Őszintén szólva nem is tudtam, hogy ez lehetséges) Mondd el, légyszíves, hogy hogyan lehet ezt megvalósítani!
10

Hát ezt pár mondatban nem

Anonymous · 2005. Május. 30. (H), 09.47
Hát ezt pár mondatban nem lehet kifejteni, de egyébként ugyan úgy mint más html elemeket. Lehet neki háttérszint, keretet adni stb.. mindent amit a css -sel meg lehet valósítani. A w3c.org -on komplett doksit találsz a css -ről.

bongyi
18

button, mint link

kgyt · 2005. Május. 30. (H), 18.56
A gombnál beállítod, hogy class="submit"

input.submit {
  border: 0 solid transparent;
  background: transparent none repeat;
  text-decoration: underline;
  color: #009;
}
--
Szeretettel: Károly György Tamás
kgyt&kgyt.hu - http://kgyt.hu
21

Kösz!

Venemo · 2005. Május. 30. (H), 21.14
Kösz!
Gondolom ez is működik:
input.submit {
  border: 0 solid transparent;
  background: transparent none repeat;
  text-decoration: underline;
  color: #009;
}
input.submit:hover {
  border: 0 solid transparent;
  background: transparent none repeat;
  text-decoration: underline;
  color: #fff;
  background-color: #fc3;
}
22

Pár apró javítást tennék bele...

kgyt · 2005. Május. 30. (H), 21.33
Elvileg megy, de ki kell próbálni, és meglátod... :-)
input.submit:hover {
  border: 0 solid transparent;
  background: #fc3 none repeat;
  text-decoration: underline;
  color: #fff;
}
--
Szeretettel: Károly György Tamás
kgyt&kgyt.hu - http://kgyt.hu
23

csak ami valtozik

Jano · 2005. Május. 30. (H), 21.46
Tipp:
a :hover definialasnal mindig csak azokat a tulajdonsagokat erdemes megadni ami megvaltozik, igy kisebb a fajl es fokent atlathatobb!
24

Jó ötlet.

Venemo · 2005. Május. 30. (H), 22.02
Jó ötlet.
11

div helyett fieldset

Jano · 2005. Május. 30. (H), 10.04
Formon belül az urlap elemek csoportositasara van kitalalt HTML elem a fieldset, hasznald inkabb azt a DIV helyett.

Az object helyett pedig hasznald inkabb a DIV-et a FORM-ot körülfogó elemnek, bár kicsit kicsit furcsálom, hogy a form nem állhat magában.

Ez a linkelesi megoldas egyebkent nagyon GANY! Miert nem GET-tel vagy meginkabb beszedes URL-ekkel van megoldva?

Google nem fogja tudni elérni, javascriptet letiltott bongeszoben nem fog menni, nem lehet Firefoxban kozepso gombbal uj tabba nyitni! Stb,stb!

Csereld ki!
12

Kösz a tippeket

Venemo · 2005. Május. 30. (H), 13.17
Kösz a tippeket. A fieldset nem jutott eszembe. Viszont a <form> nem szerepelhet <div>-en belül, alapból ugyanis abban volt.

Azért nem GET, mert a GET-nél a nem kívánt dolgok (pl. a jelszó) látszanának a címsávban. "Beszédes URL"-ről még nem hallottam.

A Google-nak nincs mit elérnie, mivel a link nem egy másik lapra mutat, hanem önmagára. Nekem sem tetszik ez a megoldás, de eddig nem találtam jobbat. Esetleg úgy, ahogyan javasoltátok: CSS-sel formázott submit gombbal.
14

Még ráérsz

PiG · 2005. Május. 30. (H), 13.23
Amíg ilyen alap-dolgokkal szöszmötölsz, addig szerintem ne foglalkoztasson, hogy érvényes lesz-e vagy sem. Készíts egy olyan verziót, ami működik, aztán azt finomítgasd.
Egyébként, ha jelszót akarsz átadni, arra a hidden sem felel meg, hiszen bárki belenéz forráskódba, aztán látja a titkodat!

P][G
15

form befoglalása

Jano · 2005. Május. 30. (H), 14.18
Szerintem valami más hiba lesz abban a kódban még a FORM előtt. Végigbogarásztam az XHTML 1.1 Strict doctype-ot és szerintem a FORM lehet közvetlenül a BODY-nak is gyereke. (XHTML esetében ugyanis a BODY-nak csak blokk szintű gyerekei lehetnek.)

Én arra tippelek, hogy te egy inline elembe zártad a FORM-ot!
(Inline ("sorbeli") elemek azok amik nem törnek új sorba.)

Egyébként object esetén az objecten belűli kódnak csak akkor kell megjelennie, ha az objectnek megadott paraméterű dolgot a böngésző nem tudja megjeleníteni. Object segítségével szoktuk betenni pl a Flash-t vagy valamilyen video megjelenitő plug-int.

Beszédes URL: amikor nem olyanok vannak a címsorbn, hogy lekero.php?id=21&kategoria=45 hanem
domain.hu/cikkek/css/gombformazas.html

Ehhez be kell allitani a webszervert, hogy a lekero.php-nek adja at a cikkek utani reszt mint parameter. Az ott levo php progidban pedig feldolgozod a szoveges parametereket es az alapjan adod ki a doksit.

Bejelentkezés, jelszó kezelése

Ennek megvan a maga módja, olvass utána, ahogy feljebb említette valaki a munka menet kezelésnek, beléptetésnek.