0

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 に渡します (セッション変数である変数が 1 つあります)。そう:

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'];
?>

PHPSESSID に格納されているものに( を使用して) Cookie を使用して設定しようとwindow.location.hrefする代わりに、試してみました (他の変数 - JSESSIONID と- は両方とも NULL でした)。文字列全体に設定してみました。window.locationdocument.cookiesetcookie("PHPSESSID", [string]session_id

私は試した

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

ここで見つけたもの: https://stackoverflow.com/a/5438521。両方のページのスクリプトの開始時。

file1.phpsession_write_close();の php スクリプトの最後にも試しました。


アップデート。私は読んでいて、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'];
?>

しかし、セッションは失われました。初めて実行したときは、上記のことを行いました。2番目は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'];
?>

履歴を検索しましたが、アイデアを見つけたページが見つかりませんでした。

4

3 に答える 3

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);
?>
于 2012-09-22T23:52:14.237 に答える
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

cURL で file1.php にアクセスしていますか? cURL には Javascript インタープリターが含まれていないため、Javascript は実行されません。

于 2012-09-23T00:58:33.040 に答える