但是,我在每个变量的每一行上都得到未定义的索引错误。
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;
}
?>
请问这个问题是什么以及如何解决?谢谢。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
这个错误信息表明您在尝试访问一个数组中未定义的索引。具体来说,错误提示中的 "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" 的警告。
检查变量是否存在: 在访问之前,使用 isset()
函数来检查该键是否存在。
if (isset($_POST['name'])) {
$name = $_POST['name'];
} else {
$name = ''; // 或者给一个默认值
}
使用 Null Coalescing Operator: PHP 7 引入了空合并运算符 (??
),它提供了一种更简洁的方式来设置默认值。
$name = $_POST['name'] ?? '';
配置 error_reporting: 如果你不想在生产环境中显示这些警告,可以调整 error_reporting
设置来忽略未定义的索引警告。但这不解决根本问题,只是隐藏了警告信息。
error_reporting(E_ALL & ~E_NOTICE);
表单提交: 确保当您期望从表单接收数据时,表单确实包含了名为 name
的输入字段,并且是以 POST
方法提交的。
综上所述,推荐使用前两种方法之一来妥善处理可能未定义的数组索引,这将使您的代码更加健壮和易于维护。