Autor | Zpráva | ||
---|---|---|---|
FEIL Profil |
#1 · Zasláno: 8. 7. 2010, 08:13:52
<b>Členové</b><hr> <table border=0 width=500px> <tr><td><b>Nick</b></td><td><b>Steam id</b></td><td><b>ICQ</b></td><td><b>Vyhodit z klanu</b></td></tr>"; while($clen = mysql_fetch_array($clenove)){ echo "<tr><td>"; autor($clen["id"]); echo "</td><td>"; if ($clen["steam_id"] == "") { echo "Nevyplněno"; } else { echo "".$clen["steam_id"].""; } echo "</td><td>"; icq($clen["id"]); echo "</td></tr>"; } echo " </table> Sem by som potreboval vložiť tlačitko na ktoré ked kliknem tak to vyhodí hráča z klanu. Len neviem ako a kde to má byť vložene??? |
||
panther Profil |
#2 · Zasláno: 8. 7. 2010, 08:22:04
FEIL:
„Len neviem ako a kde to má byť vložene?“ kamkoliv. Po kliknutí se refreshne stránka, takže to je jedno. klidně z textu „Vyhodit z klanu“ udělej odkaz, např.: href="?action=smazat&id=10". V PHP pak, pokud je $_GET['action'] rovna 'smazat', smažeš záznam (hráče) s ID 10. |
||
FEIL Profil |
#3 · Zasláno: 8. 7. 2010, 08:59:53 · Upravil/a: FEIL
No viem že by tam malo byť niečo takéto
$klan = $_POST["klan"]; $liga = $_POST["liga"]; $id = $userdata["user_id"]; $result = mysql_query("DELETE FROM liga_users WHERE id='$id' AND liga='$liga' AND klan_id='$klan'"); $result = dbquery("UPDATE liga_klany SET clenu=clenu-'1' WHERE id='$klan'"); redirect("".BASEDIR.""); a potom by to malo začínať nejak takto if ($user["cl"] == "1") { Chcem som len tlačítko vedla každého hráča po kliknutí by sa zistilo či je CL ak ano zmazalo by záznam v tabulke liga_users ešte by tam samozrejme musí byť podmienka že nemožem vyhodiť sám seba. |
||
panther Profil |
#4 · Zasláno: 8. 7. 2010, 09:01:31
FEIL:
POST? Mažeš z formuláře? Pochybuji. Jestli se má mazat odkazem, bude to, jak jsem to napsal já - budeš mazat z URL, tedy z $_GETu. |
||
FEIL Profil |
#5 · Zasláno: 8. 7. 2010, 09:11:41
$user = dbarray(mysql_query("SELECT * FROM liga_users WHERE id='".$userdata["user_id"]."' AND liga='".$_GET["id"]."'")); $liga = $_GET["id"]; $klan = $user["klan_id"]; if ($user["cl"] == "0") { // zkontroluje jestli klan existuje.. $kontrola = dbarray(mysql_query("SELECT * FROM liga_users WHERE id='".$userdata["user_id"]."' AND liga='".$_GET["id"]."'")); if ($kontrola["liga"] == $_GET["id"]) { $nazev = dbarray(mysql_query("SELECT * FROM liga_klany WHERE id='$klan' AND liga='".$_GET["id"]."'")); echo "<center>Opravdu chcete odejít z klanu <b>".$nazev["nazev"]."</b> ?</center>"; echo "<br />"; echo "<table width='100px' border='0' align='center'><tr><td>\n"; echo "<form action='odejit.php' method='post'>\n"; echo "<input type='hidden' name='klan' value='$klan'>\n"; echo "<input type='hidden' name='liga' value='$liga'>\n"; echo "<input type='submit' value='ANO' class='button'></td><td>\n"; echo "</form>\n"; echo "<form action='".LIGA_BASEDIR."?page=team&id=$liga' method='post'><input type='submit' value='NE' class='button'>\n"; echo "</td></tr></table>\n"; } else { redirect("".LIGA_BASEDIR."?page=team&id=$liga"); } } else { redirect("".LIGA_BASEDIR."chyba.php?id=3&liga=$liga"); } ?> Takto to je spravené ked chceš opustíť team odejit.php zahrna to višie uvedené. Vychadzal som stoho že to bude nejak podobne. |
||
FEIL Profil |
#6 · Zasláno: 8. 7. 2010, 09:16:25
echo "<form action='vykopnut.php' method='post'>\n"; echo "<input type='submit' value='Vyhodiť' class='button'></td><td>\n"; |
||
panther Profil |
#7 · Zasláno: 8. 7. 2010, 09:22:31 · Upravil/a: panther
FEIL:
„Takto to nejak bude ???“ tak, jak jsem to napsal. <?php if (!empty($_GET['action'] and $_GET['action'] == 'smazat' and !empty($_GET['id'])) { mysql_query ("DELETE FROM `users` WHERE id = " . (int)$_GET['id'] . " LIMIT 1"); } ?> <a href="?action=smazat&id=10">Smazat</a> |
||
FEIL Profil |
#8 · Zasláno: 8. 7. 2010, 18:33:32
Nejaké iné nápady? jednoznačne tam musí byť if ($user["cl"] == "1") táto podmienka.
|
||
FEIL Profil |
#9 · Zasláno: 8. 7. 2010, 23:08:31
A niečo pre o GET: Oplatí sa spomenúť, že takéto riešenie cez odkazy je náchylné na CSRF útok (to znamená, že ti niekto podstrčí "vymazávaciu" URL a cez teba dáta vymaže).
Je také pravidlo, týkajúce sa formulárov na webe - ak nejaká akcia mení stav databázy (pridáva / upravuje / vymazáva položky), treba použiť metódu POST (odkazy používajú metódu GET |
||
panther Profil |
#10 · Zasláno: 8. 7. 2010, 23:13:00
FEIL:
„to znamená, že ti niekto podstrčí "vymazávaciu" URL a cez teba dáta vymaže“ musíš si rozmyslet, odkud a kdo bude moci co mazat. Většinou se záznamy dají mazat v nějaké zabezpečené administraci, kam se dostanou jen povolení. A ne všichni, kdo se mohou přihlásit, nutně musí mít právo mazat záznamy. Místo odkazu a tedy GETem si můžeš vytvořit formulář, kde se to bude všechno odesílat POSTem, trváš-li na tom. SQL dotaz bude neměnný. |
||
Lamicz Profil |
#11 · Zasláno: 9. 7. 2010, 07:19:46
FEIL:
No tak místo GETu ti vytvořím POST request a vymažu to taky, ošetřit se to musí v té samotné action (práva apod.). |
||
FEIL Profil |
#12 · Zasláno: 10. 7. 2010, 12:44:03 · Upravil/a: FEIL
Jediné čo som chcel je vytvoriť takto tlačítko
<tr><td><b>Nick</b></td><td><b>Steam id</b></td><td><b>ICQ</b></td><td><b>Vyhodit z klanu</b></td></tr>"; while($clen = mysql_fetch_array($clenove)){ echo "<tr><td>"; autor($clen["id"]); echo "</td><td>"; if ($clen["steam_id"] == "") { echo "Nevyplnìno"; } else { echo "".$clen["steam_id"].""; } echo "</td><td>"; icq($clen["id"]); echo "</td> echo <td><input type='submit' value='Vyhodit' class='button'></td></tr>"; ale stým že iba CL(clan leader) može na dané tlačítko kliknúť a vykoná sa script že to vyhodí hráča respektívne zmaže záznam v opačnom prípade vypíše: Nemáš dostatočné práva a toto ako spraviť tak nato som ešte neprišiel. |
||
Mastodont Profil |
#13 · Zasláno: 10. 7. 2010, 12:52:28
iba CL(clan leader) može na dané tlačítko kliknúť
V tom případě to tlačítko zobrazuj jen leaderovi |
||
FEIL Profil |
#14 · Zasláno: 10. 7. 2010, 13:52:49
Mastodont:
„V tom případě to tlačítko zobrazuj jen leaderovi“ Škoda že si nehodil nejakú časť kodu že ako nato. Lebo už som skúšla niečo takéto echo "</td><td>"; icq($clen["id"]); echo "</td>if ($user["cl"] == "1") { echo <td><input type='submit' value='Vyhodit' class='button'></td>}</tr>"; |
||
Mastodont Profil |
#15 · Zasláno: 10. 7. 2010, 14:21:12
FEIL:
To ti opravdu fungovat nebude, uvnitř řetězce nemůžeš používat IF a spouštět příkazy. |
||
FEIL Profil |
#16 · Zasláno: 10. 7. 2010, 14:48:58 · Upravil/a: FEIL
a ako to mám spraviť? Lebo to sa pítam už od začiatku.
|
||
Mastodont Profil |
#17 · Zasláno: 10. 7. 2010, 14:53:37
Na začátku máš ten řádek s eachama správně:
... echo "</td><td>"; if ($clen["steam_id"] == "") { echo "Nevyplněno"; } ... |
||
FEIL Profil |
#18 · Zasláno: 10. 7. 2010, 15:17:03
No to viem to funguje ale ako spravím aby sa zobrazovalo to tlačítko len CL už aj poradíš niečo??
|
||
Joker Profil |
#19 · Zasláno: 10. 7. 2010, 15:41:41
FEIL:
Nemá to dělat právě ta podmínka if($user["cl"] == "1")? Nebo to je zas něco jiného? |
||
FEIL Profil |
#20 · Zasláno: 10. 7. 2010, 15:49:57 · Upravil/a: FEIL
No ved tak som to myslel že ak platí toto if($user["cl"] == "1") objavý sa to tlačítko ale tak ako som to napísal my to nefunguje
|
||
mattyZEM Profil |
#21 · Zasláno: 10. 7. 2010, 17:07:45 · Upravil/a: mattyZEM
[#15] ti říkal, že v echu nemůžeš používat if.
echo "</td><td>"; icq($clen["id"]); echo "</td>";if ($user["cl"] == "1") { echo "<td><input type='submit' value='Vyhodit' class='button'></td>";}echo "</tr>"; |
||
FEIL Profil |
#22 · Zasláno: 10. 7. 2010, 17:31:01
Matty musím sa ťi podakovať presne toto som chcel.
|
||
Časová prodleva: 14 let
|
0