繁体   English   中英

通过URL将动态PHP变量传递给其他PHP页面

[英]Pass Dynamic PHP variables to other PHP page via URL

我认为从标题可以清楚地看出问题。 我有一个PHP文件,称为PHP1。 在那个PHP1中,我有一个看起来很像的URL

www.mywebsite/script.php?color=red&sky=blue&past=gone

我感到困惑的是,值“ red”,“ blue”和“ gone”位于三个动态变量中: $var1$var2$var3

如何通过URL将这些变量发布到另一个PHP文件PHP2中。

在PHP2文件中,我想接收以下值:

$var1 = $_GET['color'];
$var2 = $_GET['sky'];
$var3 = $_GET['past'];

我该如何实现? 我知道我可以使用ajax和所有方法,但是URL是我在这里唯一的手段。

我认为您正在寻找如何生成动态网址

在您的php1文件中

$c = "red";
$s = "blue";
$stat ="past";

//Now you need to generate a dynamic url in your php1 file

$url = 'www.mywebsite/script.php?color='.$c.'&sky='.$s.'&past='.$stat;
//now genearte a dynamic link
echo '<a href="'. $url.'">Click me</a>';
//you have dynamic link. after clicking it will take you to different page
//your url shoule be www.mywebsite/script.php?color=red&sky=blue&past=gone
//just concanate

php2文件

echo 'color'.$_GET["color"].' SKY '.$_GET["sky"].' STAT '.$_GET["past"];

//它应该工作

您无法从$ _POST获取通过url传递的值。

尝试这个:

$var1= $_GET['color'];
$var2 = $_GET['sky'];
$var3= $_GET['past'];

使用header('Location')

header('Location:/script.php?color=red&sky=blue&past=gone');

它将用户重定向到第二页。 然后,您可以使用$_GET superglobal收集值

$var1= $_GET['color'];
$var2 = $_GET['sky'];
$var3= $_GET['past'];

这样不可能通过url获取值,您需要使用$_GET[''] 但是使用会话是执行此操作的最佳选择。 只是这样重写您的代码-

session_start();
$SESSION['data1'] = 'red';

然后在所需位置检索数据。

PHP中 ,我们使用HTTP协议。 HTTP可以在客户端和服务器之间进行请求/响应。 客户端是浏览器,服务器是我们网址的位置。 您可以使用GET request或POST GET参数为:

  • 在网址中看到
  • 您可以将此页面添加为书签
  • 这将在浏览器历史记录中
  • 它有长度限制。 另一种通信方式是POST ,其中:
  • 你没有在URL中看到这个
  • 您不能为此页面添加书签
  • 它不会出现在浏览器历史记录中
  • 没有长度限制

您可以将HTML表单与指定的GET或POST方法一起使用以发送请求。

我认为header会有所帮助

<?php
    $variable1 = "red";
    $variable2 = "blue";
    $variable3 = "gone";
    header("Location:/script.php?color=$variable1&sky=$variable2&past=$variable3");
?>

要在另一个页面中接收变量,请使用$_GET而不是$_POST

<?php
    $var1 = $_GET['color'];
    $var2 = $_GET['sky'];
    $var3 = $_GET['past'];
?>

由于您在URL中具有动态参数,因此请使用foreach语句,如下所示

$temp = "var";
$param = "";
$i=1;
$url = "samplepage.php?";
foreach($_GET as $key=>$values)
{
$tmp = $temp."".$i;
$param = $key;
$$param = $key;

// it is assumed $var1, $var2 and $var3 is defined before processing url
echo $tmp." value is ".$$tmp."\n";
$url = $url."".$$param."=".$$tmp."&"; 
$i++;
}
$url = rtrim($url, "&");
header("Location: ".$url);

Demo

网址在PHP1中可能是任何东西,它获取并将具有相同值的相同参数传递给下一页

在PHP1中:

$var1= $_POST['color'];
$var2 = $_POST['sky'];
$var3= $_POST['past'];
header("Location:/script.php?color={$var1}&sky={$var2}&past={$var3}");

在PHP2中:

$var1= $_GET['color'];
$var2 = $_GET['sky'];
$var3= $_GET['past'];

尝试以下方法:

$var1= $_GET['color'];
$var2 = $_GET['sky'];
$var3= $_GET['past'];

要么

$var1= $_REQUEST['color'];
$var2 = $_REQUEST['sky'];
$var3= $_REQUEST['past'];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM