0

これはコードの 2 つの部分です (108 行目は NoBlankFunctions.php の最後の行です)。これは、newReposnderOAuth を使用した $responder の宣言です (このクラスは、その会社の他の多くのクライアントによって使用されているため、うまく機能すると想定できます)。ある時点で、コードは NoBlankFunctions の一部である addNewUser を呼び出しています。この関数内には、同じ php ファイル内の別の関数であるレスポンダーへの呼び出しがあります。そして最後に、httpリクエストを送信しようとすると崩壊します。

include 'OAuth.php';
include 'responder_sdk.php';
include 'NoBlankFunctions.php';

$client_key = '28FB957EA00B920BE7F83A365CC7ABAF';    
$client_secret = '0B06B5A69DB0F3BCB80A716031C2DE6C';  
$user_key = '1F566B1DE821BE68B5F485F75610F610';  
$user_secret = '5D1406DACCA6B862AD4AE361823BB108';

$responder = new ResponderOAuth($client_key, $client_secret, $user_key, $user_secret);  
.  
.  
.  
addNewUser($registerFirstName, $registerLastName, $registerUserName,
                $registerPass, $registerEmail, $registerGender,
                $registerAge, $registerCountry, "Heb", $registerUserGMT);       

noBlankFunctions.php

function addNewUser($registerFirstName, $registerLastName, $registerUserName,
                $registerPass, $registerEmail, $registerGender,
                $registerAge, $registerCountry, $registerLang, $registerUserGMT)
{   
global $db;
$sql = "INSERT INTO `".$db."`.`users` (`userEmail`, `nickName`, `password`, `firstName`, `lastName`, `State`, `userGMT`, `language`, `gender`, `age`, `currentDay`, `dateForCurrentDay`, `isUserCheck`, `isUserDone`, `isUserPayed`)
        VALUES ('".$registerEmail."', '".$registerUserName."', '".$registerPass."', '".$registerFirstName."', '".$registerLastName."', '".$registerCountry."', '".$registerUserGMT."', '".$registerLang."', '".$registerGender."', '".$registerAge."', '0', '".date("Y/m/d")."', '0', '0', '0');";
$result = mysql_query($sql);

if ($registerLang == 'En')
{
    $listNum = 37742;
}
elseif($registerGender == 'Male')
{
    $listNum = 37713;
}
else
{
    $listNum = 37741;
}
responder($registerEmail, $registerFirstName, $listNum);
}

function responder($userMail, $userFirstName, $listNum)
{
    $post_data = array(
        'subscribers' => json_encode(
            array(
                array(
                    'EMAIL' => $userMail,
                    'NAME' => $userFirstName
                )
            )
        )
    );
$response = $responder->http_request('lists/'.$listNum.'/subscribers', 'post', $post_data);
}

何か案は?

4

2 に答える 2

0

エラーメッセージは、$ responderがオブジェクトではない、つまりインスタンス化されていないことを示しています。非オブジェクトのメソッドhttp_requestにアクセスしようとしても、明らかに機能しません。

インスタンス化したことに気づきましたが、ファイル内の関数内$responderから参照しようとしています。オブジェクトではないその変数のローカルスコープを参照しているように感じます。上でインスタンス化した元の$responder変数を参照するグローバルプレフィックスを使用して宣言しようとした場合。$responderrespondernoBlankFunctions.php$responder$responder

gloabl $responder

可変スコープ

于 2012-07-24T18:53:47.503 に答える
0

$responder関数のスコープ内で定義されていません。

(最も好ましいものから最も好ましくないものの順に)それを追加の引数として渡すglobal $responderか、関数本体のどこかに(アクセスを試みる前に)追加するか、またはにアクセスします$GLOBALS['responder']

于 2012-07-24T19:01:32.083 に答える