[JS] Hufterproof forum submit

Pagina: 1
Acties:

  • PluueeR
  • Registratie: December 2000
  • Laatst online: 17-08 21:56
Ik ben bezig met een site duuuh.... met enkele formuliertjes, deze heb ik dmv een ander draadje (wat ik met de search had gevonden) getracht hufterproof te maken zodat bij lag niet meerdere keren op Submit kan worden geramt. Waardoor nieuwtjes 4x in de db komen bijvoorbeeld.

Uiteraard werkt dit onder IE weer goed, maar onder Mozilla 0.99 niet. Iemand enig idee, hier de code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<form action="add.php" method="post" name="Add_User" onsubmit="return d();">
<table border="0" cellpadding="0" cellspacing="5" class="text">
<tr>
<td width="140" valign="top">Email:</td>
<td><input type="text" size="35" maxlength="50" name="Usermanager_username"></td>
</tr>

<tr>
<td valign="top">Voornaam:</td>
<td><input type="text" size="35" maxlength="20" name="Usermanager_voornaam"></td>
</tr>
<tr>
<td valign="top">Achternaam:</td>
<td><input type="text" size="35" maxlength="40" name="Usermanager_achternaam"></td>
</tr>

<tr>
<td valign="top">Rechten:</td>
<td>
<select name="Usermanager_rights">
<option value="0" selected="selected">Gebruiker</option>
<option value="1">Nieuws administrator</option>
<option value="2">Vacature administrator</option>
<option value="3">Content manager</option>
<option value="4">Administrator</option>
</select>
</td>
</tr>
<tr>
<td valign="top">Password:</td>
<td><input type="password" size="35" maxlength="15" name="Usermanager_password"></td>
</tr>
<tr>
<td><input type="hidden" name="Submit" value="1"></td>
<td>
<input type="submit" name="Usermanager_submit" value="Submit" onclick="d();">
&nbsp;&nbsp
<input type="reset" value="Reset">
</td>
</tr>
</table>
</form>

<script languaue="JavaScript1.2">
<!--
function d() {
document.Add_User.Usermanager_submit.disabled = true;
document.Add_User.submit()
return true;
}
-->
</script>

Verwijderd

Dit moet je niet client-side oplossen. De enige betrouwbare methode om zulke dingen te voorkomen is een limiet op het aantal posts dat iemand doet, of een vergelijking met de vorige post.

Verwijderd

en een languaue bestaat niet :)

Verwijderd

je moet instelle dat ze per minuut 1bericht kunne doen ofso , das makkelijker en veiliger

  • Blue-eagle
  • Registratie: September 2000
  • Niet online
Clientside kan, maar net zoals Cheatah zegt, doe het ook serverside. En op die manier zijn er verschillende methodes:
• check de tijd van de laatste post, geef ze een 10 tot 20 seconden verbod na het posten van een reply of een post.
• check in de database of er al een post of reply is met dezelfde tekst van deze user, en dan vergelijk je dat met alleen zijn/haar laatste post.

Ik gebruik de laatste methode. Omdat ik niet iemand wil limiteren in zijn post gedrag. Als het teveel wordt, ban ik diegene gewoon :)

  • PluueeR
  • Registratie: December 2000
  • Laatst online: 17-08 21:56
Op zaterdag 23 maart 2002 15:54 schreef Gordijnstok het volgende:
en een languaue bestaat niet :)
hummz, type, gaar dat IE daar niet om zeikt...... njah zo nog eens testen,

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Op zaterdag 23 maart 2002 16:27 schreef PluueeR het volgende:

[..]

hummz, type, gaar dat IE daar niet om zeikt...... njah zo nog eens testen,
Onbekende parameters worden gewoon genegeerd, da's niet gaar, maar normaal gedrag.

btw. Je hebt aardig wat dingen dubbelop in je form zitten. Een submit button met een onclick, een onsubmit die dezelfde functie aan wil roepen en true returned. :+

Today's subliminal thought is:


  • Yellow|A
  • Registratie: Maart 2000
  • Niet online

Yellow|A

Allotaja of rock and rollah

Op zaterdag 23 maart 2002 16:00 schreef Blue-eagle het volgende:
• check de tijd van de laatste post, geef ze een 10 tot 20 seconden verbod na het posten van een reply of een post.
• check in de database of er al een post of reply is met dezelfde tekst van deze user, en dan vergelijk je dat met alleen zijn/haar laatste post.
* Yellow|A is niet een groot dbase expert

Is het niet zo dat de tweede manier een stuk intensiever is voor je database. Er moet een stuk meer doorzocht worden wat betekend dat er een vertrging optreed. In kleinere aplicatie geen probleem, maar het lijkt me dat met een groot iets zoals bv GoT het wellicht meer load meebrengt dan de eerste misschien iets minder elegante oplossing.

Just curious :)

|{ brrr }] |


  • Blue-eagle
  • Registratie: September 2000
  • Niet online
Op zaterdag 23 maart 2002 19:10 schreef Yellow het volgende:

[..]

* Yellow|A is niet een groot dbase expert

Is het niet zo dat de tweede manier een stuk intensiever is voor je database. Er moet een stuk meer doorzocht worden wat betekend dat er een vertrging optreed. In kleinere aplicatie geen probleem, maar het lijkt me dat met een groot iets zoals bv GoT het wellicht meer load meebrengt dan de eerste misschien iets minder elegante oplossing.

Just curious :)
Nou, hier een stukje SQL, het moet iets anders, maar ik ben er niet zo`n held in, en ik heb m`n boekje op de zaak liggen :)
add into tblBerichten where [bericht] not in (select top 1 bericht from tblBerichten where userid = [uid] order by date)

edit:
Dit kost dus wel iets meer load, maar sommige mensen doen dit in 2 losstaande queries wat wel erg veel serverload kost, en dus performance :)

Die tijds oplossing vind ik niet erg handig, als je iemand ervan weerhoud om 20 seconden iets te posten, kan dat irritant zijn voor de snellen onder ons :)
Als iemand je board wilt flooden lukt dat toch wel. Maar je kunt in ieder geval voorkomen dat iemand per ongeluk een dubbelpost plaatst.

  • PluueeR
  • Registratie: December 2000
  • Laatst online: 17-08 21:56
Op zaterdag 23 maart 2002 18:43 schreef Annie het volgende:

[..]

Onbekende parameters worden gewoon genegeerd, da's niet gaar, maar normaal gedrag.

btw. Je hebt aardig wat dingen dubbelop in je form zitten. Een submit button met een onclick, een onsubmit die dezelfde functie aan wil roepen en true returned. :+
Ik ben dus compleet n00b met JS, heb het uit een ander draadje overgenomen.... en het werkte wonder boven wonder in IE..... mjah, in Mozilla nog steeds niet.

  • Blue-eagle
  • Registratie: September 2000
  • Niet online
Misschien zo?
code:
1
2
3
4
5
6
7
8
9
<script languaue="JavaScript1.2">
<!--
function d() {
document.forms[0].Usermanager_submit.disabled = "disabled";
document.forms[0].submit()
return true;
}
-->
</script>

?? Gokje :)

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Op zaterdag 23 maart 2002 19:20 schreef PluueeR het volgende:

[..]

Ik ben dus compleet n00b met JS, heb het uit een ander draadje overgenomen.... en het werkte wonder boven wonder in IE..... mjah, in Mozilla nog steeds niet.
Wat werkt er niet? Het submitten of het disablen van de input?
Ik heb even jouw code geprobeerd op NS6.2 en daar werkt 't gewoon (laatste mozilla heb ik hier niet).

Mogelijke work-around:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<form action="blaat.asp" method="post">
<input type="button" value="Submit" onclick="submitMe(this.form)" />
</form>
<script type="text/javascript" defer="defer">
var bFormSubmitted = false;

function submitMe(oForm)
{
    if (bFormSubmitted == false)
    {
    bFormSubmitted = true;
    oForm.submit();
    }
}
</script>

Today's subliminal thought is:


  • PluueeR
  • Registratie: December 2000
  • Laatst online: 17-08 21:56
Het bleek dus dat wanneer je FORM naam lower case is dat het werkt. Behalve dat Mozilla vraagt of je het wachtwoord wil opslaan :(
Pagina: 1