Ik gebruik in een javascript een pre-validatie voor de teksten in een form.
Want met de teksten wordt ook een bestand meegestuurd.
En wil voorkomen dat een bestand onnodig temp wordt opgeslagen
als er iets niet klopt in de tekst.
Nu is die validatie alphanumeriek met wat extra tekens.
Weet iemand hoe ik dit kan bereiken met PHP?
De code in javascript:
[code]
function isAlphaNumericplus(str) {

var code, i, len;

for (i = 0, len = str.length; i < len; i++) {
code = str.charCodeAt(i);
if (!(code > 47 && code < 58) && // numeric (0-9)
!(code > 64 && code < 91) && // upper alpha (A-Z)
!(code > 96 && code < 123) && //lower case (a-z)
!(code == 32) && // spatie
!(code == 96) && // '
!(code > 191 && code < 256)) // extra tekens {

document.getElementById('red').innerHTML = "6 Gebruik niet toegestane tekens. Herstel en kies bestand.";
return false;
}
}
return true;
};
En wil voorkomen dat een bestand onnodig temp wordt opgeslagen

Eh.. leg uit?
Zoals je zegt, het is een pre-validatie op de computer van de gebruiker - de JavaScript wordt daar uitgevoerd. Dus er wordt nog niets geupload omdat het formulier nog niet naar de webserver verzonden is.

Is er verwarring over wat waar wordt uitgevoerd? JavaScript is aan de client zijde actief (op de machine van de persoon die via een webbrowser dit formulier bekijkt), PHP is aan de server zijde actief (webserver). Er wordt pas informatie verzonden (al dan niet inclusief bestanden) wanneer het formulier wordt verstuurd van webbrowser naar webserver. Dit heb jezelf in beheer want dit regel je via JavaScript.
Ik gebruik een form.
In dit geval inputs met de locatie (cafe, theater, enz.)
Het complete adres.
En de datum.
Samen met deze gegevens wordt een bestand meegestuurd ( flyer in jpg).

Dit valideer ik clientside.
Daarmee probeer ik te voorkomen dat het bestand onnodig serverside wordt opgeslagen (kan tot 4Mb per bestand)
terwijl er in de locatie, de datum, en adres fouten kunnen zitten.
Dit kunnen best veel bestanden worden.
Vandaar dat ik ook beperkingen heb met betrekking tot het tijdstip van inleveren en verschijnen op de website.
ik weet dat er gerotzooid kan worden met clientsidescripts.
Vandaar dat deze validatie ook meer preventief is.
Ook serverside wordt de validatie uitgevoerd.
Ik vind de temp oplag serverside bij grote bestanden nogal traag.

Aan serverside kan ik wel valideren in alphanumeric.
Maar dat extra (speciale tekens) weet ik (nog) niet te regelen.
Vandaar het voorbeeld in javascript.
Bedankt overigens voor jullie snelle reactie...
Vandaar deze vraag.

Als je de tekst omzet naar allemaal hoofd of allemaal kleine letters werkt de validatie sneller. Een controle minder.
Als je met echte platte ASCII werkt (dus 256 karakters = geen Unicode) komt je validatie overeen met de volgende regular expression

/^[0-9a-zA-Z '\xBF-\xFF]*$/

Dit betekent: Van begin (^) tot eind ($) mag de tekst enkel bestaan uit de karakterreeksen tussen de blokhaken (waarbij x80-xFF ASCII 191 t/m 256 is - hexadecimaal). In plaats van het sterretje (dit betekent "0 of meer karakters" kun je ook nog "+" gebruiken (1 of meer karakters), of {x,y} = x tot y karakters.

Deze kun je zowel in Javascript als in PHP gebruiken

//javascript
if(!str.match(/^[0-9a-zA-Z '\xBF-\xFF]*$/)) //let op: geen quotes om de regular expression
  showJavascriptError();
//PHP
if(!preg_match("/^[0-9a-zA-Z '\xBF-\xFF]*$/",$str) //hier wel gewoon quotes (string)
  geefMeldingInPhp();

Als je pagina wel in Unicode is (bijvoorbeeld UTF-8) dan heeft dat laatste stuk mbt die ASCII 191 t/m 255 niet zoveel zin, want dan werkt het helemaal anders (sowieso: waarom wil je ASCII 191 t/m 255 wel toestaan - in mijn ASCII tabel staan daar de "teken symbolen / lijnen" en de Griekse letters in?).
Je vraag klinkt voor mij als een variant op https://www.phphulp.nl/php/forum/topic/form-submit-probleem-met-filehidden-inputs-validate/101696/

Daarin staat onder andere als reactie:

Thomas van den Heuvel op 21/10/2017 18:46:08

Als het foutloos invullen van het formulier zo'n heikel punt is zou je de bestanden apart kunnen uploaden (in een apart formulier - zie voor inspiratie bijvoorbeeld hoe je in gmail attachments kunt toevoegen), maar dit houdt dan ook in dat je het verwijderen (naast het verplaatsen naar een permanente(re) locatie) van bestanden zelf zult moeten regelen.


Lijkt me de meest eenvoudige oplossing.
Bedankt vroege vogels voor de snelle reacties...
Het gaat vooral om het eerste inputveld, de locatie.
Cafe's en andere gekegenheden gebruiken nogal eens aparte namen met leestekens.
Dat vang ik niet met uitsluitend alphanumeric valideren
Je kunt ook niet alles vangen.
Maar er zijn wel tekens die veelvuldig voor kunnen komen.
Ik kopieer en plak meestal zulke namen, haha
Ik sluit niet uit dat anderen dat ook zullen doen.
Het gaat ook niet om wachtwoorden of gebruikersnamen.
Dus ook spaties worden toegestaan.
Hier wat voorbeelden:

Sems restaurant/wijncafé
Café ‘t Golden Fust
Cafe Thús
3JO Campus Café
CULINAIRE GILDE BRABANÇONNE


En Den Haag heeft een restaurant dat ñ heet …

Ik denk dat je validatie van namen beter kunt vereenvoudigen tot: is er tekst ingevuld? Klaar.
Ward van der Put op 24/10/2017 11:12:24

En Den Haag heeft een restaurant dat ñ heet …

Ik denk dat je validatie van namen beter kunt vereenvoudigen tot: is er tekst ingevuld? Klaar.


Dat zit er ook al ingebakken....
Maar het is ook een experimentele site.
Waar ik behoorlijk wat zaken uitprobeer aan mogelijkheden.
En dan komen deze vragen ook voorbij.
Het aardige van dat javascript is dat er ook per letter of teken gevalideerd kan worden.
Wat ik heb begrepen is, dat het ook sneller zou zijn dan de regexper.
Maar met een korte regel maakt dat niet uit.
Hans De Ridder op 24/10/2017 11:30:12

Maar het is ook een experimentele site.

Voor een algoritme dat de namen van horeca-gelegenheden herkent? ;=)

Reageren