Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
url中的php传递参数_Php_Html - Fatal编程技术网

url中的php传递参数

url中的php传递参数,php,html,Php,Html,我有一个表单和一个PHP函数: <?php if(isset($_GET['sub'])) { var_dump($_REQUEST); die; } ?> <form action="index.php?a=12" method="get"> <input name="sub" type="submit" value="Calc"> </form> 但当我点击提交时,我什么也得不到 如何在URL中传递变量a(没有任何输入)以

我有一个
表单
和一个PHP函数:

<?php

if(isset($_GET['sub'])) {
  var_dump($_REQUEST);
  die;
}
?>

<form action="index.php?a=12" method="get">
  <input name="sub" type="submit" value="Calc">
</form>

但当我点击提交时,我什么也得不到


如何在URL中传递变量a(没有任何输入)以及为什么此方法不起作用?

此方法不起作用,因为您将anotsub变量放在URL中,所以我想您需要更改为:

<?php

if(isset($_GET['a'])) {
    var_dump($_REQUEST);
    die;
}
?>


尝试执行
var\u转储($\u请求)在您的if之前查看您所拥有的。

您需要a,但您得到sub。这是个问题。对于输入,必须使用a。您可以看到这段代码中的差异


输出:

数组(大小=1)“a”=>字符串“Calc”(长度=4)


您有两个选项可以在URL中发送变量:

  • 使用超链接
  • 
    
  • 使用带有GET的表单,并将字段隐藏
  • 
    
    您正在混合这两种方法,GET表单的内容将覆盖您的操作。

    请尝试以下操作,而不是:

    if(isset($_GET['sub'])) {
    
    使用:


    你需要使用隐藏的输入——如果你是硬编码的,为什么不在php中设置一个常量,那么就不太可能有人改变itI的值。我知道我可以使用隐藏的输入,但我会尝试在url中传递它。这是不可能的吗?因为您使用
    get
    作为表单方法-表单的输入覆盖
    操作中的URL参数
    -如果您
    post
    表单,它会起作用。因此,如果我想在URL中传递某些内容,我必须使用post方法?谢谢如果要在
    action
    yes中向URL追加其他参数。。。不过,在很多情况下,你实际上并不想这样做——通常,如果你在更新资源,你会使用POST,如果你在检索资源,你会使用GET;从技术上讲,这两种方法很少同时使用。您传递了这样一个隐藏的值,而不仅仅是在URL中,您希望输出什么?如果您想在提交后只查看index.php。您必须使用post方法
    <form action="index.php" method="get">
        <input name="a" type="hidden" value="12">
        <input name="sub" type="submit" value="Calc">
    </form>
    
    if(isset($_GET['sub'])) {
    
    if(isset($_GET["sub"))}