CURL Kimlik kaybolmuş?

2 Cevap php

Ben sadece iyi CURL üzeri giriş kimlik duyuyorum. Ben iade HTML görüntülemek için kullanıyorum, ve ben içeri giriş am sanki benim kullanıcı kontrol paneli dönen bir değişken var

Kimlik doğrulaması sonra, site içinde başka bir sayfada bir form değişkenleri iletişim kurmak istiyorsanız; (orijinal doğrulama yaşanmadığını gibi.) ama nedense o sayfa HTML başlığında olmayan bir kimliği doğrulanmış bir sürümünü geri dönüyor

Ben 777 izinlere sahip bir cookies.txt dosyası var ve ben kimlik doğrulaması sadece zaman gösterilen aynı sayfanın içeriğini alma denedim ve ben yol boyunca bir yerde ilişkili herhangi bir session / cookie verisini kaybediyorum sanki öyle.

İşte benim curl.class dosya -

<?

class Curl {

	public $cookieJar = "";

	// Make sure the cookies.txt file is read/write permissions
	public function __construct($cookieJarFile = 'cookies.txt') {
		$this->cookieJar = $cookieJarFile;
	}

	function setup() {
		$header = array();
		$header[0]  = "Accept: text/xml,application/xml,application/xhtml+xml,";
		$header[0] .= "text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
		$header[]   = "Cache-Control: max-age=0";
		$header[]   = "Connection: keep-alive";
		$header[]   = "Keep-Alive: 300";
		$header[]   = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
		$header[]   = "Accept-Language: en-us,en;q=0.5";
		$header[]   = "Pragma: "; // browsers keep this blank.

		curl_setopt($this->curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7');
		curl_setopt($this->curl, CURLOPT_HTTPHEADER, $header);
		curl_setopt($this->curl, CURLOPT_COOKIEJAR, $this->cookieJar);
		curl_setopt($this->curl, CURLOPT_COOKIEFILE, $this->cookieJar);
		curl_setopt($this->curl, CURLOPT_AUTOREFERER, true);
		curl_setopt($this->curl, CURLOPT_COOKIESESSION, true);
		curl_setopt($this->curl, CURLOPT_FOLLOWLOCATION, true);
		curl_setopt($this->curl, CURLOPT_RETURNTRANSFER, true);
	}

	function get($url) {
		$this->curl = curl_init($url);
		$this->setup();

		return $this->request();
	}

	function getAll($reg, $str) {
		preg_match_all($reg, $str, $matches);
		return $matches[1];
	}

	function postForm($url, $fields, $referer = '') {
		$this->curl = curl_init($url);
		$this->setup();
		curl_setopt($this->curl, CURLOPT_URL, $url);
		curl_setopt($this->curl, CURLOPT_POST, 1);
		curl_setopt($this->curl, CURLOPT_REFERER, $referer);
		curl_setopt($this->curl, CURLOPT_POSTFIELDS, $fields);
		return $this->request();
	}

	function getInfo($info) {
		$info = ($info == 'lasturl') ? curl_getinfo($this->curl, CURLINFO_EFFECTIVE_URL) : curl_getinfo($this->curl, $info);
		return $info;
	}

	function request() {
		return curl_exec($this->curl);
	}
}
?>

Ve burada benim curl.php dosya -

<?
include('curl.class.php'); // This path would change to where you store the file
$curl = new Curl();

$url = "http://www.site.com/public/member/signin";
$fields = "MAX_FILE_SIZE=50000000&dado_form_3=1&member[email]=email&member[password]=pass&x=16&y=5&member[persistent]=true";

// Calling URL
$referer = "http://www.site.com/public/member/signin";

$html = $curl->postForm($url, $fields, $referer);

echo($html);
?>
<hr style="clear:both;"/>
<?

$html = $curl->postForm('http://www.site.com/index.php','nid=443&sid=733005&tab=post&eval=yes&ad=&MAX_FILE_SIZE=10000000&ip=63.225.235.30','http://www.site.com/public/member/signin');

echo $html; // This will show you the HTML of the current page you and logged into
?>

Herhangi bir fikir?

2 Cevap

Err, sunucu kullanarak hangi kimlik doğrulama şeması lütfen bize bildirin. Tüm planları çerezleri kullanır.

Her zaman olduğu gibi HTTP komut yaparken, sen LiveHTTPHeaders ya da ilk manuel oturumunu kaydetmek için benzer kullanmak gerekir ve sizin curl şeyler yazarken o kadar yakından mümkün olduğunca taklit etmelidir.

Ayrıca (maalesef) komut satırı aracı kıvırmak biraz daha iyi hata ayıklama ve PHP bağlayıcı olandan izleme seçenekleri sunan daha iyi bir araç yapmanız gereken tam olarak ne işe ve çalıştığını kez bir PHP programına dönüştürmek olduğunu yapar, yapar.

Daha fazla detay için http://curl.haxx.se/docs/httpscripting.html bakın.