Я попытался сделать это на своем веб-сайте, и у меня есть этот код, который работает в одной из моих установок Joomla, но он не работает в другой установке Joomla. На установке, которая не работает, скрипт выполняет поиск в базе данных и находит учетные данные пользователя, но когда он переходит на mywebsite.com, он не входит в систему. Пароль пользователя не зашифрован, это еще одно поле, которое я использую только для этой цели. Может кто-нибудь помочь мне выяснить, в чем дело?
<?php
mysql_connect("localhost", "sqluser", "sqlpass") or die(mysql_error());
mysql_select_db("sqldb") or die(mysql_error());
$uname = $_POST['username'];
$upswd = $_POST['password'];
$result_user = mysql_query("SELECT username FROM jos_users where username = '$uname'") or die(mysql_error());
$rows_user = mysql_num_rows($result_user);
$result_pass = mysql_query("SELECT vm_pass_lojat FROM jos_vm_user_info where vm_pass_lojat = '$upswd'") or die(mysql_error());
$rows_pass = mysql_num_rows($result_pass);
if($rows_user > 0){
if($rows_pass > 0){
$url = "http://www.mywebsite.com/online/index.php";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);
curl_setopt($ch, CURLOPT_COOKIEJAR, realpath('./cookie.txt'));
curl_setopt($ch, CURLOPT_COOKIEFILE, realpath('./cookie.txt'));
curl_setopt($ch, CURLOPT_HEADER, TRUE);
$ret = curl_exec($ch);
if (!preg_match('/name="([a-zA-z0-9]{32})"/', $ret, $spoof)){
preg_match("/name='([a-zA-z0-9]{32})'/", $ret, $spoof);
}
// POST fields
$postfields = array();
$postfields['username'] = urlencode($uname);
$postfields['passwd'] = urlencode($upswd);
$postfields['option'] = 'com_user';
$postfields['task'] = 'login';
$postfields[$spoof[1]] = '1';
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
$ret = curl_exec($ch);
// Get logged in cookie and pass it to the browser
preg_match('/^Set-Cookie: (.*?);/m', $ret, $m);
$cookie = explode('=', $m[1]);
setcookie($cookie[0], $cookie[1]);
header("location: http://www.mywebsite.com/online/index.php");
}
else
{
echo "WRONG PASSWORD";
}
}
else
{
echo "NO USER FOUND";
}
?>