我正在 aaa.php 文件中处理一个表单,其中的复选框在“name”参数中使用方括号:
<form method="get" action="bbb.php"> <input type="checkbox" id="eleve_element_18" name="eleve_element_18[]" value="1"> </form>
表单位于aaa.php文件中,并使用GET方法。
提交时,aaa.php文件会跳转到bbb.php文件,该文件显示提交的数据以供用户检查,然后是否返回aaa.php文件修改数据或将其保存在数据库。在最后一种情况下,ccc.php 文件保存数据。
为了完成这项工作,我使用GET方法将URL中aaa.php提交的所有de数据写入bbb.php文件中。因此,bbb.php 中的 PHP 命令行检索 URL 中显示的数据,并将 aaa.php 提交的数据写入到 ccc.php 文件的链接,以便 ccc.php 文件可以将数据插入数据库中.
问题在于 GET 方法使 Web 浏览器重写方括号 [],如下所述:表单提交时对表单 GET 键方括号进行编码。因此:
• bbb.php 文件在保存数据之前无法显示复选框值;
• 如果我使用 POST 方法,bbb.php 文件会显示复选框值,但我无法访问已提交的数据,无法将 URL 重写到 ccc.php 文件。
这是代码:
• aaa.php
//This part of the code writes the checkboxes lines $listeelementssignifiants = $dbco->query('SELECT * from referentiels'); while ($referentiel=$listeelementssignifiants->fetch()) { echo '<input type="checkbox" id="eleve_element_' . $eleves['numero_eleve'] . '" name="eleve_element_' . $eleves['numero_eleve'] . '[]" value="' . $referentiel['numero'] . '"><label class="elementsignifiant" for="eleve_element_' . $eleves['numero_eleve'] . '">' . $referentiel['element'] . '</label><br>'; }
• bbb.php
//These lines retrieve the URL written by the GET method and build a new URL to ccc.php if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') $url = "https://"; else $url = "http://"; $url .= $_SERVER['HTTP_HOST'] . str_replace("bbb.php", "ccc.php", $_SERVER['REQUEST_URI']); //Bouton Valider echo '<button type="button" onclick="location.href=\'' . $url . '\'" class="valider">Valider</button>';
使用 GET 方法,结果 URL 为:
https://domainname/bbb.php?...&matiere_18=ulis&numero_eleve=18&objectifs_18=dfsdfs&activites_18=sdfsdgfdgdfgd&aesh_18=fgdfgdfgd&commentaires_18=fghdfhqdhdghd&eleve_element_18%5B%5D=1&eleve_element_18%5B%5D=47&eleve_element_18%5B%5D=73
在这种情况下是否可以保留方括号并使用 GET 方法?
感谢您的回答和评论!
P粉1470452742024-01-11 15:27:32
根据您的建议,这是我发现问题的方法:
• aaa.php 包含表单,现在使用 POST 方法提交数据;
• bbb.php 读取$_POST 中的数据并显示结果。 bbb.php中有两处代码修改:
► 将 $_GET 更改为 $_POST;
► 添加会话变量来存储 $_POST 数据:
$_SESSION['data'] = $_POST;
• ccc.php 读取会话变量,就像它是 $_POST 一样。而不是:
$dump = $_POST['fieldfromform'];
我写道:
$dump = $_SESSION['data']['fieldfromform'];
现在 ccc.php 像以前一样将数据存储在数据库中!
感谢您的帮助!