Функция PHP без имени возвращает true или false - PullRequest
0 голосов
/ 06 декабря 2011

Я хочу знать, могу ли я сделать функцию PHP, например, функцию john (), без каких-либо параметров.Всегда ли функции PHP должны иметь такой параметр, как john ($ action)?

Мой скрипт ниже не будет работать из-за моего пустого действия.Нужно ли передавать значение NULL в качестве параметра?

funcs.php

function is_customer_logged_in() {
    if($_COOKIE['HA_CUST_LOGIN'] == 1 && $_SESSION["loggedIn"]=="1"){
        return true;
    }else{
        return false;
    }
}

index.php

include("funcs.php");

if(is_customer_logged_in()) {
    echo 'logged in';
} else {
    echo 'not signed in';   
}

login-form.php

/* pseudo code, if form details
    match mySQL do this */

    $_SESSION["loggedIn"]="1";
    $_SESSION["userEmail"]=$username; //form variable
    $_SESSION["userID"]=$username; //form variable
    setcookie("HA_CUST_LOGIN", 1); // set a cookie and a session from a php salt db check
    echo '<script type="text/javascript">window.location="index.php"</script>';

    /* else go back to login-form.php */

Или мне нужно возвращать строку, а не логическое значение?

Ответы [ 2 ]

2 голосов
/ 06 декабря 2011

Нет, вам не нужен параметр в вашей функции, поскольку вы не объявили его в своей функции. Вывод переменных, я уверен, что вы не сделали session_start() до установки переменных сеанса.

1 голос
/ 06 декабря 2011

Вы пытаетесь получить доступ к переменной SESSION в массиве $ _SESSION.Эта переменная будет доступна только при двух условиях:

  1. Вы ранее указали значение для $ _SESSION ['loggedIn']
  2. (если страница / скрипт был запрошен снова)Вы вызвали session_start() перед тем, как пытаться получить доступ к массиву $ _SESSION () (и любой вывод был отправлен в браузер).

Даже если вы используете COOKIE, вам все равно нужно вызватьsession_start() для вашего теста, чтобы вернуть значение true, потому что в вашем операторе IF есть логическое И:

if($_COOKIE['HA_CUST_LOGIN'] == 1 && $_SESSION["loggedIn"]=="1")

Если не был вызван session_start (), а параметр $ _SESSION ["loggedIn"]не было установлено, это утверждение IF будет оценивать как ложное.Вы также должны получать уведомления / предупреждения в журналах PHP (и в браузере, если вы находитесь на компьютере разработчика) - если нет, то вам необходимо перенастроить отчеты об ошибках на компьютере разработчика.

...