Log into Pligg using Twitter OAuth에서 Pligg 트위터 로그인 모듈을 설치하려고합니다.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())가 혼합 된 라이브러리는 객체 지향적입니다.
예. 나는이 일을 다시 쓰는 것이 그렇게 어렵지 않다고 생각한다. 나는 그것을 알아낼 것이다.