0

我正在使用 cURL 登录网站。[编辑:他们设置 cookie 并生成令牌。我抓住他们的令牌。用它做一些计算并登录。这就是保持会话打开很重要的原因。] 我有一个文件可以加载另一个文件。这是在PHP中:

文件1.php

<?php
session_start();
$_SESSION['var'] = $var;

header("Location: file2.php");

?>

文件2.php

<?php
session_start();

$var = $_SESSION['var'];

?>

这行得通,但是,我必须使用 Javascript 进行一些计算,然后使用 GET 将这些变量传递给 file2.php(并且有一个变量是会话变量)。所以:

文件1.php

<?php
session_start();
$_SESSION['var'] = $var;
?>
<script type="text/javascript">
var var1 = 'car';
window.location = "file2.php?var1=" + var1;
</script>

文件2.php

<?php
session_start();
$var1= $_GET['var1'];
$var2 = $_SESSION['var'];
?>

我尝试window.location.href了而不是window.location 尝试使用document.cookie并尝试将cookie(with setcookie("PHPSESSID", [string])设置为存储在PHPSESSID中的内容(其他变量- JSESSIONID 和session_id- 都是NULL)。我尝试将其设置为整个字符串。

我试过了

session_name('login_session');
session_set_cookie_params(0, '/');
session_start();

我在这里找到的:https ://stackoverflow.com/a/5438521 。在两个页面上的脚本开头。

我还尝试session_write_close();file1.php中的 php 脚本末尾。


更新。我一直在阅读并认为如果我使用 Ajax/jquery,我也许可以让它工作。我试过了:

文件1.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>

文件2.php

<?php
session_start();
<strike>$var1= $_GET['var1'];</strike>
$var1 = $_REQUEST;
$var2 = $_SESSION['var'];
?>

但是会话仍然丢失。我第一次运行它时,我做了上面的事情。我include_once('file2.php');在 session_start() 下的 file1.php 中添加了第二个,在 file2.php 中添加了相反的内容


解决了:

文件1.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>

文件2.php

<?php 
$posted = $_REQUEST;
$sew = $posted['session'];
session_id($sew);
session_start();

$var = $_SESSION['var'];
?>

我搜索了我的历史记录,但找不到我发现这个想法的页面。

4

3 回答 3

0

但这不是跟进和becarfull初始化一些值的好习惯$var

<?php
session_start();
$_SESSION['var'] = $var;
?>

<script type="text/javascript">
var var1 = "<?php echo $_SESSION['var']; ?>";
window.location = "file2.php?var1=" + var1;
</script>
于 2012-09-23T00:25:24.780 回答
0

您缺少$变量中的: $_SESSION['var'] = var;并且var var1;永远不会设置

文件1.php

<?php
session_start();
$_SESSION['var'] = 'your_var_value';
?>
<script type="text/javascript">
window.location = "file2.php?var1=<?php echo $_SESSION['var'];?>";
</script>

文件2.php

<?php
session_start();
$var1 = (isset($_GET['var1'])?$_GET['var1']:null);
$var2 = (isset($_SESSION['var'])?$_SESSION['var']:null);
?>
于 2012-09-22T23:52:14.237 回答
0

您正在使用 cURL 访问 file1.php?cURL 不包含 Javascript 解释器,因此不会执行任何 Javascript。

于 2012-09-23T00:58:33.040 回答