Ben AWeber.com giriş ve verilerin toplu ithalatını gerçekleştirmek için güçlü bir program geliştirilmesi olmuştur. Komut bir tarayıcı ile normal bir kullanıcı parodi kendi cookiejar ayarlarıyla birlikte, PHP cURL kütüphaneleri kullanır.
Komut giriş sağlayan, mükemmel çalışıyor, ve listelerin değişmesi, ancak bu form verilerini gönderme söz konusu olduğunda (submitData fonksiyonunda) komut her zaman başarısız olur. Her zaman oturumu sona erdiğini belirten, ve tekrar giriş için "kullanıcı" soran web sitesi irade çıktı bir web sayfası. Sayfası da kendi tarayıcınızda çerezleri etkinleştirmek için "kullanıcı" ister.
Ben sorunu teşhis gün son birkaç harcamak var ve bu beni tamamen şaşkına vardır. CURLOPT_VERBOSE ayar cURL web sitesine çerezleri geçtiğini gösterir, cookiejar dosya tanımlama bilgilerini içeren ve bu Referans ve Javascript gereksinimleri gibi ek faktörler nedeni faktörlerin elimine edilmiştir.
Ben bu meydana ve soruna çözüm olabilir neden olarak herhangi bir öneri seviniriz. Hataya neden sınıf ve kod aşağıda görüntülenir. Hata oluştuğu kodu işaretlenir.
<?php
class AWeber {
private $cj;
public function __construct() {
$this->cj = tempnam('/tmp', 'mlcookies_');
}
private function postQuery( $url, $array ) {
$cu = curl_init();
curl_setopt( $cu, CURLOPT_URL, $url );
curl_setopt( $cu, CURLOPT_POST, true );
curl_setopt( $cu, CURLOPT_POSTFIELDS, $array );
curl_setopt( $cu, CURLOPT_COOKIEJAR, $this->cj );
curl_setopt( $cu, CURLOPT_COOKIEFILE, $this->cj );
curl_setopt( $cu, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $cu, CURLOPT_FOLLOWLOCATION, true );
curl_setopt( $cu, CURLOPT_HEADER, true );
curl_setopt( $cu, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)' );
$return = curl_exec($cu);
echo $return;
curl_close($cu);
return $return;
}
private function getQuery( $url ) {
$cu = curl_init();
curl_setopt( $cu, CURLOPT_COOKIEJAR, $this->cj );
curl_setopt( $cu, CURLOPT_COOKIEFILE, $this->cj );
curl_setopt( $cu, CURLOPT_URL, $url );
curl_setopt( $cu, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $cu, CURLOPT_FOLLOWLOCATION, true );
curl_setopt( $cu, CURLOPT_HEADER, true );
curl_setopt( $cu, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)' );
$return = curl_exec($cu);
curl_close($cu);
echo $return;
return $return;
}
public function login( $user, $pass ) {
$this->getQuery( "https://www.aweber.com/login.htm" ); // Get page cookie checks
$query = array(
'_method' => 'POST',
'data[Account][username]' => $user,
'data[Account][password]' => $pass,
'data[Account][remember_login]' => '1'
);
$return = $this->postQuery( "https://www.aweber.com/login.htm", $query );
$this->getQuery( "https://www.aweber.com/users/" );
if ( !$return ) return false;
if ( strpos($return, '<div class="aw-status-headline">Error</div>') === false ) {
return true;
} else {
return false;
}
}
public function setList( $list ) {
$return = $this->getQuery( "https://www.aweber.com/users/lists/change/" . $list );
if ( !$return ) return false;
if ( strpos($return, '<option selected="selected" id="listSelectionActiveOption" value="' . $list . '">' ) === false ) {
return false;
} else {
return true;
}
}
public function submitData( $text, $note ) {
$query = array(
'upload_file' => '1',
'data[ImportWizard][leads]' => $text,
'data[ImportWizard][delimiter]' => 'TAB',
'data[ImportWizard][customer_note]' => $note,
'data[ImportWizard][use_automation]' => '1',
'cmd' => 'Next',
);
$return = $this->postQuery( "https://www.aweber.com/users/lead_imports", $query );
echo $return;
if ( !$return || strpos($return, '<h1>Step 2</h1>') === false ) return false;
$query = array(
'columnArray' => '',
'columnArray' => '',
'data[ImportWizard][column0]' => 'name',
'data[ImportWizard][column1]' => 'email',
'cmd' => 'Save',
);
$return = $this->postQuery( "https://www.aweber.com/users/lead_imports", $query );
if ( !$return || strpos($return, '<div class="aw-status-headline">Import Queued</div>') === false ) return false;
return true;
}
}
$aw = new AWeber(); // Create new AWeber interface class instance
$aw->login( $aUser, $aPass ) or trigger_error('Login failed', E_USER_ERROR); // Login
$aw->setList( 'list1' ) or trigger_error('List change 1 failed', E_USER_ERROR); // Change mailing list to 'list1'
// *** CODE WILL FAIL HERE WITH "Data submit 1 failed" ERROR ***
$aw->submitData( "Test\tTesterrr\nTest2\tTesterrr2\nTest3\tTesterrr3\n", "Testing Testing Testing Testing Testing Testing Testing" ) or trigger_error('Data submit 1 failed', E_USER_ERROR); // Submit data
$aw->setList( 'list2' ) or trigger_error('List change 2 failed', E_USER_ERROR); // Change mailing list to 'list2'
?>