开发者社区 问答 正文

PHP注意:未定义的索引:第2行/path/to/file.php中的名称[重复]


但是,我在每个变量的每一行上都得到未定义的索引错误。

PHP Notice:  Undefined index: name in /path/to/file.php on line 2

形式:https://jsfiddle.net/dg1ur9fc/

PHP:

<?php
/* Error Reporting */
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

if(isset($_POST)){
    $name   = $_POST['fullname'];
    $number = $_POST['number'];
    $email  = $_POST['email'];
    $brand  = $_POST['brand'];
    $model  = $_POST['model'];
    $variant = $_POST['variant'];
    $screen = $_POST['screen'];
    $body = $_POST['body'];
    $power = $_POST['power'];
    $battery = $_POST['battery'];
    $charge = $_POST['charge'];
    $calls = $_POST['calls'];
    $fcamera = $_POST['fcamera'];
    $rcamera = $_POST['rcamera'];
    $water = $_POST['water'];
    $wifi = $_POST['wifi'];
    $formcontent = "From: $name \n Contact: $number \n Device Brand: $brand \n Device Model: $model \n Device Variant: $variant \n Screen: $screen \n Housing: $body \n Is your device able to power on? $power \n Does your device have a fault battery? $battery \n Is your device able to charge? $charge \n Does your front camera work? $fcamera \n Does your rear camera work? $rcamera \n Is your device water damaged? $water \n Is your device able to connect using WiFi? $wifi";
    $recipient = "test@example.com";
    $subject = "Buyback Request";
    $mailheader = "From: $email \r\n";
    mail($recipient, $subject, $formcontent, $mailheader);
    /* Redirect browser */
    header("Location: https://example.com");
    /* Make sure that code below does not get executed when we redirect. */
    exit;
}
?>
请问这个问题是什么以及如何解决?谢谢。

展开
收起
社区秘书 2019-12-09 15:57:12 496 分享 版权
阿里云 AI 助理回答

这个错误信息表明您在尝试访问一个数组中未定义的索引。具体来说,错误提示中的 "Undefined index: name" 意味着您正在尝试访问名为 name 的数组键,但该键在当前上下文中并不存在。

以您提供的代码示例为例:

<?php
foreach ($_POST as $key => $value) {
    echo "$key: $value\n";
}
$name = $_POST['name']; // 这一行可能导致错误
?>

在这个例子中,如果 $_POST 数组中没有 'name' 这个键,当脚本尝试访问 $_POST['name'] 时,PHP 就会抛出 "Undefined index: name" 的警告。

解决方法

  1. 检查变量是否存在: 在访问之前,使用 isset() 函数来检查该键是否存在。

    if (isset($_POST['name'])) {
       $name = $_POST['name'];
    } else {
       $name = ''; // 或者给一个默认值
    }
    
  2. 使用 Null Coalescing Operator: PHP 7 引入了空合并运算符 (??),它提供了一种更简洁的方式来设置默认值。

    $name = $_POST['name'] ?? '';
    
  3. 配置 error_reporting: 如果你不想在生产环境中显示这些警告,可以调整 error_reporting 设置来忽略未定义的索引警告。但这不解决根本问题,只是隐藏了警告信息。

    error_reporting(E_ALL & ~E_NOTICE);
    
  4. 表单提交: 确保当您期望从表单接收数据时,表单确实包含了名为 name 的输入字段,并且是以 POST 方法提交的。

综上所述,推荐使用前两种方法之一来妥善处理可能未定义的数组索引,这将使您的代码更加健壮和易于维护。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
问答地址: