PHP Pass变量到下一页

时间:2009-05-16 06:58:46

标签: php variables session

看起来很简单,但我找不到一个好办法。

在第一页说我创建一个变量

$myVariable = "Some text";

表单对该页面的操作是“Page2.php”。所以在Page2.php中,我怎样才能访问该变量?我知道我可以用会话来做,但我认为这对于一个简单的字符串来说太过分了,我只需要传递一个简单的字符串(文件名)。

我怎样才能做到这一点?

谢谢!

10 个答案:

答案 0 :(得分:410)

HTML / HTTP是无状态的,换句话说,您在上一页上所做/所看到的内容与当前页面完全没有关联。 外,如果您使用会话,Cookie或GET / POST变量等内容。会话和cookie非常易于使用,会话比cookie更安全。更安全,但不是完全安全。

<强>会话

//On page 1
$_SESSION['varname'] = $var_value;

//On page 2
$var_value = $_SESSION['varname'];

在尝试访问session_start();数组之前,以及在将任何输出发送到浏览器之前,请记住在这两个页面上运行$_SESSION语句。

<强>曲奇:

//One page 1
$_COOKIE['varname'] = $var_value;

//On page 2
$var_value = $_COOKIE['varname'];

会话和cookie之间的最大区别在于,如果您正在使用会话,变量的值将存储在服务器上,如果您正在使用cookie,则会在客户端上存储。我想不出任何使用cookie而不是会话的好理由,除非你希望数据在会话之间保持不变,但即便如此,最好将它存储在数据库中,并根据用户名或ID检索它。 / p>

GET和POST

您可以将链接中的变量添加到下一页:

<a href="page2.php?varname=<?php echo $var_value ?>">Page2</a>

这将创建一个GET变量。

另一种方法是在提交第二页的表单中包含一个隐藏字段:

<form method="get" action="page2.php">
    <input type="hidden" name="varname" value="var_value">
    <input type="submit">
</form>

然后在第二页:

//Using GET
$var_value = $_GET['varname'];

//Using POST
$var_value = $_POST['varname'];

//Using GET, POST or COOKIE.
$var_value = $_REQUEST['varname'];

如果您想通过帖子进行操作,只需将表单的方法更改为post即可。两者都同样不安全,虽然GET更容易入侵。

每个新请求都是,除了会话数据之外,当我第一次开始用PHP编码时,一个全新的脚本实例引起了我的注意。一旦你习惯它,它就很简单了。

答案 1 :(得分:30)

感谢上面的答案。这是我如何做到的,我希望它可以帮助那些追随者。我希望将注册号从一个页面传递到另一个页面,因此 regName regValue

创建您的第一页,将其命名为 set_reg.php

<?php

session_start();

$_SESSION['regName'] = $regValue;

?>

<form method="get" action="get_reg.php">
    <input type="text" name="regName" value="">
    <input type="submit">
</form>

创建第二页,将其命名为 get_reg.php

<?php

session_start();

$regValue = $_GET['regName'];

echo "Your registration is: ".$regValue.".";

?>

<p><a href="set_reg.php">Back to set_reg.php</a>

虽然不如上面的答案那么全面,但就我的目的而言,这简单地说明了各种元素之间的关系。

答案 2 :(得分:16)

在请求中传递数据

您可以将其嵌入表单中的隐藏字段,也可以将其添加到表单操作网址

 echo '<input type="hidden" name="myVariable" value="'.
     htmlentities($myVariable).'">';

echo '<form method="POST" action="Page2.php?myVariable='.
    urlencode($myVariable).'">";

请注意,这也说明了在传递数据时使用htmlentitiesurlencode

在会话中传递数据

如果不需要将数据传递到客户端,则会话可能更合适。只需在每个页面的开头调用session_start(),就可以获取并将数据设置到$ _SESSION数组中。

安全

由于您声明您的值实际上是文件名,因此您需要了解安全性后果。如果文件名已从客户端到达,则假定用户已篡改该值。检查它的有效性!当用户将路径传递给重要系统文件或其控制下的文件时会发生什么?您的脚本是否可以用来“探测”服务器中是否有存在的文件?

正如你刚刚开始在这里开始的那样,值得提醒的是,这适用于任何到达$ _GET,$ _POST或$ _COOKIE的数据 - 假设你最大的敌人精心设计了这些数组的内容,并相应编码!

答案 3 :(得分:9)

在php中传递值有三种方法。

  • 通过邮寄
  • 获取
  • 通过制作会话变量

这三种方法用于不同的目的。例如,如果我们想在下一页接收我们的值,那么我们可以使用'post'($ _POST)方法: -

$a=$_POST['field-name'];

如果我们需要多个页面上的变量值,我们可以使用会话变量: -

$a=$_SESSION['field-name];

在使用此语法创建SESSION变量之前,我们首先必须在php页面的最开头添加此标记

session_start(); 

GET方法通常用于在同一页面上打印数据,用于从用户那里获取输入。其语法如下:

$a=$_GET['field-name'];

POST方法通常比GET更安全,因为当我们使用Get方法时,它可以显示URL栏中的数据。如果数据是更敏感的数据,如密码那么它可以是inggeris。

答案 4 :(得分:7)

会话是唯一的好方法,你也可以使用GET / POST但这可能是不安全的。

答案 5 :(得分:5)

试试这段代码

使用隐藏字段我们可以将php varibale传递给另一个页面

page1.php中

Dropdownlist

将php变量传递给隐藏字段值,以便您可以将此变量访问到另一个页面

使page2.php

<select name="drop down"><option value="1">@test.list[i]</option></select>

答案 6 :(得分:1)

**page 1**
<form action="exapmple.php?variable_name=$value" method="POST"> 
    <button>
        <input  type="hidden" name="x">
    </button>
</form>`

第2页

if(isset($_POST['x'])) {
    $new_value=$_GET['variable_name'];
}

答案 7 :(得分:0)

会话是唯一的好方法,您也可以使用GET / POST,但这可能不安全。

在会话中传递数据 如果不需要将数据传递到客户端,则会话可能更合适。只需在每个页面的开头调用session_start(),就可以将数据获取并设置到$ _SESSION数组中。

安全性 由于您声明的值实际上是文件名,因此需要注意安全性。如果文件名是从客户端到达的,则假定用户已篡改该值。检查其有效性!当用户将路径传递到重要的系统文件或受其控制的文件时,会发生什么情况?可以使用您的脚本来“探测”服务器中是否存在文件吗?

由于您显然只是从这里开始,所以需要提醒您的是,这适用于到达$ _GET,$ _ POST或$ _COOKIE的任何数据-假设您最大的敌人精心制作了这些数组的内容,并据此进行编码! / p>

答案 8 :(得分:0)

<块引用>

It works. 发送数据抛出 URL,不带表单。

$upit = "SELECT * FROM usluga";

            $data = $mysql->query($upit);

            while ($row = mysqli_fetch_object($data)) 
            {
                echo "<a href='"."index.php?tretmanId=$row->tretman_id"."'>$row->naziv</a>";
                echo "<br><br>";
            }
<块引用>

并且您可以使用“$_GET['name from URL']”在目标页面上获取此值,如下所示

$TrermanIdFromUrl = $_GET['tretmanId'];

答案 9 :(得分:0)

例如,您可以通过在 url 中包含变量来调用您想要的页面:

header("Location: ../signup.php?newpwd=passwordupdated");

在你的 signup.php 页面上,你会

if (isset($_GET['newpwd']) && $_GET['newpwd'] == "passwordupdated") {
        //code here
    }