2013-04-30 144 views
0

我有一個Flash應用程序捕獲圖像通過網絡攝像頭,並通過save.php(下)將其存儲在文件中。現在我遇到的問題是,當加載save.php時,我無法訪問我的會話變量。調用會話變量時是否需要使用其他方法?無法調用訪問會話變量

<?php 

    include 'session.php'; 
    sec_session_start(); 

    $userid=$_SESSION['user_id']; 
    $w = 300; 
    $h = 400; 


    $img = imagecreatetruecolor($w, $h); 


    imagefill($img, 0, 0, 0xFFFFFF); 

    $rows = 0; 
    $cols = 0; 

    for($rows = 0; $rows < $h; $rows++){ 

    $c_row = explode(",", $_POST['px' . $rows]); 
     for($cols = 0; $cols < $w; $cols++){ 
      $value = $c_row[$cols]; 
      if($value != ""){ 
     $hex = $value; 
     while(strlen($hex) < 6){ 
      $hex = "0" . $hex; 
     } 

     $r = hexdec(substr($hex, 0, 2)); 
     $g = hexdec(substr($hex, 2, 2)); 
     $b = hexdec(substr($hex, 4, 2)); 

     $test = imagecolorallocate($img, $r, $g, $b); 

     imagesetpixel($img, $cols, $rows, $test); 
     } 
     } 
    } 

    if(isset($userid)){ 
    $fp = fopen("name.jpg", "w"); 
    ob_start(); 
    imagejpeg($img, "", 90); 
    $img = ob_get_contents(); 
    ob_end_clean(); 
    fwrite($fp, $img); 
    echo "name.jpg"; 
    echo $userid; 
    exit; 
    } 
?> 

這session.php文件

 function sec_session_start() { 
     $session_name = 'sec_session_id'; 
     $secure = true; 
     $httponly = true; 

     ini_set('session.use_only_cookies', 1); 
     $cookieParams = session_get_cookie_params(); 
     $cookieParams["lifetime"], $cookieParams["path"], $cookieParams["domain"], 
       $secure, $httponly); 
    session_name($session_name); 
    session_start(); // Start the php session 
    session_regenerate_id(true); 
     } 

數據從閃存發送到save.php通過

 load_var.sendAndLoad("save.php", result_lv, "POST"); 

感謝您對您的時間。

UPDATE

好了,現在我想通過會話變量閃爍,在save.php檢索。這是如何使用flsahvars的。

 var flashvars = { 
     phpsessionid:<?php print $user_id;?>, 
     }; 

     var cam = new SWFObject("webcamvid.swf", "player_mc", "400", "500", "8",  
     "#336699",flashvars); 
      cam.addParam("quality", "high");  
      cam.addParam("wmode", "transparent"); 
       cam.addParam("pluginurl", "http://www.macromedia.com/go/getflashplayer"); 
      cam.addParam("pluginspage", "http://www.macromedia.com/go/getflashplayer"); 
      <!--so.addParam("allowFullScreen", "true"); --> 
      cam.addParam("salign", "t"); 
      cam.write("takepic"); 

這是用來檢索Flash應用程序的FlashVars:

 function getFlashVars():Object { 
      return Object(LoaderInfo(this.loaderInfo).parameters); 
      } 
     var _var1=getFlashVars().phpsessionid; 

,然後發送。

 _var1.sendAndLoad("save.php", PHPSESSNID, "POST"); 

請注意閃光燈還具備

 load_var.sendAndLoad("save.php", result_lv, "POST"); 

這是另一個變量。

我無法檢索save.php中的_var1。任何想法如何我可以使這項工作謝謝

+0

您需要傳遞會話ID與來自Flash應用程序的請求。即設置cookie或將其傳遞到字段中,然後在使用會話啓動之前,可以使用'session_id($ ID_HERE);'和/或'$ _COOKIE'激活它。 – 2013-04-30 13:08:01

+1

嗯,一邊尋找最簡單的解決方案,我注意到有一個無與倫比的)附近$ httponly。它是否被認爲是意外刪除的函數調用的一部分? – 2013-04-30 13:13:48

+0

session_get_cookie_params()行之後session.php中發生了什麼?那是有效的語法嗎? – 2013-04-30 13:14:24

回答

0

加入session_start();首先在您的PHP代碼的最頂端部分使用

<?php 
session_start(); 

/* 

your code 

*/ 

?> 
+0

它在sec_session_start()在session.php – 2013-04-30 13:12:51

+0

是的,我已經看到,許多文檔表明'session_start()'必須在最頂層層次結構到ini配置。 – 2013-04-30 13:16:29

+0

確定經過12小時以上的痛苦.....我去了答案。 – user2288650 2013-05-01 01:01:40

0

好吧,在這個所有你需要做的就是使用會話如下。

function sec_session_start() { 
    $session_name = 'sec_session_id'; 
    $secure = **flase;** 
    $httponly = true; 

    ini_set('session.use_only_cookies', 1); 
    $cookieParams = session_get_cookie_params(); 
    $cookieParams["lifetime"], $cookieParams["path"], $cookieParams["domain"], 
      $secure, $httponly); 
    session_name($session_name); 
    session_start(); // Start the php session 
    session_regenerate_id(true); 
    } 

在文件剛啓動時調用會話啓動函數。雙重,三重和四重檢查代碼或任何輕微的錯誤,你應該能夠訪問你的會話變量。