2

私はPHPが初めてで、SESSIONSも初めてです

私は Instagram API を使用しており、アプリを正常に承認し、ページにリダイレクトしてコンテンツを表示できます。

私のメイン フォルダーは Monkey と呼ばれ、Instagram というサブ フォルダーがあります。

Instagram の私のコールバック URL は、instagram フォルダーにある success.php です。Instagram からアクセス トークンを正常に取得すると、Monkey フォルダーのインデックス ファイルにリダイレクトされます。

私の成功ページでは、instaArray というデータでいっぱいの配列を作成しています。Instagramフォルダーのsuccess.phpからmonkeyフォルダーのindex.phpに配列を渡そうとしています。

私のリダイレクトは単純です

header( 'Location: ../index.php' );

私はセッションが初めてなので、何か間違っていると思います。私はそれが簡単だと思ったが、そうではないと思う.

success.php ページで、配列を作成した後、これが表示されます

session_start();
$_SESSION['instagram'] = $instaArray;

アレイ InstaArray を保持するセッションを作成する必要があると考えました。

次に、Monkey の index.php ページに、これがあります

<?php
session_start();

$get_instagram = $_SESSION['instagram'];

print_r($get_instagram);

?>

しかし、絶対に何も起こりません。セッション instagram を単純な数値または 1、 $_SESSION['instagram'] = 1; に設定しようとさえしました。インデックスページでそれを取得しても機能しません。

私はひどく、ひどく間違ったことをしていますか? 私はセッションについて読んだことがありますが、それは新しいので、まだ少し混乱しています.

助けてくれてありがとう。すべてを適切に説明できたことを願っています。

編集: これが私の success.php ページの全文です。

<?php

require 'src/db.php';
require 'src/instagram.class.php';
require 'src/instagram.config.php';

// Receive OAuth code parameter
$code = $_GET['code'];

// Check whether the user has granted access
if (true === isset($code)) {

    // Receive OAuth token object
    $data = $instagram->getOAuthToken($code);
    // Take a look at the API response

    $username = $data->user->username;
    $fullname = $data->user->full_name;
    $id = $data->user->id;
    $token = $data->access_token;

    $user_id = mysql_query("select instagram_id from users where instagram_id='$id'");

    if(mysql_num_rows($user_id) == 0) { 
        mysql_query("insert into users(instagram_username,instagram_name,instagram_id,instagram_access_token) values('$username','$fullname','$id','$token')");
    }

    //Set Cookie
    $Month = 2592000 + time();
    setcookie(instagram, $id, $Month);

        // Set user access token
    $instagram->setAccessToken($token);

        // Retrive Data
    $instaData = $instagram->getUserFeed();

    // Create Instagram Array
    $instaArray = array();
    $count = 0;

    // For each Instagram Post
    foreach ($instaData->data as $post) {
        $instaArray[$count]['post_id'] = $post->id;
        $instaArray[$count]['name'] = $post->user->username;
        $instaArray[$count]['profile_img'] = $post->user->profile-picture;
        $instaArray[$count]['img_url'] = $post->images->standard_resolution->url;
        $instaArray[$count]['caption'] = $post->caption->text;
        $instaArray[$count]['like_count'] = $post->likes->count;
        $instaArray[$count]['comment_count'] = $post->comments->count;
        $instaArray[$count]['created_time'] = $post->created_time; //Unix Format
        $count++;
    }

    // Start Session For Array
    session_start();
    $_SESSION['instagram'] = serialize($instaArray);

    header( 'Location: ../index.php' ) ;

} else {
    // Check whether an error occurred
    if (true === isset($_GET['error']))  {
        echo 'An error occurred: '.$_GET['error_description'];
    }
}

?>

4

3 に答える 3

0

index.php で配列を unserialize() する必要があると思います。

$get_instagram = unserialize($_SESSION['instagram']);
于 2013-03-22T16:35:48.767 に答える
0

セッション + データ (通常はサーバー上の一時ディレクトリ内のテキスト ファイルに保存される) ではなく、ID と Cookie を使用しないのはなぜですか? また、クライアントがデータにアクセスできるようにするよりも、すべてのデータをデータベース内に保持します。セッションも一時的なものです。

「グローバル」がオンになっているかどうか知っていますか?!

「セッションを操作するときは、session_register() 関数を使用するか、$_SESSION スーパーグローバル配列に新しいキーを追加することによって変数が登録されるまで、セッションのレコードが作成されないことに注意してください。これは、セッションがsession_start() 関数を使用して開始されました。」

参考:
http ://www.php.net/manual/en/function.session-register.php

于 2013-03-22T16:03:08.450 に答える
0

phpの後にsession_start()を最初の行にする

 <?php
    session_start();

ページ上の任意の要素から削除します。

session_start() は、success.php と同様に、index.php の最初の行にする必要があります。

注: session_start() 関数は、タグの前に表示する必要があります。

参照: http://www.w3schools.com/php/php_sessions.asp

于 2013-03-22T16:03:11.147 に答える