【发布时间】:2020-09-28 22:42:49
【问题描述】:
我正在使用 url 发送一个 id。但是,我只能在页面加载时访问 $GET['id'] 变量。当我继续提交表单时,变量未定义。可能是什么问题
if(isset($_GET['id'])) {
$tripId = htmlspecialchars($_GET['id']);
}
if (isset($_POST['submit'])) {
for($i = 0; $i < count($_POST['package']); $i++) {
//check if there are any errors before proceeding
if(array_filter($errors)) {
print_r($errors);
} else {
$package = mysqli_real_escape_string($con, $_POST['package'][$i]);
$price = mysqli_real_escape_string($con, $_POST['price'][$i]);
$sql = "INSERT INTO packages(tripId,packageName,packagePrice) VALUES('$tripId','$package','$price')";
}
//check and redirect
if(mysqli_query($con, $sql)) {
header('location: admin_home.php');
} else {
echo 'error' . mysqli_error($con);
}
}
}
【问题讨论】:
-
那么提供给
action表单的URL可能不会传递GET变量。 -
如果您使用 POST 提交表单,则不会填充 $_GET 数组
-
是否可以获取 'id' 变量并将其持久化到 post 请求中?
-
@Mitya 确实如此,我可以在页面加载后立即访问变量,但是当我提交表单时,它是未定义的
-
@AlexGoonerArteta 是的,如果你 a) 将它放在表单的“action”方法中的 URL 中,或者 b) 将它放在表单中的隐藏字段中(但你会有在那种情况下通过 $_POST 在 PHP 中访问它)。不管怎样,这意味着它会在发送 POST 请求时再次提交