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进行编码的时候,就引起了我的注意。 一旦你习惯了,这很简单。
感谢上面的答案。 我是这样做的,希望能帮助那些追随者。 我正在寻找通过一个注册号码从一个页面到另一个,因此regName和regValue :
创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']; }