为了账号安全,请及时绑定邮箱和手机立即绑定

在两个PHP页面之间传递变量的最佳方法

在两个PHP页面之间传递变量的最佳方法

呼如林 2021-04-14 10:18:33
需要将变量从传递index.php到edit.php。该变量对于访问者应该是不可见的,因此不允许地址栏。第一种方法-使用index.php带有action属性的表单- edit.php。使用表单的问题是每次edit.php重新刷新时都会出现有关重新提交的警告。第二种方法-使用ajax调用index.js来更改php端的会话变量。使用ajax的缺点是一条额外的路径-首先转到server side(更改php)-然后转到client side(成功函数以获取新值)-再到服务器端(转到edit.php使用新变量)。正确的方法是什么?有没有像这样的简单方法:location.href = 'edit.php', set x = 5并edit.php得到这个:echo $x (结果5);
查看完整描述

3 回答

?
喵喵时光机

TA贡献1846条经验 获得超7个赞

您可以在index.js其中添加和添加自定义Cookie,并在向其document.cookie发出请求edit.php时将其提供。


index.js


const custom_cookie = "x=5";

document.cookie = custom_cookie;

.....

window.location = 'edit.php';

edit.php


$cookie_name = 'x';

echo $_COOKIE[$cookie_name]


查看完整回答
反对 回复 2021-04-22
?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

如果参数必须在UI中保持不可见(即不在地址栏中),并且由于页面重新加载而需要避免POST请求,则可以通过两个请求来实现此目的...


一个AJAX POST然后一个GET,即


fetch('set-session-var.php', {

  method: 'post',

  body: 'x=5',

  headers: {

    "Content-Type": "application/x-www-form-urlencoded"

  }

}).then(res => {

  if (res.ok) {

    window.location = 'edit.php'

  }

})

或使用发布/重定向/获取模式,例如


<form action="set-session-var.php" method="post">

  <!-- set the "x" value however and whenever you want -->

  <button type="submit" name="x" value="5">Go</button>

</form>

// set-session-var.php

session_start();

$_SESSION['x'] = $_POST['x'];

header('Location: edit.php'); // omit this if using the AJAX version


查看完整回答
反对 回复 2021-04-22
?
撒科打诨

TA贡献1934条经验 获得超2个赞

使用Cookie ...

index.php:

setcookie("x", 5);

edit.php:

echo $_COOKIE["x"];


查看完整回答
反对 回复 2021-04-22
  • 3 回答
  • 0 关注
  • 453 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号