Sitemizde, Joomla 1.5 kurulumunun bitişiğinde bulunan bağımsız bir komut dosyası var. Komutumuza erişimi kısıtlamak için Joomla kimlik doğrulamasını kullanıyoruz. Bu noktada, herhangi bir yetkisiz kullanıcıyı giriş yapmak için Joomla sitesine yönlendiriyoruz. Yine de bizim betikimizde bir giriş yeteneği eklemek istiyoruz. Bir kullanıcı adı/şifre kullanarak harici bir komut dosyasından joomla'ya nasıl giriş yapacağını bilen var mı? Teşekkürler!Bir dış komut dosyası aracılığıyla joomla'ya nasıl giriş yapılır?
cevap
<?php
//http://domain.com/script/script.php?username=username&passwd=password
define('_JEXEC', 1);
define('JPATH_BASE', '../');
define('DS', DIRECTORY_SEPARATOR);
require_once('../configuration.php');
require_once (JPATH_BASE .DS.'includes'.DS.'defines.php');
require_once (JPATH_BASE .DS.'includes'.DS.'framework.php');
require_once (JPATH_BASE .DS.'libraries'.DS.'joomla'.DS.'factory.php');
/* Create the Application */
$mainframe =& JFactory::getApplication('site');
jimport('joomla.plugin.helper');
$credentials = array();
$credentials['username'] = JRequest::getVar('username', '', 'method', 'username');
$credentials['password'] = JRequest::getVar('passwd', '', 'method', 'passwd');
//perform the login action
$error = $mainframe->login($credentials);
$user = JFactory::getUser();
//now you are logged in
$mainframe->logout();
//now you are logged out
Aşağıdaki çözümlerden birini öneririm:
- bir login plugin belirli için komut dosyası yazın. (. CURL de çerezleri başa çıkabilir) Normal giriş formunun bir SONRASI İsteği yapmak için komut CURL kullanarak
- (En basit): Joomla tarafından kimlik doğrulaması !, ama .htaccess tarafından vermeyin. Joomla 3.x için
aşağıda daha temiz ve yararlı olur. Aşağıdaki kodlar kodlanmış kullanıcı adı ve şifreyi doğrulayacaktır. Kullanıcı varsa, index.php sayfasına yönlendirilir.
<?php
/**
* Joomla! External authentication script
*
* @author vdespa
* Version 1.0
*
* Code adapted from /index.php
*
* @package Joomla.Site
*
* @copyright Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
if (version_compare(PHP_VERSION, '5.3.1', '<'))
{
die('Your host needs to use PHP 5.3.1 or higher to run this version of Joomla!');
}
/**
* Constant that is checked in included files to prevent direct access.
* define() is used in the installation folder rather than "const" to not error for PHP 5.2 and lower
*/
define('_JEXEC', 1);
if (file_exists(__DIR__ . '/defines.php'))
{
include_once __DIR__ . '/defines.php';
}
if (!defined('_JDEFINES'))
{
define('JPATH_BASE', __DIR__);
require_once JPATH_BASE . '/includes/defines.php';
}
require_once JPATH_BASE . '/includes/framework.php';
// Instantiate the application.
$app = JFactory::getApplication('site');
jimport('joomla.plugin.helper');
// JFactory
require_once (JPATH_BASE .'/libraries/joomla/factory.php');
// Hardcoded for now
$credentials['username'] = 'admin';
$credentials['password'] = 'admin';
// Get a database object
$db = JFactory::getDbo();
$query = $db->getQuery(true)
->select('id, password')
->from('#__users')
->where('username=' . $db->quote($credentials['username']));
$db->setQuery($query);
$result = $db->loadObject();
if ($result)
{
$match = JUserHelper::verifyPassword($credentials['password'], $result->password, $result->id);
if ($match === true)
{
// Bring this in line with the rest of the system
$user = JUser::getInstance($result->id);
echo 'Joomla! Authentication was successful!' . '<br>';
echo 'Joomla! Token is:' . JHTML::_('form.token');
//perform the login action
$error = $app->login($credentials);
$logged_user = JFactory::getUser();
var_dump($logged_user);
//redirect logged in user
$app->redirect('index.php');
}
else
{
// Invalid password
// Prmitive error handling
echo 'Joomla! Token is:' . JHTML::_('form.token') . '<br>';
die('Invalid password');
}
} else {
// Invalid user
// Prmitive error handling
die('Cound not find user in the database');
}
kullanılamaz. Joomla oturumu başlatmak hala mümkün mü? –
Çalıştığı' – frthjf
Bunu yaptım ve gayet iyi çalışıyor. varsayarsak özel giriş komut true dönecektir şifreyi kontrol --- sen orada php kod parçacığı
$phpass = new PasswordHash(10, true);
$password= "unhashed user password";
$db_password = 'Your hashed password in the database';
$ok= $phpass->CheckPassword($password, $db_password);
?>
Ve İşte
-Go to Joomla installation directory
-Copy PasswordHash.php from this directory /root/libraries/phpass/ to your external script's folder
-Include the PasswordHash.php in login.php
-Create an instance of PasswordHash like this:
login.php
olduğu iki şifre eşleşir. Not: Veritabanından otomatik olarak kontrol etmek için bir sorgu yazmanız gerekiyor.- 1. Bir komut dosyası aracılığıyla bir giriş txt dosyası Komut İstemi'nde bir çıkış txt dosyasına nasıl çalıştırılır?
- 2. MongoDB dış komut dosyası
- 3. Widget'ı komut dosyası aracılığıyla aç
- 4. .bashrc olmadan çalıştırılabilir bir komut dosyası dosyası nasıl yapılır
- 5. API aracılığıyla AWS'de R Komut Dosyası Yürütme
- 6. Bash komut dosyası - Giriş dosyası için kullanıcı sorma, sekme tamamlama işlemi nasıl yapılır?
- 7. Delphi Web Komut Dosyası (DWScript) bir dış denetim olayına bir komut dosyası bağla
- 8. AWS Athena dış tablolarında giriş dosyası adı nasıl sütun alınır
- 9. distutils.core.setup konsol komut dosyası giriş noktası?
- 10. php komut dosyası aracılığıyla terminal komutu nasıl çalıştırılır
- 11. Kur komut dosyası aracılığıyla Magento'ya kategori nasıl eklenir?
- 12. Dosyaları bir komut dosyası kullanarak RDP aracılığıyla uzak sunucuya kopyalama
- 13. Bir XDocument Düğümü aracılığıyla yineleme nasıl yapılır
- 14. Bir metin dosyasından etkileşimli bir bash komut dosyasına giriş beslemesi nasıl yapılır
- 15. Python'dan bir koşucu için giriş dosyası nasıl belirlenir?
- 16. Program aracılığıyla java kodu aracılığıyla apk dosyası nasıl oluşturulur
- 17. Form giriş alanına tıklandığında mavi dış kenarlıktan nasıl kurtululur?
- 18. Komut dosyası nasıl çalışır?
- 19. Çıktı bir satır vektörü olduğunda dış komut
- 20. https aracılığıyla bir web sitesinde oturum açmak için bir Ruby komut dosyası kullanma
- 21. Android'de bash komut dosyası aracılığıyla wifi'yi etkinleştirme/devre dışı bırakma
- 22. cURL- nasıl komut satırı aracılığıyla yanıt alınır?
- 23. komut satırı aracılığıyla growl nasıl başlatılır
- 24. python, iç veya dış komut olarak tanınmıyor
- 25. nuget iç veya dış komut olarak tanınmıyor
- 26. Perl'in elmas operatörüne giriş nasıl yapılır?
- 27. PHP ile başka bir siteye nasıl giriş yapılır
- 28. Mac'te MD5 dosyası nasıl yapılır
- 29. Komut dosyası bölümünde komut dosyası bölümüne nasıl eklenir
- 30. Geçerli oturum için Bash Tamamlama Komut Dosyası içinde kullanılan bir değişkeni önbellekleme nasıl yapılır
Mükemmel! Tam olarak aradığım şey bu. – user77413
'$ error = $ mainframe-> login ($ credentials);' yanılıyor; '$ Result = $ mainframe-> giriş ($ kimlik) gibi görünmelidir; kimlik bilgileri daha sonra $, Joomla 3.4.1 Kullanıcı zaten başka yöntemle bu uygulamada doğrulanır ne olur – simon