我想知道我是否可以创建像函数john()这样的PHP函数,而不需要任何参数。 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';
}
登录-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 */
或者我必须返回一个字符串而不是布尔值吗?
答案 0 :(得分:2)
不,你的函数中不需要参数,因为你没有在函数中声明一个参数。回答变量,我打赌你在设置会话变量之前没有做session_start()
。
答案 1 :(得分:1)
您正在尝试访问$ _SESSION数组中的SESSION变量。此变量仅在两个条件下可用:
session_start()
(并且任何输出已发送到浏览器)。即使你正在使用COOKIE,你仍然需要为测试调用session_start()
以返回评估为true,因为你的IF语句中有一个逻辑AND:
if($_COOKIE['HA_CUST_LOGIN'] == 1 && $_SESSION["loggedIn"]=="1")
如果尚未调用session_start(),并且尚未设置参数$ _SESSION [&#34; loggedIn&#34;],则此IF语句将评估为false。您还应该在PHP日志中(以及在开发计算机上的浏览器中)收到通知/警告 - 如果没有,则需要在开发计算机上重新配置错误报告。