Strlen-functie wil niet werken
if(!$subuser strlen($subuser = trim($subuser)) == 0){
$form->setError($field, "* Username not entered");
Bij bovenstaande stukje script krijg ik de foutmelding unexpected identifier 'strlen' after variabele $subuser kan iemend zeggen wat hier fout is?
Groeten Jan van der Veeken
Gewijzigd op 10/07/2016 08:55:18 door - Ariën -
if(!$subuser strlen($subuser = trim($subuser)) == 0){ is op zijn minst incorrect. Wat probeer je hier te bereiken?
Waarschijnlijk wilde deze controleren of:
- de variabele $subuser bestaat (maar dit is een interne variabele, je weet zelf, als programmeur, toch wel of deze bestaat of niet?), en zoja
- of de waarde van de getrimde variant (waarom trimde je niet meteen bij de creatie van $subuser?) een niet-lege string is
Maar hiermee controleer je vooral wat $subuser niet is. Mogelijk is het makkelijker/handiger om te controleren of $subuser wel aan bepaalde condities voldoet, zoals een patroon ofzo.
Maar ik ben het helemaal met Thomas eens dat dit een beetje de omgekeerde manier van werken is; whitelisting is altijd vele malen eenvoudiger dan blacklisting.
Het grappige is hier dat in theorie de toewijzing inderdaad zoals je doet technisch mogelijk werkt, in deze vorm:
if (strlen($subuser = trim($subuser)) === 0) {
Uiteraard niet getest, ik ben fel tegen het hebben van dit soort combinaties; side effects van dit soort binnen een if hebben altijd de neiging niet de uitwerking te hebben die je wilt, bijvoorbeeld door de toepassing van OR's etc icm lazy evaluation.
Edit:
Titel aangepast naar wat duidelijkers. Gelieve hierin je probleemstelling of vraagstelling in te plaatsen. Een titel als 'foutmelding' is te globaal.
Alvast bedankt.
Alvast bedankt.
Jan van der Veeken op 09/07/2016 21:07:11:
$field = "user"; //Use field name for username
if(!$subuser strlen($subuser = trim($subuser)) == 0){
$form->setError($field, "* Username not entered");
if(!$subuser strlen($subuser = trim($subuser)) == 0){
$form->setError($field, "* Username not entered");
Na if(!$subuser heb je een gat van 4 spaties. Lijkt erop dat je daar een operator mist:
Code (php)
Logischer of op zijn minst beter leesbaar is dan:
Opgelost