我正在使用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
并尝试将setcookie(使用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'];
?>
我搜索了我的历史,但找不到我发现这个想法的页面。
答案 0 :(得分:0)
您错过了变量中的$
:
永远不会设置$_SESSION['var'] = var;
和var var1;
<强> file1.php 强>
<?php
session_start();
$_SESSION['var'] = 'your_var_value';
?>
<script type="text/javascript">
window.location = "file2.php?var1=<?php echo $_SESSION['var'];?>";
</script>
<强> file2.php 强>
<?php
session_start();
$var1 = (isset($_GET['var1'])?$_GET['var1']:null);
$var2 = (isset($_SESSION['var'])?$_SESSION['var']:null);
?>
答案 1 :(得分:0)
但这不是一个好的做法,可以跟进,并且可以将某些值初始化为$var
<?php
session_start();
$_SESSION['var'] = $var;
?>
<script type="text/javascript">
var var1 = "<?php echo $_SESSION['var']; ?>";
window.location = "file2.php?var1=" + var1;
</script>
答案 2 :(得分:0)
您是否正在使用cURL访问file1.php? cURL不包含Javascript解释器,因此不会执行任何Javascript。