【发布时间】:2013-08-08 03:36:46
【问题描述】:
我很难使用isset() 函数。究竟我如何告诉 php 只有当数据被分配给我的时候,比如说 $_SESSION['msg'];变量,然后才激活它并使用它......到目前为止,我收到了很多通知:未定义的索引并且这段代码也没有这样做:
if (isset($_SESSION['monster']) &
isset($_SESSION['spol']) &
isset($_SESSION['combat']) &
isset($_SESSION['turns']) &
isset($_SESSION['zmaga']) &
isset($_SESSION['zguba']) &
isset($_SESSION['cekini']) &
isset($_SESSION['post']) )
{
$monster = $_SESSION['monster'];
$spol = $_SESSION['spol'];
$combat = $_SESSION['combat'];
$turns = $_SESSION['turns'];
$zmaga = $_SESSION['zmaga'];
$zguba = $_SESSION['zguba'];
$cekini = $_SESSION['cekini'];
$_POST = $_SESSION['post'];
}
数据应该从重定向的前一个站点分配给它,但该站点并不总是激活,所以我需要一个替代方案。这就是我问这个的原因。
使用完整代码编辑:
session_start();
include 'razno.php';
include 'save.php';
include 'stats.php';
$igralec_ime = $_SESSION['username'];
$monster = prikazi_borba($igralec_ime);
$poskodbe = prikazi_stat('curhp', $igralec_ime);
if (prikazi_stat('curhp', $igralec_ime) == 0)
{
$moznost = 'Tvoje zdravje je resno ogroženo, vrni se domov!';
}
else if (isset($_SESSION['monster']) &&
isset($_SESSION['spol']) &&
isset($_SESSION['combat']) &&
isset($_SESSION['turns']) &&
isset($_SESSION['zmaga']) &&
isset($_SESSION['zguba']) &&
isset($_SESSION['cekini']) &&
isset($_SESSION['post']) )
{
$monster = $_SESSION['monster'];
$spol = $_SESSION['spol'];
$combat = $_SESSION['combat'];
$turns = $_SESSION['turns'];
$zmaga = $_SESSION['zmaga'];
$zguba = $_SESSION['zguba'];
$cekini = $_SESSION['cekini'];
$_POST = $_SESSION['post'];
}
update_save($igralec_ime, 'gozd', $monster);
include '../html/gozd.html';
?>
【问题讨论】:
-
您使用的是按位 AND
&而不是逻辑 AND&&。 -
更简单,你可以使用
if(isset($var1, $var2, $var3, ...)),如果所有变量都设置好了,它将返回true。 -
谢谢,是的,很有可能会缩短我的代码。虽然问题仍然存在,但我更新了我的问题
-
我的猜测是,当未定义
$_SESSION索引时,您没有设置变量,但无论如何您稍后都会尝试使用它们。例如,您在if之后使用$monster,即使它可能未设置。