Answers:
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检索它。
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进行编码时,每个新请求(除了会话数据之外)都是脚本的全新实例,这一事实引起了我的注意。一旦习惯了,它就很简单了。
感谢您以上的回答。这是我的操作方法,希望对您有所帮助。我希望将注册号从一页传递到另一页,因此是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>
尽管不如上面的答案那么全面,但出于我的目的,这以简单的方式说明了各个元素之间的关系。
您可以将其作为隐藏字段嵌入到表单中,也可以将其添加到表单操作网址中
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页面的开头添加此标记
session_start();
GET方法通常用于在同一页上打印数据,该数据通常用于接受用户输入。其语法如下:
$a=$_GET['field-name'];
POST方法通常比GET消耗更多安全性,因为当我们使用Get方法时,它可以在URL栏中显示数据。如果数据是更敏感的数据(例如密码),则可能是inggeris。
试试这个代码
使用隐藏字段,我们可以将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;
?>
会话是唯一的好方法,您也可以使用GET / POST,但这可能不安全。
在会话中传递数据如果不需要将数据传递给客户端,则会话可能更合适。只需在每个页面的开头调用session_start(),就可以将数据获取并设置到$ _SESSION数组中。
安全性由于声明值实际上是文件名,因此需要注意安全性。如果文件名已从客户端到达,则假定用户已篡改该值。检查其有效性!当用户将路径传递到重要的系统文件或受其控制的文件时,会发生什么情况?可以使用您的脚本来“探测”服务器中是否存在文件吗?
正如您显然只是从这里开始一样,值得提醒您的是,对于到达$ _GET,$ _ POST或$ _COOKIE的任何数据,这都是必要的-假设您最大的敌人精心制作了这些数组的内容,并据此进行编码!