[OPGELOST] Maximaal 100 met javascript
nu zit ik met het probleem dat ik wil dat er maximaal tot 100 ingevoerd kan worden. er zit al een beveiliging in van max 3 characters en een beveiliging van alleen cijfers, maar het is nu nog wel mogelijk om bijvoorbeeld getallen boven de 100 in te voeren zoals 101.
Weet iemand hoe je dit met javascript tegen gaat en dan een melding weergeeft?
Huidige code:
Code (php)
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<script>
function validateForm()
{
var a=document.forms["personalia"]["b_followed_links"].value;
var b=document.forms["personalia"]["b_internal_links"].value;
var atpos=b.indexOf("@");
var dotpos=b.lastIndexOf(".");
if (a==null || a=="")
{
alert("Er is niks ingevuld bij followed!");
return false;
}
else if (IsNumeric(a)==false)
{
alert("Het veld followed hoort alleen uit cijfers te bestaan, dus niet uit rare tekens of letters!");
return false;
}
else if (a.length <= 0 || a.length >= 4)
{
alert("Vul minimaal 1 cijfer tot maximaal 3 cijfers in bij followed. als het 0 is vul dan 0 nul!");
return false;
}
if (b==null || b=="")
{
alert("Er is niks ingevuld bij internal!");
return false;
}
else if (IsNumeric(b)==false)
{
alert("Het veld internal hoort alleen uit cijfers te bestaan, dus niet uit rare tekens of letters!");
return false;
}
else if (b.length <= 0 || b.length >= 4)
{
alert("Vul minimaal 1 cijfer tot maximaal 3 cijfers in bij internal. als het 0 is vul dan 0 nul!");
return false;
}
}
// check for valid numeric strings
function IsNumeric(strString)
{
var strValidChars = "0123456789";
var strChar;
var blnResult = true;
if (strString.length == 0) return false;
// test strString consists of valid characters listed above
for (i = 0; i < strString.length && blnResult == true; i++)
{
strChar = strString.charAt(i);
if (strValidChars.indexOf(strChar) == -1)
{
blnResult = false;
}
}
return blnResult;
}
var input = document.getElementById('txtWeight');
input.addEventListener('change', function(e)
{
var num = parseInt(this.value, 10),
min = 0,
max = 1;
if (isNaN(num))
{
this.value = "";
return;
}
this.value = Math.max(num, min);
this.value = Math.min(num, max);
});
</script>
function validateForm()
{
var a=document.forms["personalia"]["b_followed_links"].value;
var b=document.forms["personalia"]["b_internal_links"].value;
var atpos=b.indexOf("@");
var dotpos=b.lastIndexOf(".");
if (a==null || a=="")
{
alert("Er is niks ingevuld bij followed!");
return false;
}
else if (IsNumeric(a)==false)
{
alert("Het veld followed hoort alleen uit cijfers te bestaan, dus niet uit rare tekens of letters!");
return false;
}
else if (a.length <= 0 || a.length >= 4)
{
alert("Vul minimaal 1 cijfer tot maximaal 3 cijfers in bij followed. als het 0 is vul dan 0 nul!");
return false;
}
if (b==null || b=="")
{
alert("Er is niks ingevuld bij internal!");
return false;
}
else if (IsNumeric(b)==false)
{
alert("Het veld internal hoort alleen uit cijfers te bestaan, dus niet uit rare tekens of letters!");
return false;
}
else if (b.length <= 0 || b.length >= 4)
{
alert("Vul minimaal 1 cijfer tot maximaal 3 cijfers in bij internal. als het 0 is vul dan 0 nul!");
return false;
}
}
// check for valid numeric strings
function IsNumeric(strString)
{
var strValidChars = "0123456789";
var strChar;
var blnResult = true;
if (strString.length == 0) return false;
// test strString consists of valid characters listed above
for (i = 0; i < strString.length && blnResult == true; i++)
{
strChar = strString.charAt(i);
if (strValidChars.indexOf(strChar) == -1)
{
blnResult = false;
}
}
return blnResult;
}
var input = document.getElementById('txtWeight');
input.addEventListener('change', function(e)
{
var num = parseInt(this.value, 10),
min = 0,
max = 1;
if (isNaN(num))
{
this.value = "";
return;
}
this.value = Math.max(num, min);
this.value = Math.min(num, max);
});
</script>
Toevoeging op 28/05/2014 12:47:56:
Sorry voor twee keer posten, ik weet niet hoe dit is gebeurt, klikte maar 1 keer op de submit!
Gewijzigd op 28/05/2014 13:47:28 door Racoon smasher
Racoon smasher op 28/05/2014 12:47:05:
Ik ben momenteel bezig met een beveiliging met javascript omdat naar mijn gevoel fijner werkt en ik dit toch ook wil oefenen.
Beveiligen doe je niet met (alleen) javascript. Daarvoor is het te onveilig/onbetrouwbaar.
Gaat naar mijn idee niet om je gevoel, maar om de betrouwbaarheid van hetgeen wordt ingevoerd door de gebruiker.
Je kunt toch de waarde van een veld opvragen en controleren of die <0 of > 100 is?
Kan me niet zo goed voorstellen dat Google daar niet een voorbeeld van heeft.
Gewijzigd op 28/05/2014 12:56:20 door Obelix Idefix
en uhm er staat heel veel info op google dus om te vinden wat je zoekt is niet altijd even makkelijk
Gewijzigd op 28/05/2014 12:57:02 door racoon smasher
Wat als iemand javascript uit heeft staan? Komt steeds minder voor, maar het kan nog steeds.
Geen controle?!?!
Gewijzigd op 28/05/2014 12:58:06 door Obelix Idefix
is er nog iemand met een antwoord?
Obelix en Idefix op 28/05/2014 12:53:05:
Je kunt toch de waarde van een veld opvragen en controleren of die <0 of > 100 is?
Kan me niet zo goed voorstellen dat Google daar niet een voorbeeld van heeft.
Kan me niet zo goed voorstellen dat Google daar niet een voorbeeld van heeft.
als ik daar iets op zoek dan krijg ik scripts dat die checkt of het boven de 100 tekens is, maar het gaat erom dat het niet boven het getal 100 komt, dus geen 101
Javascript is ideaal als realtime validatie. Javascript kan sneller een foutmelding weergeven dan eerst een POST afwachten. 'Nadeel', maar een vereiste is dat je de zelfde validatie ook in PHP moet doen. Javascript is heel makkelijk te manipuleren en dus totaal onbetrouwbaar.
'sws is het cms afgeschermt voor buiten'* zijn geen geldige regels om niet aan validatie/beveiliging te doen. Er zijn altijd grapjassen bij (:-)) of het gebeurd onbedoeld.
* sws bestaat niet.
afgeschermd is met een d.
Toevoeging op 28/05/2014 13:35:24:
Om trouwens zeker te weten dat het een int is zou ik het zo doen
Tuurlijk is het altijd mogelijk dat er grapjassen zijn, maar we werken hier met mensen die hun werk serieus nemen en mocht het zo zijn dat er wordt gegrapt of er iets mis gaat, dan hebben we hier meerdere mensen die het binnen 5 minuten kunnen oplossen.
Aangepast en gecheckt of werkt:
Code (php)
1
2
3
4
5
2
3
4
5
else if(parseInt(b) > 100)
{
alert("Je kan alleen getallen tussen de 0 t/m 100 invullen!");
return false;
}
{
alert("Je kan alleen getallen tussen de 0 t/m 100 invullen!");
return false;
}
Het werkt :)
Gewijzigd op 28/05/2014 14:40:16 door racoon smasher
Dan moet je zeggen dat ze niet in de vorige eeuw moeten blijven hangen ;-)
Zal ik doen, ik bewaar sws alle tips, want moet in deze zomer vakantie nieuw cms bouwen en daar ga ik overal fout afhandeling in stoppen en mysqli enzovoort, want dat cms moet op en top veilig zijn, dus dat gaat een zware klus worden.
Nou succes dan :-) Ik zou dan niet kiezen voor MySQLi, maar voor PDO met prepared statements. Dat is veiliger.
Als je je verveelt in de zomer kun je je Nederlands nog wat verbeteren ;-). 4 fouten in één zin is best knap.