it-swarm-tr.com

Joomla Kullanıcı Parolası Harici (Bağımsız) Bir Komut Dosyasından Sıfırlama

Bir kullanıcının, Joomla sitesine bağlanan bir mobil uygulamadan şifrelerini sıfırlaması için gereksinimim var. (Kimlik doğrulama ve bir sessionid döndürme) giriş başarılı oldu ama bu harici komut dosyası için bir parola sıfırlama ile çok şanslı görünmüyor.

Bu kod, Joomla için gereken gerekli form belirteci oturum kimliğini kullanarak POST:

<?php
define('_JEXEC', 1);
define( 'DS', DIRECTORY_SEPARATOR );
//define('JPATH_BASE', dirname(__FILE__));
define('JPATH_BASE', '../');

require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );

$mainframe =& JFactory::getApplication('site');
$mainframe->initialise();

require '../libraries/import.php';
?>
<div>
<form 
id="user-registration" 
action="http://siteurl/component/users/com_users/?task=reset.request" 
method="post">

<input 
type="text" 
name="jform[email]" 
value="[email protected]" 
size="30">

<button 
type="submit"
>Submit</button>

<input 
type="hidden" 
name="<?php echo JUtility::getToken(); ?>" 
value="1">
</form>
</div>

Ancak bu cURL üzerinden işlemeye çalışırken (bool) yanlış bir yanıt alıyorum ...

<?php 
$token = JUtility::getToken();
$emailadr = '[email protected]';


$url = 'http://[i]siteurl[/i]/component/users/com_users/?task=reset.request';
$vars = 'jform[email]='.urlencode($emailadr).'&'.urlencode($token).'="1"';

echo $vars;

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0 );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 0 );
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);
$response = curl_exec($ch);

var_dump($response);

Bu (yaklaşık 20 başka curl parametresi kombinasyonu, urlencode geçişi, dizilerin/dizelerin değiştirilmesi ile birlikte) (bool) False değerini döndürür.

Bununla ilgili belirgin bir arıza var mı?

Joomla kontrolleri belirli httpheader gerektiriyor mu?

1
hngr18

Curl değişkenleri basit anahtar => değer biçiminde, sonra http kodlu olarak bekliyor. Yani şunları ayarlamanız gerekir:

$vars = 'jform[email]='.urlencode($emailadr).'&'.urlencode($token).'=1';

Not, hayır "belirteci alanının alan değeri için

3
jdog