Ik ben momenteel bezig met een beveiliging met javascript omdat naar mijn gevoel fijner werkt en ik dit toch ook wil oefenen.

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:

<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!
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.
sws is het cms afgeschermt voor buiten dus ik gebruik nu liever wel even javascript.

en uhm er staat heel veel info op google dus om te vinden wat je zoekt is niet altijd even makkelijk
Ook "binnen" kan men, bewust of onbewust, de boel belazeren.

Wat als iemand javascript uit heeft staan? Komt steeds minder voor, maar het kan nog steeds.
Geen controle?!?!
De metingen (wat dit script maakt) worden vervolgens gecontroleerd door de afdelings manager en dan kan die wel zien of het goed is of niet... en bij niemand hier staat javascript uit.

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.


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
Obelix gaf het antwoord al. Gewoon geel simpel
if(b <= 100) return true;

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

if(parseInt(b) <= 100) {
	return true;
}

Bedankt voor het helpen allebei.

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:

else if(parseInt(b) > 100) 
{
    alert("Je kan alleen getallen tussen de 0 t/m 100 invullen!");
    return false;
}


Het werkt :)
Waarom een alert? Verschrikkelijk die dingen (gelukkig kun je die tegenwoordig uitzetten).


<div id="notes">
</div>
<script>
if(parseInt(b) > 100)
{
    document.getElementById('notes').innerHTML = "Je kan alleen getallen tussen de 0 t/m 100 invullen!";
    return false;
}
</script>


Ja thanks voor de tip, maar dit willen ze zo :P

Reageren