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

需要将变量从传递index.phpedit.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);


呼如林
浏览 454回答 3
3回答

喵喵时光机

您可以在index.js其中添加和添加自定义Cookie,并在向其document.cookie发出请求edit.php时将其提供。index.jsconst custom_cookie = "x=5";document.cookie = custom_cookie;.....window.location = 'edit.php';edit.php$cookie_name = 'x';echo $_COOKIE[$cookie_name]

一只名叫tom的猫

如果参数必须在UI中保持不可见(即不在地址栏中),并且由于页面重新加载而需要避免POST请求,则可以通过两个请求来实现此目的...一个AJAX POST然后一个GET,即fetch('set-session-var.php', {&nbsp; method: 'post',&nbsp; body: 'x=5',&nbsp; headers: {&nbsp; &nbsp; "Content-Type": "application/x-www-form-urlencoded"&nbsp; }}).then(res => {&nbsp; if (res.ok) {&nbsp; &nbsp; window.location = 'edit.php'&nbsp; }})或使用发布/重定向/获取模式,例如<form action="set-session-var.php" method="post">&nbsp; <!-- set the "x" value however and whenever you want -->&nbsp; <button type="submit" name="x" value="5">Go</button></form>// set-session-var.phpsession_start();$_SESSION['x'] = $_POST['x'];header('Location: edit.php'); // omit this if using the AJAX version

撒科打诨

使用Cookie ...index.php:setcookie("x",&nbsp;5);edit.php:echo&nbsp;$_COOKIE["x"];
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript