0

在这里,我将会话值传递给 AS3,但我不想发送页面的任何其他内容或内容,例如 HTML 代码,另一方面,我不想让用户在页面上看到session:x

<?php
session_start();
 $session = $_SESSION['myusername'] ;
 if(!isset( $_SESSION['myusername'])){
    header('location:../login.html');
} else{
 echo "session:".$session;
 header('location:speaking.html');
}
?>
<html>
<!-- some HTML code-->
</html>

更新:

 var sesname:String;
 var loader : URLLoader = new URLLoader();
 var req:URLRequest = new URLRequest("http://localhost/speaking.php");
 loader.dataFormat = URLLoaderDataFormat.VARIABLES; 
 loader.load(req);
 loader.addEventListener(Event.COMPLETE, connectComplete);
 function connectComplete(event:Event):void{
    var session:String = event.target.data;

    sesname= session;
    trace(sesname);
    nextFrame();
}
4

2 回答 2

0

取决于您的 AS3 代码的外观,您可以在查询中添加参数以将其与用户区分开来,并使用它在 PHP 中检测它:

urlVars = new URLVariables();
urlReq.data = urlVars;
urlVars.as3 = 1;

在您的代码中:

} elseif($_GET['as3']) {
  echo "session:".$session;
  header('location:speaking.html');
}

之后echo()就可以使用exit()停止执行 php/html 代码了。

于 2013-10-13T09:18:48.783 回答
0

PHP 和 AS3 之间的通信如下所示。

首先,在php中发起一个session,并以html的形式输出swf flash对象。在您的情况下,我认为没有必要将会话变量传递给对象。

<?php
session_start();
// some other codes
?>
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="550" height="400" id="myFlashMovie" align="middle">
    <param name="movie" value="myFlashMovie.swf" />
</object>

其次,在 swf flash 对象中,AS3 加载一个 php 脚本,如果它是从 AS3 调用的,它将只返回名称-值对(注意fromFlash查询字符串)。

var req:URLRequest = new URLRequest("http://localhost/speaking.php?fromFlash=1");

第三,在 中speaking.php,仅输出包含必要名称-值对的字符串。您可能需要urlencode该值。

<?php
session_start();
$session = $_SESSION['myusername'];
if(!isset( $_SESSION['myusername'])) {
    header('location:../login.html');
} else {
    if (isset($_GET['fromFlash']) && $_GET['fromFlash'] == 1) {
        echo "sessionVar=" . $_SESSION['myusername'];
        exit;
    } else {
        echo "session:".$session;
        header('location:speaking.html');
    }
}
?>
<html>
<!-- some HTML code-->
</html>

最后,AS3 从调用的 speak.php 中提取数据。注意sessionVar变量与上面的输出相同echo "sessionVar=" . $_SESSION['myusername'];

// this is the same swf object in step 2
var req:URLRequest = new URLRequest("http://localhost/speaking.php?fromFlash=1");
loader.addEventListener(Event.COMPLETE, connectComplete);
function connectComplete(event:Event):void{
   var variables:URLVariables = new URLVariables();

   trace(variables.sessionVar);
   nextFrame();
}
于 2013-10-13T09:42:55.300 回答