Menu
RSS
Kategorie
Nejnovější články
Nejnovější komentáře
- Dnes ve stylu let devadesátých
- Nebylo mi souzeno
- 2012
- STOP všemu, hlavně těm pitomcům
- STOP všemu, hlavně těm pitomcům
| Last.fm - The Zero | |
|---|---|
| Pos | Interpret (skladby) |
| 1 | E-Type (2930) |
| 2 | Groove Coverage (2397) |
| 3 | Sylver (1561) |
| 4 | Ace of Base (1435) |
| 5 | MAYA (1206) |
| 6 | Cascada (1095) |
| 7 | Solid Base (1061) |
| 8 | Lewron Orchestra (907) |
| 9 | Verona (880) |
| Last.fm - Borek | |
|---|---|
| Pos | Interpret (skladby) |
| 1 | Coldplay (1181) |
| 2 | Pink Floyd (627) |
| 3 | Jaromír Nohavica (609) |
| 4 | Louis Armstrong (405) |
| 5 | Karel Kryl (327) |
| 6 | Brian Tyler (321) |
| 7 | Vladimír Mišík (254) |
| 8 | Bobby McFerrin (215) |
| 9 | Anat Cohen (212) |

Ochrana proti dvojitým komentářům
Netrvalo dlouho a přináším další změny. Některé prohlížeče totiž nemyslí na uživatele a nevarují při opakovaném odesílání stránky s POST daty (No flame
). Chtělo to nějak vyřešit.
Samozřejmě nejjednodušší řešení spočívá v oddělení skriptu, který zpracovává komentáře, od zobrazení stránky, a přidat jen přesměrování. Něco jako je třeba v RS2. To se mi nelíbí.
Jak na to o trochu líp
Bude nás to stát 1 SQL dotaz, ale to snad nikoho netrápí. On není pomalý. ![]()
// Tady zpracujeme příchozí data. Nejdůležitější je proměnná $text.
// Kdo čekal, že obsahuje email autora článku, spletl se.
$query= 'SELECT msg FROM '.mysql::PREFIX.'blog_comm '.
'WHERE call="'.$db->escape($this->call).'" AND ip="'.$_SERVER['REMOTE_ADDR'].'" '.
'ORDER BY time DESC LIMIT 1';
$result=$db->query($query);
if(!$result->num_rows() || $result->fetch_object()->msg!=$text) {
// tady přidáme komentář
}
V čem to tedy spočívá? Podíváme se, jaký byl poslední komentář ke komentovanému článku ze stejné IP adresy. Mohl bych ještě pro jistotu kontrolovat jméno, abych získal jistotu, ale napsat identický text by byla sakra náhoda. No a o komentáře v podobě smajlíku :) stejně nestojím
.
Ještě chci dodat, že jsem se záměrně vyhnul nějakému řešení přes session, a to hned ze dvou důvodů. Za prvé by to komplikovalo komentování dvou článků zároveň (ne že se to bude nějak často dít) a za druhé by to nezabránilo obnovení po x hodinách, jako se to dneska stalo MzK. Session po pár minutách vyprší a lifetime zase měnit nechci.
Komentáře
1. MzK
Za ten dvojpost ještě jednou promiň, úmysl to nebyl ale koukám, že to bylo k něčemu dobré - Vylepšení tvého RS :)
2. MiK
[0] The Zero Co máš proti redirectu? Proč to dělat jednoduše, když to jde i s databází? O "user experience" ;) jsi neslyšel, co? Může být, že po odeslání komentáře budu na článku reloadovat a čekat na odpověď - ale to ne, to budu muset potvrzovat, zda chci, nebo nechci odesílat POST data. Fuj!
http://en.wikipedia.org/wiki/Post/Redirect/Get
3. MiK
Jako heslo je to proto, že lze využít magic wand a odpověď se tak bude pamatovat.
A další fuj. Já nechci žádný magic wang (sic) s pamětí, ale zato mě štve, že se mi při odeslání komentáře zcela zbytečně aktivuje Správce hesel s dotazem, zda uložit login a heslo. Fuj, fuj, třikrát fuj. :-P
A BTH: Nepřeváděj se Ti pregnantně smajlíky. ;-)
4. The Zero
[3] MiK a) zapni si JavaScript nebo b) "Nikdy se neptat na heslo" :-)
5. The Zero
[3] MiK [4] The Zero Aha, zrada, ono se to ptá i se zapnutým JS.
To je tak když IE stávkuje (něco se mu nelíbilo) a já něco opravim... :-/
7. MiK
[3] MiK Bé je správně, pana Správce jsem hned umlčel, ale k uživatelům to vstřícné není. :(
[6] The Zero Vypadá to, tož ozkouším. ![]()