- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Что делать, если ваша email-рассылка попала в спам
10 распространенных причин и решений
Екатерина Ткаченко
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Прикрутил к действующей cms - вторую (домен один, вторая cms во внутреннем каталоге).
Объединил логин, пароль (mysql)...
При авторизации в одной cms не авторизует во второй, приходится и там и там проходить авторизацию. Все остальное работает как часы.
Вроде бы нашел где править, но как не пойму, подтолкните к верному решению.
В cms, что я добавил (вторая) есть файл следующего содержания:
примерно тот же файл (как я считаю отвечающий за авторизацию) я нашел в главной cms, содержание следующее:
какие правки внести в первый файл?
На верном ли я пути?
Спасибо!
такое ощущение что разные системы авторизации в этих скриптах, хотя есть схожие места))
чтобы юзер автоматом авторизовался на поддомене нужно выполнить условия:
1. в обоих системах имя cookie авторизации должно быть одинаковым,
а у вас в первом скрипте имя cookie - intelligentFeedback, во втором проверяется 2 cookie отдельно имя юзера и отдельно пароль, что выглядит просто ужасно...
2.в cookie при записе указывается имя домена, по умолчанию вписывается текущий домен, нужно чтобы он был указан причем в форме ".sitename.ru" (с точкой в перед именем домена), тогда такой cookie будет действительным как для домена, так и для всех поддоменов.
totamon, да системы авторизации совершенно разные, я прикрутил вторую cms которая берет данные из mysql базы первой (имя, логин, пароль...)
Вторую cms расположил не на поддомене а во внутренней папке сайта.
подскажите, пожалуйста, какие правки внести в первый скрипт, чтобы было как во втором?
Спасибо!
Сделал так
session_start();
function check_login() {
if (!empty($_COOKIE['sk_u_i']) && !empty($_COOKIE['sk_u_p'])) {
$u_i = SK_secureEncode($_COOKIE['sk_u_i']);
$u_p = SK_secureEncode($_COOKIE['sk_u_p']);
if(isset($_COOKIE[$cookie_name])) {
parse_str($_COOKIE[$cookie_name]);
$db = MySQLDatabase::GetInstance();;
$input = new Input();
$where = array('email' => $inputs->clean($usr), 'password' => $inputs->clean($hash));
$user = $db->Query('feedback_accounts', '*', $where);
if($user) {
$_SESSION['user_id'] = $u_i;
$_SESSION['user_pass'] = $u_p;
return true;
}
}
header('Location: ../public/auth.php');
exit();
}
}
не работает :(
так конкретно я не могу ответить что сделать) маловато кода чтобы разобраться,
вы проверили, она точно берет данные? и это для авторизации не главное... важно чтобы вторая система могла понять что это за юзер и действительно он авторизован? те вам нужно не обращаться к базе данных, а работать с cookie..
первая система выставила cookie, вторая прочитала, и отметила у себя что это пользователь и он авторизован. условия я выше написал. в приведенном коде нет куска который именно выставляет cookie, и еще нужно учесть что первая система шифрует информацию о юзере и что бы ее получить нужно использовать функцию из нее
Да, проверил, данные берет.
этот код где искать, в core.php или в function.php?
---------- Добавлено 02.12.2014 в 02:04 ----------
connect.php
date_default_timezone_set('Asia/Dhaka');
session_cache_limiter('none');
session_start();
// Include 'config.php' file
require('assets/includes/config.php');
// Connect to SQL Server
$dbConnect = mysqli_connect($sql_host, $sql_user, $sql_pass, $sql_name);
// Check connection
if (mysqli_connect_errno($dbConnect)) {
exit(mysqli_connect_error());
}
// Assign database table names to constants
require('tables.php');
// Fetch site configurations
require('assets/settings/general.php');
require('assets/settings/theme.php');
require('assets/settings/ads.php');
$config['site_url'] = $site_url;
$config['theme_url'] = $site_url . '/themes/' . $config['theme'];
$config['script_path'] = str_replace('index.php', '', $_SERVER['PHP_SELF']);
$config['ajax_path'] = $config['script_path'] . 'request.php';
$config['page_path'] = $config['script_path'] . 'page.php';
if (!isset($_SESSION['language'])) {
$_SESSION['language'] = $config['language'];
}
include_once('themes/' . $config['theme'] . '/emoticons/process.php');
// Stores site configurations to variables for later use
$sk = array();
$sk['config'] = $config;
// Login verification and user stats update
$logged = false;
$user = null;
if (SK_isLogged()) {
$user = SK_getUser($_SESSION['user_id'], true);
if (!empty($user['id']) && $user['type'] == "user") {
$sk['user'] = $user;
$logged = true;
$query_two = "UPDATE " . DB_ACCOUNTS . " SET last_logged=" . time() . " WHERE id=" . $user['id'];
$sql_query_two = mysqli_query($dbConnect, $query_two);
if (!empty($user['language'])) {
$_SESSION['language'] = $user['language'];
}
if (!SK_isFollowing($user['id'], $user['id'])) {
$query_three = "DELETE FROM " . DB_FOLLOWERS . " WHERE follower_id=" . $user['id'] . " AND following_id=" . $user['id'];
$sql_query_three = mysqli_query($dbConnect, $query_three);
$query_four = "INSERT INTO " . DB_FOLLOWERS . " (active,follower_id,following_id,time) VALUES (1," . $user['id'] . "," . $user['id'] . "," . time() . ")";
$sql_query_four = mysqli_query($dbConnect, $query_four);
}
}
}
$sk['logged'] = $logged;
// Fetch preferred language
if (!empty($_GET['lang'])) {
if (file_exists('assets/languages/' . $_GET['lang'] . '.php')) {
$config['language'] = $_GET['lang'];
$_SESSION['language'] = $_GET['lang'];
if ($logged == true) {
mysqli_query($dbConnect, "UPDATE " . DB_ACCOUNTS . " SET language='" . $_GET['lang'] . "' WHERE id=" . $user['id']);
}
}
}
require_once('assets/languages/' . $_SESSION['language'] . '.php');
// Removes session and unnecessary variables if user verification fails
if ($logged == false) {
unset($_SESSION['user_id']);
unset($user);
}
---------- Добавлено 02.12.2014 в 02:08 ----------
Нашел код, вроде он шифрует, гляньте пожалуйста.
$t = '';
$a = '';
if (isset($_GET['t'])) {
$t = SK_secureEncode($_GET['t']);
}
if (isset($_GET['a'])) {
$a = SK_secureEncode($_GET['a']);
}
$data = array(
'status' => 417
);
// Login & Verify User
if ($t == "login") {
$data['error_message'] = $lang['error_empty_login'];
if (!empty($_POST['login_id']) && !empty($_POST['login_password'])) {
$login_id = SK_secureEncode($_POST['login_id']);
$login_password = trim($_POST['login_password']);
$login_password_md5 = md5($login_password);
if (preg_match('/@/', $login_id)) {
$db_query_part = "email='$login_id'";
} elseif (preg_match('/^[0-9]+$/', $login_id)) {
$db_query_part = "id=$login_id";
} else {
$db_query_part = "username='$login_id'";
}
$query_one = "SELECT id FROM " . DB_ACCOUNTS . " WHERE $db_query_part AND password='$login_password_md5' AND type='user' AND active=1";
$sql_query_one = mysqli_query($dbConnect, $query_one);
$data['error_message'] = $lang['error_bad_login'];
if (($sql_numrows_one = mysqli_num_rows($sql_query_one)) == 1) {
$sql_fetch_one = mysqli_fetch_assoc($sql_query_one);
$query_two = "SELECT username,email_verified FROM " . DB_ACCOUNTS . " WHERE id=" . $sql_fetch_one['id'] . " AND password='$login_password_md5' AND type='user' AND active=1";
$sql_query_two = mysqli_query($dbConnect, $query_two);
if (($sql_numrows_two = mysqli_num_rows($sql_query_two)) == 1) {
$sql_fetch_two = mysqli_fetch_assoc($sql_query_two);
$continue = true;
if ($config['email_verification'] == 1 && $sql_fetch_two['email_verified'] == 0) {
$continue = false;
$data['error_message'] = $lang['error_verify_email'];
}
if ($continue == true) {
$_SESSION['user_id'] = $sql_fetch_one['id'];
$_SESSION['user_pass'] = $login_password_md5;
if (!empty($_POST['keep_logged_in']) && $_POST['keep_logged_in'] == 1) {
setcookie('sk_u_i', $_SESSION['user_id'], time() + (60 * 60 * 24 * 7));
setcookie('sk_u_p', $_SESSION['user_pass'], time() + (60 * 60 * 24 * 7));
}
$data['status'] = 200;
$data['redirect_url'] = SK_smoothLink('index.php?tab1=home');
}
}
}
}
header("Content-type: application/json");
echo json_encode($data);
mysqli_close($dbConnect);
exit();
}
// Register User
if ($t == "register") {
$proceed = false;
$data['error_message'] = $lang['error_bad_captcha'];
if ($config['captcha'] == false) {
$proceed = true;
} elseif (!empty($_POST['captcha']) && $_POST['captcha'] == $_SESSION['captcha_key']) {
$proceed = true;
}
if ($proceed == true) {
$data['error_message'] = $lang['error_empty_registration'];
if (($register = SK_registerUser($_POST)) != false) {
$register['verification_link'] = $config['site_url'] . '/?tab1=email-verification&email=' . $register['email'] . '&key=' . $register['email_verification_key'];
$sk['mail'] = $register;
$to = $register['email'];
$subject = $config['site_name'] . ' - Email Verification';
$headers = "From: " . $config['email'] . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
$message = SK_getPage('emails/email-verification');
mail($to, $subject, $message, $headers);
if ($config['email_verification'] == 0) {
$_SESSION['user_id'] = $register['id'];
$_SESSION['user_pass'] = md5(trim($_POST['password']));
$data['status'] = 200;
$data['redirect_url'] = SK_smoothLink('index.php?tab1=home');
} else {
$data['error_message'] = $lang['verification_email_sent'];
}
}
}
header("Content-type: application/json");
echo json_encode($data);
mysqli_close($dbConnect);
exit();
}
---------- Добавлено 02.12.2014 в 02:46 ----------
Сделал так и не помогло
/**
* This file is ment to allow the script to be used with an
* existing authentication system instead of using its own
* Changes can be made to the function check_login() to check for your sessions
* If the user is logged in return true and if not redirect them to your login page.
* Only make changes here if you do not want to use the bundled authentication system
*
* @package Simple Advert
* @author robertnduati
*/
session_start();
function check_login() {
if ($continue == true) {
$_SESSION['user_id'] = $sql_fetch_one['id'];
$_SESSION['user_pass'] = $login_password_md5;
if (!empty($_POST['keep_logged_in']) && $_POST['keep_logged_in'] == 1) {
setcookie('sk_u_i', $_SESSION['user_id'], time() + (60 * 60 * 24 * 7));
setcookie('sk_u_p', $_SESSION['user_pass'], time() + (60 * 60 * 24 * 7));
}
$data['status'] = 200;
$data['redirect_url'] = SK_smoothLink('index.php?tab1=home');
$db = MySQLDatabase::GetInstance();;
$input = new Input();
$where = array('email' => $inputs->clean($usr), 'password' => $inputs->clean($hash));
$user = $db->Query('accounts', '*', $where);
if($user) {
$_SESSION['logged_in'] = true;
$_SESSION['user_id'] = $user[0]['id'];
$_SESSION['user_email'] = $user[0]['email'];
return true;
}
}
header('Location: ../welcome');
exit();
}