Notice: Undefined index: message


Notice: Undefined index: message

注意:未定义的索引:消息在C:'xampp'htdocs'mywebsite'Untitled9.php第27行

    <?php  session_start(); 
if ($_GET['message'] == "success" && $_SESSION['revisit'] == "0") {     
$_SESSION['revisit'] = "1";     ?>     
<script type="text/javascript">window.alert('Message successfully posted.');</script>     
<?php } ?>

第27行是....

if ($_GET['message'] == "success" && $_SESSION['revisit'] == "0") { 

如何解决这个问题?

您需要检查数组$_GET中是否存在键为message的项

isset($_GET['message'])

,同样的规则应用于会话项的第二次比较。所以完整的代码看起来像

if (isset($_GET['message']) && $_GET['message'] == "success" && isset($_SESSION['revisit']) && $_SESSION['revisit'] == "0") { 

即使有人建议你用@代替,也不要相信他们。这是邪恶的。照我说的做

这是notice而不是fatal error,这表明您可以通过更改error_reporting设置来抑制此错误,在代码行前添加@,或者检查变量是否首先存在。

if(isset($_GET['message']))

最后一个可能是最优雅的,因为它可以防止错误而不是抑制错误。但是,这里的抑制不是问题,因为它不会影响您的代码。

不假设已经设置了message参数:

if (isset($_GET['message']) && $_GET['message'] == 'success' && ...) {
  ...
}

或者,您可以提供一个默认值:

$message = isset($_GET['message']) ? $_GET['message'] : 'no_message';
if ($message == 'success' && ..) {...

try this:

if (isset($_GET['message']) && $_GET['message'] == "success" && $_SESSION['revisit'] == "0") {