PHP将variables传递到下一页

这似乎很简单,但我找不到一个好方法来做到这一点。

说在第一页我创build一个variables

$myVariable = "Some text"; 

而该表单的行为是“Page2.php”。 所以在Page2.php中,我怎样才能访问该variables? 我知道我可以用会话来做,但是我觉得这对于一个简单的string来说太过分了,我只需要传递一个简单的string(一个文件名)。

我怎样才能做到这一点?

谢谢!

HTML / HTTP是无状态的,换句话说,你在前一页做过/看到的,与当前页面完全断开。 除非你使用会话,cookies或GET / POSTvariables。 会话和cookies非常容易使用,会话比cookie更安全。 更安全,但不完全安全。

会议:

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

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

曲奇饼:

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

会话和cookie之间的巨大差异在于,如果您使用会话,variables的值将存储在服务器上,如果使用cookie,则会在客户端上存储。 我想不出有什么好的理由来使用cookies而不是会话,除非你希望数据在会话之间持续存在,但即使这样,也许最好将它存储在数据库中,并根据用户名或id来检索。

GET和POST

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

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

这将创build一个GETvariables。

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

 <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如果你想通过发布。 两者同样不安全,尽pipeGET更容易被黑客入侵。

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

感谢上面的答案。 我是这样做的,希望能帮助那些追随者。 我正在寻找通过一个注册号码从一个页面到另一个,因此regNameregValue

创build你的第一页,称之为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> 

创build你的第二页,把它叫做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> 

虽然没有上面的答案那么全面,但为了我的目的,这简单地说明了各种元素之间的关系。

传递请求中的数据

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

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

要么

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

注意这也说明了在传递数据时使用htmlentities和urlencode 。

在会话中传递数据

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

安全

既然你声明你的值实际上是一个文件名,你需要知道安全分支。 如果文件名已经从客户端到达,则假定用户已经篡改了该值。 检查它的有效性! 当用户将path传递给重要的系统文件或受其控制的文件时会发生什么? 您的脚本是否可以用来“探测”服务器上是否存在文件?

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

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

  • 通过邮寄
  • 通过获取
  • 通过使会话variables

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

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

如果我们需要多个页面上的variables值,那么我们可以使用sessionvariables:

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

在使用这个语法来创buildSESSIONvariables之前,我们首先必须在我们的php页面的开头添加这个标签

 session_start(); 

通常使用GET方法在用户input的同一页面上打印数据。 其语法如下:

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

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

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

传递variables最好也是最简单的方法就是我在这里解释它: 在SESSION中存储所有POST数据

试试这个代码

使用隐藏的领域,我们可以通过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> 

将phpvariables传递给隐藏的字段值,这样你可以访问这个variables到另一个页面

使page2.php

 <?php $text=$_POST['text']; echo $text; ?> 
 **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']; }