2012-10-02 26 views
0

我在Facebook上構建了一個應用,並且我試圖在數據庫中插入正確的信息。 信息被插入,但我的代碼中的會話出現了問題(不是用戶的facebook會話) 似乎如果兩臺不同的機器已經進入iframe應用程序,它只會創建1個會話,並且它不會存儲正確的產品。在Facebook上的PHP會話標籤應用

在這裏:(首頁) - product-check.php我開始會話。

session_start(); 

然後(第二頁) - form.php的:

require 'facebook.php'; 
    session_start(); 
    if (isset($_REQUEST['product']) == NULL) 
    { 
    header ("location: product-check.php"); 
    } 
    else 
    { 
    $product = $_REQUEST['product']; 
    //let's start the session 
    //Posted Values stored in session 
    $_SESSION['product'] = $product; 

然後第三頁我使插入帶有兩個頁面的價值觀 - 產品檢查和形式。

session_start(); 
    $link = mysql_connect('With the right credentials') or die(mysql_error()); 
    mysql_set_charset('utf8',$link); 
    $db_selected = mysql_select_db('application', $link); 
    $product = mysql_real_escape_string($_SESSION['product']); 
    if (isset($_POST['name'])){$name = mysql_real_escape_string($_POST['name']);} 
    if (isset($_POST['surname'])){$surname = mysql_real_escape_string($_POST['surname']);} 
    if (isset($_POST['email'])){$email = mysql_real_escape_string($_POST['email']);} 
    if (isset($_POST['term'])){$accept_terms = mysql_real_escape_string("N");}else{$accept_terms = mysql_real_escape_string("Y");} 
    if (isset($_POST['contact'])){$accept_newsletter = mysql_real_escape_string("Y");}else{$accept_newsletter = mysql_real_escape_string("N");} 
    $query_insert = "INSERT INTO app(database fields) 
    VALUES(the above values i have declared)"; 
    $result = mysql_query($query_insert); 
    mysql_close($link); 
     session_destroy(); 

就是這樣。但並非來自product-check.php的所有產品都出現在數據庫中。

+0

您是否嘗試在數據庫插入之前回顯第三頁上的值以確保您正在接收所有數據?至少你可以通過你的管道回溯,找出數據停止「存在」的位置。 :) – dudewad

+0

是的,它是正確的和working.But似乎會話不會被破壞,並創建一個問題,爲多個用戶存儲數據。 – newoverstack

回答

0

好的,所以我嘗試了另一種方法,這個時候我沒有使用會話來傳遞值,我用隱藏的字段來代替。

我刪除了:

session_start(); 

部分來自所有曾與會話做,然後我創建隱藏字段,我用張貼像這樣值的頁面和一切:

<input type="hidden" name="productselect" value="<?php echo $variable ?>"> 

,然後在頁面上貼出我用一個簡單的帖子:

$product = $_POST['productselect'] 

它的工作!