这看起来很简单,但是我找不到一个好的方法来做这件事.

假设在第一页我创建了一个变量

$myVariable = "Some text";

该页面的表单操作是"Page2.php".所以在第二页.php,我如何访问该变量?我知道我可以通过会话来完成,但我认为对于一个简单的字符串来说太多了,我只需要传递一个简单的字符串(文件名).

我怎样才能做到这一点?

谢谢!

推荐答案

HTML/HTTP是无状态的,换句话说,您在上一页上做/看到的内容与当前页面完全没有连接.如果使用会话、cookie或GET/POST变量,则为Except.会话和Cookie非常容易使用,到目前为止,会话比Cookie安全得多.更安全,但不是完全安全.

Session:

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

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

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

Cookie:

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

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

会话和cookie之间的最大区别在于,如果使用会话,变量的值将存储在服务器上,如果使用cookie,变量的值将存储在客户端上.我想不出使用cookies代替会话的任何好理由,除非您希望在会话之间保存数据,但即使这样,还是最好将数据存储在数据库中,并根据用户名或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更容易被黑客攻击.

当我第一次开始用PHP编码时,每个新请求(除了会话数据之外)都是一个全新的脚本实例,这一事实让我大吃一惊.一旦你习惯了,就很简单了.

Php相关问答推荐

通过激活模板在数据库中创建表

根据用户组或登录状态显示或隐藏定价后添加的文本

如何让PHP变量跨越多个脚本调用?

WooCommerce在store 页面上显示兼容多语言的产品属性

让所有具有相同名称的产品在WooCommerce中更改价格

如何在汇总表构建器中操作LALAVEL细丝Sum::Make()值

在带有livewire 3的laravel中使用规则方法时,无法进行实时验证

Azure应用程序无法访问共享文件夹

未定义的类型';PDF';在Laravel 8

Shopware 6 插件:如何删除/迁移布尔配置到多选配置

Woocommerce 临时购物车税未根据第一个请求正确计算

奇怪的 preg_match_all() 行为

simplexml_load_file 和 simplexml_load_string 返回具有不同编码的相同数据

使用 Laravel 和 Vue 进行图像表单验证

注册命名空间后如何获取xml node 值?

PHP - 计算非数值数组

在WooCommerce购物车和 checkout 页面中更改总计文本

WooCommerce – 在新订单邮箱通知中显示产品分类计数

PHP 中是否有 is_closure() 函数?

列表不在 GROUP BY 子句中并且包含 X2CRM 中的非聚合列