【发布时间】:2018-05-12 21:55:41
【问题描述】:
我正在使用 cURL 登录网站。 [编辑:他们设置 cookie 并生成令牌。我抓住他们的令牌。用它做一些计算并登录。这就是保持会话打开很重要的原因。] 我有一个文件可以加载另一个文件。这是在 PHP 中的:
file1.php
<?php
session_start();
$_SESSION['var'] = $var;
header("Location: file2.php");
?>
file2.php
<?php
session_start();
$var = $_SESSION['var'];
?>
这可行,但是,我必须使用 Javascript 进行一些计算,然后使用 GET 将这些变量传递给 file2.php(并且有一个变量是会话变量)。所以:
file1.php
<?php
session_start();
$_SESSION['var'] = $var;
?>
<script type="text/javascript">
var var1 = 'car';
window.location = "file2.php?var1=" + var1;
</script>
file2.php
<?php
session_start();
$var1= $_GET['var1'];
$var2 = $_SESSION['var'];
?>
我试过window.location.href 而不是window.location
我还尝试使用document.cookie 并尝试将cookie(使用setcookie("PHPSESSID", [string])设置为存储在PHPSESSID 中的内容(其他变量——JSESSIONID 和session_id——都是NULL)。我尝试将其设置为整个字符串。
我试过了
session_name('login_session');
session_set_cookie_params(0, '/');
session_start();
我在这里找到的:https://stackoverflow.com/a/5438521。在两个页面上的脚本开头。
我还在 file1.php 中的 php 脚本末尾尝试了session_write_close();。
更新。我一直在阅读并认为如果我使用 Ajax/jquery,我也许可以让它工作。我试过了:
file1.php
<html><head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
</script>
</head></html>
<?php
session_start();
$_SESSION['var'] = $var;
?>
<script type="text/javascript">
var var1 = 'car';
function runLogin() {
$.ajax({
<strike>type: "GET",</strike>
type: "POST",
url: "file2.php",
<strike>data: "var="+var1</strike>
data: {'var': var1}
});
}
runLogin();
</script>
file2.php
<?php
session_start();
<strike>$var1= $_GET['var1'];</strike>
$var1 = $_REQUEST;
$var2 = $_SESSION['var'];
?>
但会话仍然丢失。我第一次运行它时,我做了上面的事情。第二个我在 session_start() 下的 file1.php 中添加了include_once('file2.php');,在 file2.php 中添加了相反的内容
已解决:
file1.php
<?php
$session = session_id();
$_SESSION['var'] = var;
?>
<script type="text/javascript">
var var1= "<?=$session ?>";
function runLogin(session) {
$.ajax({
type: "POST",
url: "file2.php",
data: {'session': session}
});
}
runLogin(var1);
</script>
file2.php
<?php
$posted = $_REQUEST;
$sew = $posted['session'];
session_id($sew);
session_start();
$var = $_SESSION['var'];
?>
我搜索了我的历史记录,但找不到我发现这个想法的页面。
【问题讨论】:
-
您可能需要添加
window.init = 'myfunction',然后在myfunction内进行变量设置和重定向... -
我怎样才能使会话保持活动状态?
-
保存会话 ID,然后使用 jquery 将其传递到新页面。
标签: php javascript jquery session cookies