【问题标题】:How to set $_GET variable如何设置 $_GET 变量
【发布时间】:2011-07-21 21:00:50
【问题描述】:

如何设置$_GET 函数将能够使用的变量,而无需使用action = GET 提交表单?

【问题讨论】:

  • 我知道这很粗鲁,但我忍不住:你为什么要这样做?
  • 好问题。基本上我在顶部的 php 文件中有链接,它包含在 index.php 中,但是为了知道要显示哪个中间页面,我需要设置 get 函数的变量。
  • 哦,在这种情况下,对不起我的误解,我假设你会想要篡改 $_GET 以获得其他东西。

标签: php forms variables get


【解决方案1】:

您可以创建一个链接,并在 href 中获取变量。

<a href="www.site.com/hello?getVar=value" >...</a>

【讨论】:

  • 但是让我们说一下我是如何做到没有链接的?
  • 可能不会。 $_GET 适用于 url 数据或表单提交(操作 =GET)。
  • 在我在第 2 行执行此操作后,然后在第 92 行运行 javascript,它要求变量 $_GET['getVar'] 脚本是否将答案作为“值”。 --- 仅供参考,脚本是自定义谷歌搜索引擎 javascript
【解决方案2】:

您可以在form 元素的action 参数中使用GET 变量。示例:

<form method="post" action="script.php?foo=bar">
    <input name="quu" ... />
    ...
</form>

这将为您提供 foo 作为 GET 变量和 quu 作为 POST 变量。

【讨论】:

    【解决方案3】:

    $_GET 变量由 URL 中设置的参数填充。从 URL http://example.com/test.php?foo=bar&amp;baz=buzz 你可以得到$_GET['foo']$_GET['baz']。因此,要设置这些变量,您只需创建一个指向该 URL 的链接。

    【讨论】:

      【解决方案4】:

      $_GET 包含在 URL 中传递给脚本的键/值。

      如果您有以下网址:

      http://www.example.com/test.php?a=10&b=plop
      

      那么$_GET 将包含:

      array
        'a' => string '10' (length=2)
        'b' => string 'plop' (length=4)
      


      当然,$_GET 不是只读的,如果需要,您还可以从 PHP 代码中设置一些值:

      $_GET['my_value'] = 'test';
      

      但这似乎不是一个好的做法,因为$_GET 应该包含来自客户端请求的 URL 的数据。

      【讨论】:

      • Thx,除了“不好的做法”之外,设置$_GET 是否有任何技术问题? (PHP 有时会如此令人惊讶......)
      • 最佳答案。不知道为什么另一个被标记为有效。
      • 你不能设置$_GET
      • @MikeQ - 我刚刚做到了。任何想知道用例 - 站点用户注册表单 - 成功注册的人,将参数值从“注册新用户”更改为“登录”,并确保登录代码位于注册新用户的代码下方,并且您已经正确填充了登录代码所期望的任何变量。无需页面重定向。
      • 嗯,这只是一个变量,但关键是我认为没有充分的理由这样做。改为更改 URI 和重定向器
      【解决方案5】:

      对于表单,使用:

      <form name="form1" action="<?=$_SERVER['PHP_SELF'];?>" method="get">
      

      为了获取值,使用get方法如下:

      $value = $_GET['name_to_send_using_get'];
      

      【讨论】:

      • 如果您将表单提交到同一页面,您可以将操作留空:action=""
      【解决方案6】:

      您可以使用以下代码将您的客户端重定向到附加了 _GET 变量的脚本。

      header("Location: examplepage.php?var1=value&var2=value");
      die();
      

      这将导致脚本重定向,请确保 die(); 保留在那里,否则它们可能不会重定向。

      【讨论】:

      • 感谢@JosephO! -- 这个提示让我可以成功重定向!
      【解决方案7】:

      我知道这是一个旧线程,但我想发布我的 2 美分...

      使用 Javascript,您可以在不使用 $_POST 的情况下实现此目的,从而避免重新加载页面..

      <script>
      function ButtonPressed()
      {
      window.location='index.php?view=next'; //this will set $_GET['view']='next'
      }
      </script>
      
      <button type='button' onClick='ButtonPressed()'>Click me!</button>
      
      <?PHP
       if(isset($_GET['next']))
          {
                echo "This will display after pressing the 'Click Me' button!";
          }
       ?>
      

      【讨论】:

        【解决方案8】:

        如果您想在包含文件时伪造 $_GET(或 $_POST),您可以像使用任何其他 var 一样使用它,如下所示:

        $_GET['key'] = 'any get value you want';
        include('your_other_file.php');
        

        【讨论】:

        • 我必须补充一点,如果它用于测试/调试它是可以的,但否则它被认为是糟糕的编程。最好将处理后的值传递给函数/类,而不是让它读取处理后的 $_GET。话虽如此,我从经验中知道这并不总是可能的,例如当包含一个您无法编辑的页面,或者一个您不想弄乱的旧的复杂页面时......
        【解决方案9】:

        设置$_GET 变量的一种方法是使用parse_url() 解析URL 然后使用parse_str()解析$query字符串,将变量设置为$_GET全局变量。

        这个方法很有用,

        • 如果您想在不进行实际查询的情况下测试 GET 参数处理,例如用于测试传入参数的存在以及传入变量的输入过滤和清理。
        • 当您不想每次都手动构建数组,而是使用普通 URL 时

        function setGetRequest($url)
        {
            $query = parse_url($url, PHP_URL_QUERY);
            parse_str($query, $_GET);
        }
        
        $url = 'http://www.example.com/test.php?a=10&b=plop';
        
        setGetRequest($url);   
        
        var_dump($_GET);
        

        结果:$_GET 包含

        array (
          'a' => string '10' (length=2)
          'b' => string 'plop' (length=4)
        )
        

        【讨论】:

        • 很好的答案..我个人喜欢它。
        猜你喜欢
        • 2019-07-25
        • 2016-06-29
        • 1970-01-01
        • 2013-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多