$field = "user"; //Use field name for username
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
if(!$subuser strlen($subuser = trim($subuser)) == 0){ is op zijn minst incorrect. Wat probeer je hier te bereiken?
Ik weet niet wat TS heeft gedronken maar mogelijk lust ik hier ook wel wat van :).

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.
Ooh dus gewoon if (strlen(trim($subuser)) === 0) {
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.
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");

Na if(!$subuser heb je een gat van 4 spaties. Lijkt erop dat je daar een operator mist:

<?php
if (!$subuser || strlen($subuser = trim($subuser)) == 0) {
    $form->setError($field, "* Username not entered");
}
?>

Logischer of op zijn minst beter leesbaar is dan:

<?php
if (!isset($subuser) || empty(trim($subuser))) {
    $form->setError($field, "* Username not entered");
}
?>
Dank jullie voor jullie reactie dit was een script van JP Master en ik was daar wat mee aan het uitproberen.
Opgelost

Reageren