我正在尝试根据3个条件制作图像外观和消失,
条件A =当用户登录并且其用户名符合显示名称(通过使用GET功能)时,它应回显“是”
条件B =当用户登录并且其用户名不符合显示名称时,它应回显“否”
条件C =当用户未登录时,它应该回显“否”
(我将图片换成是和否以便于参考)
通过登录,用户有一个cookie,其设置如下
setcookie("user", $user, $expire);
setcookie("loggedin", 1, $expire);
首先我获取用户登录时设置的cookie。
$user1 = $_COOKIE["user"];
$loggedin = $_COOKIE['loggedin'];
$user = strtoupper($user1);
然后我得到我的球员名字
$playername = $_GET['player'];
现在我做了条件
$uplayername = strtoupper($playername);
function showplusicon(){
global $uplayername;
if(($loggedin = "1") and ($user == $uplayername)){
echo "yes";
}
else if (($loggedin = "1") and ($user != $uplayername)){
echo "no";
}
else{
echo "no";
}
}
我没有看到问题是什么,但它一直被注册为条件B.
答案 0 :(得分:3)
分配单个等号,而不是比较。
if(($loggedin == "1") and ($user == $uplayername)){
...
由于你实际上只有两种输出状态,所以你不需要3个条件;删除条件B。
答案 1 :(得分:2)
在函数$loggedin
中未知变量showplusicon()
。您需要将其添加为global
以及global $uplayername
。
function showplusicon(){
global $loggedin, $uplayername;
// etc
}
由于这被接受但并非完全完成,我只是添加其他人指出的,需要使用==
等于运算符而不是=
赋值运算符。
if(($loggedin == "1")
^^^^
答案 2 :(得分:1)
$loggedin = "1"
当然应该是:
$loggedin == "1"
否则我会回显$ user和$ uplayername以查看它们是否不同。
答案 3 :(得分:1)
第一件事是第一件事:
$loggedin = "1"
是一个坏主意,因为您实际上将$loggedin
赋予值“1”而不是比较。如果您确定数据类型,请使用==
甚至===
。
此外,$loggedin
在showplusicon()
范围内不可用,因为您没有像$uplayername
那样将其宣布为全局。
修复上面列出的问题,它应该会更好一些。
答案 4 :(得分:1)
如果您在理解自己的代码逻辑时遇到问题,一种简单的方法是将条件分配给自言自语的变量以便习惯它:
$userIsLoggedIn = $loggedin == "1";
$userIsPlayer = $user == $uplayername;
变量使您可以在一开始就轻松调试代码
var_dump($userIsLoggedIn, $userIsPlayer);
以便找出实际错误:
$loggedin
未定义=
),而不是比较它(==
或===
)。然后,您可以使用更易读的代码流来使您的决策更加明显:
if ($userIsLoggedIn)
{ // user is logged in
if ($userIsPlayer)
{ // user is player
...
}
else
{ // user is not player
...
}
}
else
{ // user is not logged in
...
}
根据您想要输出的内容,甚至可以简化:
if ($userIsLoggedIn && $userIsPlayer)
{
echo 'yes';
} else
{
echo 'no';
}
希望这对你有所帮助。
答案 5 :(得分:0)
您的主要问题是变量的全局范围:
<?php
//Get cookie info
$cookie['user'] = $_COOKIE["user"];
$cookie['loggedin'] = (isset($_COOKIE['loggedin'])&&$_COOKIE['loggedin']=='1')?TRUE:FALSE;
//Set user array
$user['user'] = strtoupper($cookie['user']);
$user['loggedin'] = $cookie['loggedin'];
$user['player'] = $_GET['player'];
$user['uplayername']=strtoupper($user['player']);
function showplusicon(){
//Made $user array available within function
global $user;
if($user['loggedin'] === TRUE && $user['user'] == $user['uplayername']){
echo "yes";
}else{
echo "no";
}
}
?>