Je reçois cette erreur et je ne peux pas en faire la tête ou la queue.
Le message d'erreur exact est:
Erreur fatale: impossible d'utiliser la valeur renvoyée par la fonction dans le contexte d'écriture dans /home/curricle/public_html/descarga/index.php à la ligne 48
La ligne 48 est:
if (isset($_POST('sms_code') == TRUE ) {
Quelqu'un sait ce qui se passe ???
PS Voici la fonction complète, au cas où cela aiderait:
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);
}
Vous voulez dire
if (isset($_POST['sms_code']) == TRUE ) {
si par hasard vous voulez vraiment dire
if(isset($_POST['sms_code'])) {
Cela se produit également lors de l'utilisation de empty sur un retour de fonction:
!empty(trim($someText)) and doSomething()
car empty n'est pas une fonction mais une construction de langage (pas sûr), et il ne prend que des variables:
Droite:
empty($someVar)
Faux:
empty(someFunc())
Depuis PHP 5.5, il supporte plus que des variables. Mais si vous en avez besoin avant la version 5.5, utilisez trim($name) == false
. De documentation vide .
if (isset($_POST('sms_code') == TRUE ) {
changer cette ligne en
if (isset($_POST['sms_code']) == TRUE ) {
Vous utilisez parentheseis () pour $_POST
mais vous vouliez des crochets []
:)
OR
if (isset($_POST['sms_code']) && $_POST['sms_code']) {
//this lets in this block only if $_POST['sms_code'] has some value
au lieu de:
if (empty(get_option('smth')))
devrait être:
if (!get_option('smth'))
Corrigez la syntaxe (il vous manquait une parenthèse):
if (isset($_POST['sms_code']) == TRUE ) {
^
p.s. vous n'avez pas besoin de la partie == TRUE
, car BOOLEAN (true/false) est déjà renvoyé.
Cela peut se produire dans plusieurs scénarios. Vous trouverez ci-dessous une liste de scénarios bien connus:
// 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
// utilisant des parenthèses pour accéder à un élément d'un tableau, les parenthèses sont utilisées pour appeler une fonction
if (isset($_POST('sms_code') == TRUE ) { ...
// that should be if(isset($_POST['sms_code']) == TRUE)
Cela pourrait également être déclenché lorsque nous essayons d'incrémenter le résultat d'une fonction comme ci-dessous:
$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.
J'ai aussi eu un problème similaire au vôtre. Le problème est que vous utilisez une ancienne version de PHP. J'ai mis à niveau vers PHP 5.6 et le problème n'existe plus.
Le problème est dans le ()
vous devez aller []
if (isset($_POST('sms_code') == TRUE)
par
if (isset($_POST['sms_code'] == TRUE)
Un autre scénario dans lequel cette erreur est déclenchée à cause d'une erreur de syntaxe:
ucwords($variable) = $string;
j'ai également rencontré ce problème en raison d'une erreur de syntaxe. Utilisation de "(" au lieu de "[" dans l’index de tableau:
foreach($arr_parameters as $arr_key=>$arr_value) {
$arr_named_parameters(":$arr_key") = $arr_value;
}