Сообщение об ошибке: Неустранимая ошибка: невозможно использовать функцию return> value в контексте записи в - PullRequest
6 голосов
/ 16 ноября 2010

Я пытаюсь запустить какой-нибудь код из книги .Кажется, есть проблема с кодом.

Вот сообщение об ошибке:

Неустранимая ошибка: Невозможно использовать возвращаемое значение функции в контексте записи в / Applications / MAMP / htdocs / Eclipse-Workspace / simpleblog / test.php в строке 24

Вот код, указанный в сообщении (начиная со строки 24)

if (!empty(trim($_POST['username'])) 
        && !empty(trim($_POST['email']))) { 
        // Store escaped $_POST values in variables 
            $uname = htmlentities($_POST['username']); 
            $email = htmlentities($_POST['email']); 

            $_SESSION['username'] = $uname; 

            echo "Thanks for registering! <br />", 
                "Username: $uname <br />", 
                "Email: $email <br />"; 
        } 

Буду признателен за любую помощь.Пожалуйста, дайте мне знать, если мне нужно предоставить дополнительную информацию


Большое спасибо, ребята.Это было очень быстро.Решение отлично работает.

Проблема в том, что функцию empty () нужно применять только к прямым переменным.

Для дальнейшего использования: код взят из «PHP для абсолютных новичков» Джейсона Ленгсторфа (2009), страницы 90-91, глава 3, $ _SESSION

исправленный код:

    //new - Created a variable that can be passed to the empty() function
    $trimusername = trim($_POST['username']);

    //modified - applying the empty function correctly to the new variable 
    if (!empty($trimusername) 
    && !empty($trimusername)) { 

    // Store escaped $_POST values in variables 
    $uname = htmlentities($_POST['username']); 
    $email = htmlentities($_POST['email']); 

    $_SESSION['username'] = $uname; 

    echo "Thanks for registering! <br />", 
        "Username: $uname <br />", 
        "Email: $email <br />"; 
} 

Ответы [ 2 ]

6 голосов
/ 16 ноября 2010

Вкратце: функция empty() работает только с переменными

<?php
empty($foo); // ok
empty(trim($foo)); // not ok

Я бы сказал, что для дальнейшего изучения этой книги просто используйте временныйпеременная

, поэтому измените:

if (!empty(trim($_POST['username'])) 

на

$username = trim($_POST['username']);
if(!empty($username)) { 
     //....
3 голосов
/ 16 ноября 2010

Именно ваш пример упоминается в руководстве

Примечание:

empty () проверяет только переменные, так как все остальное приведет к ошибке разбора. Другими словами, следующее не будет работать: пусто (trim ($ name)).

Использовать временную переменную или просто проверить "пустую строку"

if (trim($foo) !== '') {
    // Your code
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...