Strlen-functie wil niet werken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jan van der Veeken

Jan van der Veeken

09/07/2016 21:07:11
Quote Anchor link
$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
Gewijzigd op 10/07/2016 08:55:18 door - Ariën -
 
PHP hulp

PHP hulp

15/11/2024 05:12:25
 
Ben van Velzen

Ben van Velzen

09/07/2016 21:41:10
Quote Anchor link
if(!$subuser strlen($subuser = trim($subuser)) == 0){ is op zijn minst incorrect. Wat probeer je hier te bereiken?
 
Thomas van den Heuvel

Thomas van den Heuvel

09/07/2016 23:36:43
Quote Anchor link
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.
 
Ben van Velzen

Ben van Velzen

10/07/2016 00:18:04
Quote Anchor link
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.
 
- Ariën  -
Beheerder

- Ariën -

10/07/2016 08:57:54
Quote Anchor link
Edit:
Titel aangepast naar wat duidelijkers. Gelieve hierin je probleemstelling of vraagstelling in te plaatsen. Een titel als 'foutmelding' is te globaal.
Alvast bedankt.
 
Ward van der Put
Moderator

Ward van der Put

10/07/2016 09:36:43
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if (!$subuser || strlen($subuser = trim($subuser)) == 0) {
    $form->setError($field, "* Username not entered");
}

?>

Logischer of op zijn minst beter leesbaar is dan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if (!isset($subuser) || empty(trim($subuser))) {
    $form->setError($field, "* Username not entered");
}

?>
 
Jan van der Veeken

Jan van der Veeken

10/07/2016 11:31:30
Quote Anchor link
Dank jullie voor jullie reactie dit was een script van JP Master en ik was daar wat mee aan het uitproberen.
Opgelost
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.