看起来很简单,但我找不到一个好方法 .
在第一页说我创建一个变量
$myVariable = "Some text";
表单对该页面的操作是“Page2.php” . 所以在Page2.php中,我怎样才能访问该变量?我知道我可以用会话来做,但我认为这对于一个简单的字符串来说太过分了,我只需要传递一个简单的字符串(文件名) .
我怎样才能做到这一点?
谢谢!
HTML / HTTP是无状态的,换句话说,您在上一页上所做/所看到的内容与当前页面完全没有关联 . 除非你使用会话,cookie或GET / POST变量之类的东西 . 会话和cookie非常易于使用,会话比cookie更安全 . 更安全,但不是完全安全 .
Session:
//On page 1 $_SESSION['varname'] = $var_value; //On page 2 $var_value = $_SESSION['varname'];
在尝试访问 $_SESSION 数组之前,以及在将任何输出发送到浏览器之前,请记住在这两个页面上运行 session_start(); 语句 .
$_SESSION
session_start();
Cookie:
//One page 1 $_COOKIE['varname'] = $var_value; //On page 2 $var_value = $_COOKIE['varname'];
会话和cookie之间的最大区别在于,如果您正在使用会话,变量的值将存储在服务器上,如果您正在使用cookie,则会在客户端上存储 . 我想不出使用cookie而不是会话的任何好理由,除非你希望数据在会话之间保持不变,但即便如此,最好将它存储在数据库中,并根据用户名或ID检索它 .
GET and 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 ,只需将其更改为 post . 两者都同样不安全,虽然GET更容易入侵 .
post
除了会话数据之外,每个新请求都是一个全新的脚本实例,这在我第一次开始用PHP编写代码时就 grab 了我 . 一旦你习惯它,它就很简单了 .
感谢上面的答案 . 这里's how I did it, I hope it helps those who follow. I' m希望将注册号从一个页面传递到另一个页面,因此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>
虽然不如上面的答案那么全面,但为了我的目的,这以简单的方式说明了各种元素之间的关系 .
您可以将其作为隐藏字段嵌入表单中,也可以将其添加到表单操作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数组中 .
由于您声明您的值实际上是文件名,因此您需要了解安全性后果 . 如果文件名已从客户端到达,则假定用户已篡改该值 . 检查它的有效性!当用户将路径传递给重要系统文件或其控制下的文件时会发生什么?您的脚本可以用来“探测”服务器上是否存在的文件?
正如你刚刚开始在这里开始的那样,值得提醒的是,这适用于任何到达$ _GET,$ _POST或$ _COOKIE的数据 - 假设你最大的敌人精心制作了这些数组的内容,并相应编码!
在php中传递值有三种方法 .
通过邮寄
得到
通过制作会话变量
这三种方法用于不同的目的 . 例如,如果我们想在下一页接收我们的值,那么我们可以使用'post'($ _POST)方法: -
$a=$_POST['field-name'];
如果我们在多个页面上需要变量值,那么我们可以使用会话变量:
$a=$_SESSION['field-name];
在使用此语法创建SESSION变量之前,我们首先必须在php页面的最开头添加此标记
GET方法通常用于在用于从用户输入的同一页面上打印数据 . 其语法如下:
$a=$_GET['field-name'];
POST方法通常比GET消耗更安全,因为当我们使用Get方法时,它可以显示URL栏中的数据 . 如果数据是更敏感的数据,如密码那么它可以是inggeris .
会话将是唯一的好方法,你也可以使用GET / 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>
将php变量传递给隐藏字段值,以便您可以将此变量访问到另一个页面
使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>`
page 2
if(isset($_POST['x'])) { $new_value=$_GET['variable_name']; }
7 回答
HTML / HTTP是无状态的,换句话说,您在上一页上所做/所看到的内容与当前页面完全没有关联 . 除非你使用会话,cookie或GET / POST变量之类的东西 . 会话和cookie非常易于使用,会话比cookie更安全 . 更安全,但不是完全安全 .
Session:
在尝试访问
$_SESSION
数组之前,以及在将任何输出发送到浏览器之前,请记住在这两个页面上运行session_start();
语句 .Cookie:
会话和cookie之间的最大区别在于,如果您正在使用会话,变量的值将存储在服务器上,如果您正在使用cookie,则会在客户端上存储 . 我想不出使用cookie而不是会话的任何好理由,除非你希望数据在会话之间保持不变,但即便如此,最好将它存储在数据库中,并根据用户名或ID检索它 .
GET and POST
您可以将链接中的变量添加到下一页:
这将创建一个GET变量 .
另一种方法是在提交到第二页的表单中包含一个隐藏字段:
然后在第二页:
如果您想通过邮件将表单的方法更改为
post
,只需将其更改为post
. 两者都同样不安全,虽然GET更容易入侵 .除了会话数据之外,每个新请求都是一个全新的脚本实例,这在我第一次开始用PHP编写代码时就 grab 了我 . 一旦你习惯它,它就很简单了 .
感谢上面的答案 . 这里's how I did it, I hope it helps those who follow. I' m希望将注册号从一个页面传递到另一个页面,因此regName和regValue:
创建您的第一页,将其命名为 set_reg.php :
创建第二页,将其命名为 get_reg.php :
虽然不如上面的答案那么全面,但为了我的目的,这以简单的方式说明了各种元素之间的关系 .
在请求中传递数据
您可以将其作为隐藏字段嵌入表单中,也可以将其添加到表单操作URL中
要么
请注意,这也说明了在传递数据时使用htmlentities和urlencode .
在会话中传递数据
如果不需要将数据传递给客户端,那么会话可能更合适 . 只需在每个页面的开头调用session_start(),就可以获取并将数据设置到$ _SESSION数组中 .
安全
由于您声明您的值实际上是文件名,因此您需要了解安全性后果 . 如果文件名已从客户端到达,则假定用户已篡改该值 . 检查它的有效性!当用户将路径传递给重要系统文件或其控制下的文件时会发生什么?您的脚本可以用来“探测”服务器上是否存在的文件?
正如你刚刚开始在这里开始的那样,值得提醒的是,这适用于任何到达$ _GET,$ _POST或$ _COOKIE的数据 - 假设你最大的敌人精心制作了这些数组的内容,并相应编码!
在php中传递值有三种方法 .
通过邮寄
得到
通过制作会话变量
这三种方法用于不同的目的 . 例如,如果我们想在下一页接收我们的值,那么我们可以使用'post'($ _POST)方法: -
如果我们在多个页面上需要变量值,那么我们可以使用会话变量:
在使用此语法创建SESSION变量之前,我们首先必须在php页面的最开头添加此标记
GET方法通常用于在用于从用户输入的同一页面上打印数据 . 其语法如下:
POST方法通常比GET消耗更安全,因为当我们使用Get方法时,它可以显示URL栏中的数据 . 如果数据是更敏感的数据,如密码那么它可以是inggeris .
会话将是唯一的好方法,你也可以使用GET / POST,但这可能是不安全的 .
试试这段代码
使用隐藏字段我们可以将php varibale传递给另一个页面
page1.php中
将php变量传递给隐藏字段值,以便您可以将此变量访问到另一个页面
使page2.php
page 2