2009-06-02 2 views
0

트위터 자격 증명에 사용자 이름과 암호 변수를 전달하려고하는데 인증되지 않은 것을 계속 반환합니다. 그러나 변수 대신 실제 사용자 이름과 암호를 사용하면 성공적으로 인증됩니다.Twitter API PHP 내의 변수를 사용하는 중 오류가 발생했습니다. DEFINE

$username = $_POST["username"]; 
$password = $_POST["password"]; 

$url = "http://search.twitter.com/search.atom?q=golf&show_user=true&rpp=100"; 
$search = file_get_contents($url); 

$regex_name = '/\<name\>(.+?) \(/'; 
preg_match_all($regex_name,$search,$user); 
for($i=0;$user[1][$i];$i++) 
{ 
$follow = $user[1][$i]; 
    define('TWITTER_CREDENTIALS', '$username:$password'); 
    $url = "http://twitter.com/friendships/create/".$follow.".xml"; 
    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL,$url); 
    curl_setopt($ch, CURLOPT_POST, 1); 
    curl_setopt($ch, CURLOPT_USERPWD, TWITTER_CREDENTIALS); 
    $result= curl_exec ($ch); 
    curl_close ($ch); 

나는 사용자 이름과 암호 사이에 콜론과 관련이 있거나, 정의 함수 내에서 변수를 사용하려한다고 생각합니다.

실마리가 있습니까?

답변

6
$username = $_POST["username"]; 
$password = $_POST["password"]; 
// INCORRECT. Will literary assign TWITTER_CREDENTIALS as $username:$password 
// define('TWITTER_CREDENTIALS', '$username:$password'); 

// CORRECT, will parse the variables and assign the result to TWITTER_CREDENTIALS 
define('TWITTER_CREDENTIALS', "$username:$password"); 

하지 않는 큰 따옴표 (") 구문 분석 문자열 변수, 작은 따옴표 (')와 문자열 문자열을 기억

를 PHP에서 문자열에 대한 자세한 내용을 읽어보십시오.

1

큰 따옴표 대신 작은 따옴표를 사용하는 것과 관련이 있습니다.

0

루프 내에서 정의를 사용하고 있습니다. 상수는 한 번만 정의 할 수 있기 때문에 작동하지 않습니다.

+0

그는 DEFINE을 올바르게 사용하지 않지만 그것이 작동하지 않는다는 것을 의미하지는 않습니다. 그것은 그에게 통지를 줄 것이다. 그의 사용자 이름과 암호는 어쨌든 바뀌지 않으므로 큰 문제는 없습니다. – SilentGhost