PHP Pass变量到下一页

Car*_*rlo 189 php variables session

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

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

$myVariable = "Some text";
Run Code Online (Sandbox Code Playgroud)

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

我怎样才能做到这一点?

谢谢!

Jrg*_*gns 428

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

会议:

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

//On page 2
$var_value = $_SESSION['varname'];
Run Code Online (Sandbox Code Playgroud)

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

曲奇饼:

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

//On page 2
$var_value = $_COOKIE['varname'];
Run Code Online (Sandbox Code Playgroud)

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

GET和POST

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

<a href="page2.php?varname=<?php echo $var_value ?>">Page2</a>
Run Code Online (Sandbox Code Playgroud)

这将创建一个GET变量.

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

<form method="get" action="page2.php">
    <input type="hidden" name="varname" value="var_value">
    <input type="submit">
</form>
Run Code Online (Sandbox Code Playgroud)

然后在第二页:

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

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

//Using GET, POST or COOKIE.
$var_value = $_REQUEST['varname'];
Run Code Online (Sandbox Code Playgroud)

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

除了会话数据之外,每个新请求都是一个全新的脚本实例,这在我第一次开始用PHP编写代码时就抓住了我.一旦你习惯它,它就很简单了.

  • Nitpick:PHP中的会话通常也由cookie处理.会话cookie不是持久性cookie,通常只保存会话ID.但它仍然是一个cookie. (4认同)
  • 由于有了这些帮助,问题是我在第一页中有很多变量,所以我要做的是创建一个包含所有这些变量的数组,然后使用会话将其发送到下一页。 (2认同)

小智 30

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

创建你的第一页,称之为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>
Run Code Online (Sandbox Code Playgroud)

创建第二个页面,将其命名为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>
Run Code Online (Sandbox Code Playgroud)

虽然不如上面的答案那么全面,但为了我的目的,这以简单的方式说明了各种元素之间的关系.

  • 您的示例也可以在没有会话的情况下工作,实际上并不是通过sessions-mechanism获取数据(在get_reg.php中).您正使用get方法通过表单发送regName,如Jrgns所述.因此可以通过$ _GET数组在get_reg.php页面访问该变量. (13认同)

Pau*_*xon 16

在请求中传递数据

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

 echo '<input type="hidden" name="myVariable" value="'.
     htmlentities($myVariable).'">';
Run Code Online (Sandbox Code Playgroud)

要么

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

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

在会话中传递数据

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

安全

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

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


小智 9

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

  • 通过邮寄
  • 通过得到
  • 通过制作会话变量

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

$a=$_POST['field-name'];
Run Code Online (Sandbox Code Playgroud)

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

$a=$_SESSION['field-name];
Run Code Online (Sandbox Code Playgroud)

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

session_start(); 
Run Code Online (Sandbox Code Playgroud)

GET方法通常用于在用于从用户输入的同一页面上打印数据.其语法如下:

$a=$_GET['field-name'];
Run Code Online (Sandbox Code Playgroud)

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


小智 7

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


Bha*_*ama 6

试试这个代码

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

page1.php

<?php $myVariable = "Some text";?>
<form method="post" action="page2.php">
 <input type="hidden" name="text" value="<?php echo $myVariable; ?>">
 <button type="submit">Submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)

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

page2.php

<?php
 $text=$_POST['text'];
 echo $text;
?>
Run Code Online (Sandbox Code Playgroud)