2010-03-07 106 views
-2

我正在嘗試安裝Pligg Twitter登錄模塊Log into Pligg using Twitter OAuth如何在不使用PEAR :: DB的情況下重新編寫此代碼?

我從上面的頁面下載了ZIP文件,並遵循了所有說明。然後我意識到其中一個文件正在使用PEAR,這不是由我的託管公司提供的。

confirm.php整個代碼是在這裏:

如何重寫這個代碼,所以我沒有使用PEAR?這甚至有可能嗎?我真的是PHP的新手。

<?php 
include 'EpiCurl.php'; 
include 'EpiOAuth.php'; 
include 'EpiTwitter.php'; 
include 'secret.php'; 
require_once 'DB.php'; 

$twitterObj = new EpiTwitter($consumer_key, $consumer_secret); 

$twitterObj->setToken($_GET['oauth_token']); 
$token = $twitterObj->getAccessToken(); 
$twitterObj->setToken($token->oauth_token, $token->oauth_token_secret); 

try { 
    setcookie('oauth_token', $token->oauth_token); 
    setcookie('oauth_token_secret', $token->oauth_token_secret); 

    $twitterInfo= $twitterObj->get_accountVerify_credentials(); 
    $twitterUserName = $twitterInfo->screen_name; 
    $twitterAvatar = $twitterInfo->profile_image_url; 
} catch (Exception $e) { 
    die("Sorry, there was an error connecting to twitter:".$e->getMessage()); 
} 

$DB =& DB::connect('mysqli://USER:[email protected]/DB'); 
if (DB::isError($DB)) 
{ 
    echo 'Cannot connect to database: ' . $DB->getMessage(); 
} 
else 
{ 
    $query = 'select twitter_user_name, pligg_user_name, pligg_password FROM twitter_user_map where twitter_user_name = ?'; 
    $result = $DB->query($query, $twitterUserName); 
    if (DB::isError ($result)) { 
      die ("Select failed: " . $result->getMessage() . "\n"); 
     } 
    $userDetails = $result->fetchRow(DB_FETCHMODE_OBJECT); 
    if ($result->numRows() == 0) { 
     createAccount($DB,$twitterUserName, 0, $twitterUserName); 
    } else { 
     redirectToLogin($userDetails->pligg_user_name, $userDetails->pligg_password); 
    } 
} 

function createAccount($DB, $username, $delta, $twitterUsername) { 
    $pass = genRandomString(); 
    $query = "insert into twitter_user_map(twitter_user_name, pligg_user_name, pligg_password) values ('$twitterUsername', '$username','$pass')"; 
    $result = $DB->query($query); 
    if (DB::isError ($result)) { 
     die ("INSERT failed: " . $result->getMessage() . "\n"); 
    } 
    if ($DB->affectedRows() == 0) { 
     $newUsername = $twitterUsername; 
     if ($delta != 0) { 
      $newUsername = $username . "" . $delta; 
     } 
     createAccount($DB,$newUsername, $delta + 1, $twitterUsername); 
    } else { 
     redirectToRegister($username, $pass); 
    } 
} 

function redirectToRegister($username, $pass) { 
    print "redirectToRegister"; 
    $postdata = http_build_query(
     array(
      'reg_username' => $username, 
      'reg_email' => "", 
      'reg_password' => $pass, 
      'reg_password2' => $pass, 
      'recaptcha_challenge_field' => '02kOXNvO91qx4TJ6dC8evG6SkqQvGlUfjxF8bvaurguiAsftwQYut68EfNxZh6ZYMTyqcrWNT4RooYxxfjueRVFIkcN_UwRI-J6bjWZczbLk4p0Tqml6tVHQeyocVvU0SwUKUn_kmtDV4Y7kGfbn-qyiYt55-iaFojc060MJ-jAZ68z5Vlw8xrvPRhLW6JAO1F2D6oAY7vsWI_e1Nmhww1lQ6qsL10W4wWrCWLywOIZVIZnsa5p61_IQf9Yn_NV-Nir_DCWxKMUZieZkL1pril6_kMaj0B', 
      'recaptcha_response_field' => '', 
      'regfrom' => "full", 
      'from_external' => "1" 
     ) 
    ); 
    $opts = array('http' => 
     array(
      'method' => 'POST', 
      'header' => 'Content-type: application/x-www-form-urlencoded', 
      'content' => $postdata 
     ) 
    ); 
    $context = stream_context_create($opts); 
    $result = file_get_contents('sitename/register.php', false, $context); 
    print $result; 
} 

function redirectToLogin($username, $password) { 
    $postdata = http_build_query(
     array(
      'username' => $username, 
      'password' => $password, 
      'persistent' => "on", 
      'from_external' => "1" 
     ) 
    ); 
    $opts = array('http' => 
     array(
      'method' => 'POST', 
      'header' => 'Content-type: application/x-www-form-urlencoded', 
      'content' => $postdata 
     ) 
    ); 
    $context = stream_context_create($opts); 
    $result = file_get_contents('sitename/login.php', false, $context); 
    print $result; 
} 

function genRandomString() { 
    $length = 10; 
    $characters = '123456789abcdefghijklmnopqrstuvwxyz'; 
    $string = ''; 
    for ($p = 0; $p < $length; $p++) { 
     $string .= $characters[mt_rand(0, strlen($characters))]; 
    } 
    return $string; 
} 

?> 

更新

PEAR DB Basics

例8-1是建設大約詹姆斯·邦德的電影信息的HTML表格的程序。它演示瞭如何使用PEAR DB庫(隨PHP附帶)連接到數據庫,發出查詢,檢查錯誤並將查詢結果轉換爲HTML。這個庫是面向對象的,有類方法(DB :: connect(),DB :: iserror())和對象方法($ db-> query(),$ q-> fetchInto())的混合。

是的。我想重寫這個東西並不難。我會弄清楚。

回答

6

PEAR不過是另一個PHP腳本,可以手動安裝到任何主機上。 我想沒有辦法「展示重寫的方式」,這很可能是「爲我重寫這段代碼」的問題。

甚至pligg推廣問題

相關問題