Ik krijg deze foutmelding en ik kan er geen kop of staart van maken.
Het exacte foutbericht is:
FATALE FOUT: kan geen functie-return gebruiken
waarde in schrijfcontext in
/home/curricle/public_html/descarga/index.php
op regel 48
Lijn 48 is:
if (isset($_POST('sms_code') == TRUE ) {
Wat kan hier gaan?
Hier is de volledige functie:
function validate_sms_code() {
$state = NOTHING_SUBMITED;
if (isset($_POST('sms_code') == TRUE ) {
$sms_code = clean_up($_POST('sms_code'));
$return_code = get_sepomo_code($sms_code);
switch($return_code) {
case 1:
//no error
$state = CORRECT_CODE;
break;
case 2:
// code already used
$state = CODE_ALREADY_USED;
break;
case 3:
// wrong code
$state = WRONG_CODE;
break;
case 4:
// generic error
$state = UNKNOWN_SEPOMO_CODE;
break;
default:
// unknown error
$state = UNKNOWN_SEPOMO_CODE;
throw new Exception('Unknown sepomo code: ' . $return_code);
break;
}
} else {
$state = NOTHING_SUBMITED;
}
dispatch_on_state($state);
}
Antwoord 1, Autoriteit 100%
u bedoelt
if (isset($_POST['sms_code']) == TRUE ) {
Hoewel je overigens echt bedoelt
if (isset($_POST['sms_code'])) {
Antwoord 2, Autoriteit 439%
Dit gebeurt ook wanneer u leeg bent op een functie-rendement:
!empty(trim($someText)) and doSomething()
Omdat leeg geen functie is, maar een taalconstruct (niet zeker), en het kost alleen variabelen:
RECHTS:
empty($someVar)
verkeerd:
empty(someFunc())
Sinds PHP 5.5 ondersteunt het meer dan variabelen. Maar als u het nodig hebt vóór 5.5, gebruikt u trim($name) == false
. Van lege documentatie .
Antwoord 3, Autoriteit 20%
if (isset($_POST('sms_code') == TRUE ) {
Wijzig deze regel naar
if (isset($_POST['sms_code']) == TRUE ) {
U gebruikt ParentHeseis () voor $_POST
maar u wilde vierkante haakjes []
🙂
of
if (isset($_POST['sms_code']) && $_POST['sms_code']) {
//this lets in this block only if $_POST['sms_code'] has some value
Antwoord 4, Autoriteit 12%
Voor WordPress :
In plaats van:
if (empty(get_option('smth')))
zou moeten zijn:
if (!get_option('smth'))
Antwoord 5, autoriteit 10%
Correcte syntaxis (u had uiteindelijk haakjes):
if (isset($_POST['sms_code']) == TRUE ) {
^
ps. je hebt het == TRUE
gedeelte niet nodig, omdat BOOLEAN (true/false) al wordt geretourneerd.
Antwoord 6, autoriteit 4%
Dit kan in meer dan één scenario gebeuren, hieronder is een lijst met bekende scenario’s:
// calling empty on a function
empty(myFunction($myVariable)); // the return value of myFunction should be saved into a variable
// then you can use empty on your variable
// haakjes gebruiken om toegang te krijgen tot een element van een array, haakjes worden gebruikt om een functie aan te roepen
if (isset($_POST('sms_code') == TRUE ) { ...
// that should be if(isset($_POST['sms_code']) == TRUE)
Dit kan ook worden geactiveerd wanneer we proberen het resultaat van een functie zoals hieronder te verhogen:
$myCounter = '356';
$myCounter = intVal($myCounter)++; // we try to increment the result of the intVal...
// like the first case, the ++ needs to be called on a variable, a variable should hold the the return of the function then we can call ++ operator on it.
Antwoord 7, autoriteit 3%
Het probleem zit in de ()
die je moet gaan []
if (isset($_POST('sms_code') == TRUE)
door
if (isset($_POST['sms_code'] == TRUE)
Antwoord 8, autoriteit 3%
Ik had ook een vergelijkbaar probleem zoals de jouwe. Het probleem is dat u een oude PHP-versie gebruikt. Ik heb een upgrade naar PHP 5.6 en het probleem bestaat niet meer.
Antwoord 9
Nog een scenario waar deze fout is getreuggerd Due Syntaxisfout:
ucwords($variable) = $string;
Antwoord 10
Ik liep ook dit probleem op vanwege de syntaxisfout. “(” Gebruiken in plaats van “[” in Array Index:
foreach($arr_parameters as $arr_key=>$arr_value) {
$arr_named_parameters(":$arr_key") = $arr_value;
}
Antwoord 11
Deze fout is vrij goed en benadrukt een contextueel syntaxis-probleem. Kan worden gereproduceerd door het uitvoeren van een soort “niet-toewijsbare” syntaxis. Bijvoorbeeld:
Functie Syntaxis ($ Hallo) {…. Probeer vervolgens de functie te bellen als een eigenschap en een waarde toewijzen …. $ This- & GT; Syntaxis (‘Hallo’) = ‘Wereld’;
De bovenstaande fout zal worden gegooid omdat syntactisch de verklaring verkeerd is. De juiste toewijzing van ‘World’ kan niet worden geschreven in de context die u hebt gebruikt (d.w.z. syntactisch onjuist voor deze context). ‘Kan de functie van de functie retourneren niet gebruiken of het kan lezen’ kan de rechterwaarde niet toewijzen aan de functie omdat het alleen-lezen ‘
De specifieke fout in de OPS-code is zoals gemarkeerd, met behulp van haakjes in plaats van vierkante haakjes.
Antwoord 12
kan veroorzaken door verkeerde operator, =, wanneer het moet zijn ==
if(mysql_num_rows($result) = 1)
return $result;
else
return false;
Deze code gooit deze fout
Merk op dat = is toewijzingsoperator en geen vergelijkingsoperator. Fix is om te veranderen = tot ==.