PHP Wordpress giriş göndermek kıvırmak

4 Cevap php

i bir bağlantı tıklama bir otomatik oturum açma ihtiyacı olan bir müşteri için bir proje üzerinde çalışıyorum.

Aşağıdaki kod ile bunu yapmak için bir el sıkışma sayfasını kullanarak ediyorum:

$username="admin";
$password="blog";
$url="http://wordpressblogURL/";
$cookie="cookie.txt";

$postdata = "log=". $username ."&pwd=". $password ."&wp-submit=Log%20In&redirect_to=". $url ."blog/wordpress/wp-admin/&testcookie=1";
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url . "blog/wordpress/wp-login.php");

curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt ($ch, CURLOPT_REFERER, $url . "blog/wordpress/wp-login.php");

curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt ($ch, CURLOPT_POST, 1);
$result = curl_exec ($ch);
curl_close($ch);
echo $result;

exit;

Bu çalışıyor. Bu büyük Beni kaydeder.

Sorun URL kapalı Wordpress anahtarlarını inanmamız.

Ayrıntılı için, (beni günlükleri) benim el sıkışma sayfa "blog" dizininde ve benim wordpress uygulama "blog" dizini içindeki oturur "wordpress" dizinde olduğunu. Tarayıcıda URL blog / handshake.php Ancak, tarayıcı penceresinde Wordpress Yönetici bölümü vardır .. diyor. O .. blog / wordpress / wp-admin dizini olması gerektiğinde URL .. / blog dizini olduğundan Wordpress Admin bağlantılar artık düzgün çalışmıyor.

Tarayıcıda URL gerçek sayfa yansıtır böylece bunu yapmak için CURL bir yolu var mı?

Ben bunun yerine fsockopen kullanıyor olmalıdır?

4 Cevap

Kalyum bu hakkı var - wordpress arayüzü yolları bu şekilde erişilen zaman yönetim arabirimi düzgün çalışmamasına neden göredir.

Sizin yaklaşım birkaç yolla ilgili, bu yüzden bir kaç hızlı öneriler yapmak istiyorum.

Öncelikle, ben kodlanmış olmaktan $ username ve $ password değişkenleri kaldırmak için bir yol bulmaya çalışacaktı. Şifre yönetim arayüzü üzerinden, örneğin, kodunuzda kodlanmış değeri artık doğru olacaktır güncellenir, ve "otomatik giriş" şimdi başarısız olur - bunu kırmak için ne kadar kolay olduğunu düşünün. Birisi bir şekilde handshake.php için site ve kazanımları erişimi içermektedir Ayrıca, eğer - iyi, şimdi onlar blogunuza için kullanıcı adı ve şifre var.

Wordpress kurulum / blogunuza yolu (sizin örnek kod) göreli verilen, size yazdım el sıkışma dosyası olarak aynı sunucu üzerinde durur gibi görünüyor. Buna göre, onlar senin ebeveyn uygulamaları login karşı doğrulamak oturumu taklit çalışırken öneririz. Ben geçmişte bu birkaç kez yaptık - sadece özelliklerini hatırlamıyorum. Yani, örneğin, oturum açma komut giriş kimlik ayarlamak, aynı zamanda wordpress kimlik doğrulama için gerekli oturum anahtarlarını ayarlamak kalmayacak. Bu süreç WordPress kodunun bir sürü kazma dahil, ancak açık kaynak güzelliğini şu olacak! Bunun yerine CURL ve sabit kodlama değerlerini kullanarak, sadece uygulamanın giriş mekanizmasının içine WordPress kimlik doğrulama mekanizması entegre deneyin. Ben wp-login.php için kaynak arıyor ve oradan giderek başlamak istiyorum.

Tüm başka başarısız olur ve wordpress o ile oturum kimlik denetimi mekanizmasını örgü etmeye kararlı iseniz, o zaman hemen koduna bu değişiklikler ile (yaklaşımın daha ilgili yönlerini tespit olmadan) sorunu düzeltmek olabilir:

İlk olarak, aşağıdaki curl_opt ekleyin:

curl_setopt(CURL_COOKIEFILE, '');  // Enables session support

Ardından, kıvrılma işleyicisi kapattıktan sonra ekleyin:

curl_close($ch);
// Instead of echoing the result, redirect to the administration interface, now that the valid, authenticated session has been established
header('location: blog/wordpress/wp-admin/');
die();

Yani, ideal çözüm bu daha az size kullanıcının kimliğini doğrulamak için CURL kullanmak istiyorum, ve sonra ziyade düzenli yönetim arayüzü onları yönlendirmek, o anki sayfanın içine yönetim arayüzü kaçırmak çalışmayın.

Bu yardımcı olur umarım! Daha fazla yardım / çözüm belli değil ihtiyacınız varsa bana bildirin.

HTML kaynağını kontrol edin. RP'nin bağlantılar göreli olabilir gibi geliyor. Bunun yerine, bu süreci daha da karmaşık zaten daha yapma, ancak, ben kurabiye gerekli olan her türlü kullanıcıyı, giriş yapmak önermek ve onları yönlendirebilirsiniz.

Aksi takdirde parça bir vekil, parça kodlama ediyoruz.

Lütfen komut tek bir yürütme ihtiyacınız olan tüm fonksiyonları yerine değilse, sen, çerez değerleri ayrıştırmak bir dosyada saklayın, ve sonra bir sonraki yürütme üzerinde yeniden gerekebilir. CURLOPT_COOKIEFILE seçeneği göz atın.

Nasıl sizin için bunları yönetmek için Zend Framework's Cookies sınıfını kullanma hakkında.

Ben Curl kullanarak bir web sitesinin güvenli bölümleri tarama için geçmişte bu kullanmışlardır.