PHP:无法读取复选框的|$_GET为空。为什么?

PHP:无法读取复选框的|$_GET为空。为什么?,php,html,checkbox,get,Php,Html,Checkbox,Get,我只想读取选中了哪些复选框,但我总是得到这样一条消息:索引未定义,而在$\u get中什么都没有 所以也许你可以告诉我为什么,以及我如何修复它。我的php代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>title</title> </head> <body> <f

我只想读取选中了哪些复选框,但我总是得到这样一条消息:索引未定义,而在$\u get中什么都没有

所以也许你可以告诉我为什么,以及我如何修复它。我的php代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
      <title>title</title>
</head>

<body>

<form action="checkbox.php">
<input type="hidden" name="sent" value="yes">
<input type="checkbox" name="name[]" value="hello" checked>hello<br>
<input type="checkbox" name="name[]" value="cu"checked>cu<br>
<input type="checkbox" name="name[]" value="test"checked>test<br>
<input type="checkbox" name="name[]" value="test2"checked>test2<br>
<input type="checkbox" name="name[]" value="bond"checked>bond<br>
<input type="submit">
</form>

<?php
error_reporting(E_ALL);
var_dump($_GET);
print_r($_GET["sent"]);
     $sent = $_GET['sent'];                     
     $name = $_GET['name']; 

     if ($sent == 'yes') {
             $name_test = implode(', ',$name);

            print_r($name_test);
     }
?>
</body>
</html>
如果我在windows cmd中运行脚本,使用xampp会得到以下响应:

PS C:\xampp\php> php-cgi G:\1\checkbox.php
X-Powered-By: PHP/5.5.11
Content-type: text/html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
      <title>title</title>
</head>

<body>

<form action="checkbox.php">
<input type="hidden" name="sent" value="yes">
<input type="checkbox" name="name[]" value="hello" checked>hello<br>
<input type="checkbox" name="name[]" value="cu"checked>cu<br>
<input type="checkbox" name="name[]" value="test"checked>test<br>
<input type="checkbox" name="name[]" value="test2"checked>test2<br>
<input type="checkbox" name="name[]" value="bond"checked>bond<br>
<input type="submit">
</form>

array(1) {
["G:\1\checkbox_php"]=>
string(0) ""
}
<br />
<b>Notice</b>:  Undefined index: sent in <b>G:\1\checkbox.php</b> on line <b>22</b><br   />
<br />
<b>Notice</b>:  Undefined index: sent in <b>G:\1\checkbox.php</b> on line <b>23</b><br />
<br />
<b>Notice</b>:  Undefined index: name in <b>G:\1\checkbox.php</b> on line <b>24</b><br />

</body>
</html>
我不明白,为什么$u GET变量中没有任何内容。这段代码就是一个例子。我在一个德语教程网站上找到的

我通过复制代码并为您更改名称来测试它。

猜这就是您想要的输出

你的php是这样的吗

    <?php
error_reporting(E_ALL);

if(isset($_GET["sent"]))
{

     $sent = $_GET['sent'];                      

     if ($sent == 'yes') {
if(isset($_GET['name'])){
echo "<h2> These boxes were checked</h2>";
      foreach($_GET['name'] as $name)
{
echo $name . "<br />";
}
}
else
 echo "nothing was checked";

     }
}
?>

当你点击提交时,它会给出你想要的结果。

你的错误是因为在你第一次加载脚本时,$\u-GET是空的,直到你提交你的表单,$\u-GET['sent']和$\u-GET['name']都会有赋值,我做了这个修复,它可以工作:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
      <title>title</title>
</head>

<body>

<form action="checkbox.php">
<input type="hidden" name="sent" value="yes">
<input type="checkbox" name="name[]" value="hello" checked>hello<br>
<input type="checkbox" name="name[]" value="cu"checked>cu<br>
<input type="checkbox" name="name[]" value="test"checked>test<br>
<input type="checkbox" name="name[]" value="test2"checked>test2<br>
<input type="checkbox" name="name[]" value="bond"checked>bond<br>
<input type="submit">
</form>

<?php
if (array_key_exists('sent', $_GET) || array_key_exists('name', $_GET))
{
error_reporting(E_ALL);
var_dump($_GET);
print_r($_GET["sent"]);
     $sent = $_GET['sent'];                     
     $name = $_GET['name']; 

     if ($sent == 'yes') {
             $name_test = implode(', ',$name);

            print_r($name_test);
     }
}
?>
</body>
</html>

是的,我现在知道了,但这不是我的问题。我想要一个数组,在那里我可以看到哪个框被选中。但是我不明白,为什么?你看到url参数中的值了吗?add method=get到你的表单中,然后看到听说你可能想先提交表单,以便$\u get被填充。这并不是关于脚本的修复。它不起作用,因为OP是在shell中而不是在Web服务器中执行此操作。在这种情况下,您可以尝试以下方法:php-e checkbox.php name[]=hello&name[]=cu&name[]=test&sent=yes不确定windows。但在linux上,这是行不通的