Jump to content

Torawhite

User
  • Posts

    204
  • Joined

  • Last visited

Information

  • Sex
    Мужчина

Torawhite's Achievements

Explorer

Explorer (1/14)

0

Reputation

  1. Вот, сейчас сделал, как придумал. Работает, вроде! Спасибо вам большое за помощь!
  2. Получается, что без танцев с бубном не получается... Есть ещё один метод, который пришёл мне в голову, правда он попахивает быдлокодом: Весь обработчик поместить в отдельный php-файл, скажем, reg_auth.php, инклудить его на site.ru и на sub.site.ru. А в жаваскрипт, который аяксом отправляет запрос, в url: прописывать текущий домен - $_SERVER['HTTP_HOST'], то есть или site.ru, или sub.site.ru. По идее, всё должно работать. Как вам такой вариант?
  3. Смотрите, сессия создана, PHPSESID кука присутствует и домен её равен .site.ru, при переходе с site.ru на sub.site.ru и обратно она сохраняется, значение остаётся тем же. Я нахожусь на sub.site.ru и заполняю поля ввода для регистрации, жму кнопку, далее ajax отправляет все данные php-скрипту на site.ru (я так понимаю, что никакая кука этому скрипту видна не будет). Скрипт делает запрос в базу и сверяет, логин, если он уникален, то добавляет запись в базу, извлекает из базы id нового пользователя и создаёт сессию: $sql3 = "SELECT user_id FROM users WHERE user_mail = :user_mail"; $data3 = $pdo->prepare($sql3); $data3->bindValue(':user_mail', $mail, PDO::PARAM_STR); $data3->execute(); $res3 = $data3->fetch(PDO::FETCH_ASSOC); $_SESSION['auth']['user']['user_name'] = $name; $_SESSION['auth']['user']['user_id'] = $res3['user_id'];Далее, он выводит html оператором echo - пункты меню личного кабинета, имя пользователя - этот код html является ответом сервера для ajax. Отправляет его обратно на sub.site.ru и вставляет в нужно место на странице. После обновления всё пропадает, так как, видимо, сессия тут иная и ничего в ней нет... Я думал, что мы передаём идентификатор, чтобы сервер понял, в какую сессию записать данные, но что-то я не до конца тут понял...
  4. Передача идентификатора ничего не изменила. Передавал так: $.ajax({ url: 'http://site.ru/?PHPSESSID=' + $.cookie('PHPSESSID'),// дальше остальной код
  5. Это у меня прописано, не работает Если сессии разные у домена и поддомена, то, возможно у меня подход не тот. Может нужно как-то передавать идентификатор сессии в ajax при регистрации/авторизации?
  6. А почему сессия пропадает при входе с поддомена? И как записать в сесию по куке, если запрос отправляется асинхронно, получается, что кука уже будет не видна?
  7. Сейчас напишу, как у меня всё сейчас происходит. Маленько разобрался в вопросе, но не до конца Регистрацию/Авторизацию осуществляю с помощью суперглобального массива $_SESSION данные отправляю асинхронно ajax на домен второго уровня example.ru , там выполняется php-скрипт регистрации и авторизации. По такому же принципу реализована корзина. Сайт имеет поддомен sub.example.ru . в .htaccess прописано php_value session.cookie_domain ".example.ru" сессию начинаю в обоих контроллерах(контроллер 1 - .example.ru, контроллер 2 - sub.example.ru) таким образом: if (!session_id()) { ini_set('session.use_cookies', 'On'); ini_set('session.use_trans_sid', 'Off'); ini_set('session.cookie_domain', '.example.ru'); session_set_cookie_params(0, '/', '.example.ru'); session_start(); } Кука PHPSESSID с идентификатором передаётся между доменом о поддоменом и обратно. Проблема 1: если осуществлять регистрацию и авторизацию находясь на sub.example.ru (напомню - ajax отправляет данные на .example.ru) то $_SESSION['auth'] создаётся, но после обновления страницы пропадает. Проблема 2: если осуществлять регистрацию и авторизацию находясь на sub.example.ru (напомню - ajax отправляет данные на .example.ru) и при этом существует $_SESSION['cart'], то $_SESSION['auth'] создаётся вне сессии, в которой создана $_SESSION['cart'], после обновления страницы $_SESSION['auth'] также пропадает. НО! Если осуществлять регистрацию/авторизацию с .example.ru и при этом существует $_SESSION['cart'], то $_SESSION['auth']создаётся в этой же сессии, после обновления никуда не пропадает и сохраняется на sub.example.ru. В чём проблема?
  8. Сейчас увидел, что создаются автоматически без моего участия две куки с одинаковым именем "PHPSESSID", но разными значениями - одна для корневого домена, другая для поддомена, так как session_start(); у меня прописан в контроллере корневого домена и в контроллере поддомена.
  9. Делаю так: // в контроллере указываю начало сессии:session_start();// в модели выполняю скрипт по регистрации, после занесения в базу данных данных о пользователе создаю сессию и помещаю туда имя пользователя,которое пришло ко мне при регистрации:$_SESSION['auth']['user']['user_name'] = $name;// получаю идентификатор сессии и записываю его в переменную$SID = session_id();// устанавливаю кукуsetcookie('user', $SID, time()+3600, '', '.torawhite.ru');Не работает. Что я делаю не так?
  10. Вы не могли бы чуть подробнее? Мне нужно что-то зашифровать и поместить в базу? Читал, что можно через куки делать, но не совсем понял механизм. То есть мне нужно в php-скрипте, который реализует авторизацию, и который находится в корневом домене, создать некую куку и что-то туда поместить?
  11. Здравствуйте! Авторизация происходит средствами ajax, php-скрипт расположен на домене первого уровня. База данных одна, домен третьего уровня является поддоменом того же домена второго уровня. Нужно, чтобы авторизация работала на обоих доменах. Авторизация осуществляется с помощью глобального массива $_SESSION. Как же реализовать кроссдоменную авторизацию?
  12. $(document).on('click', function (event){var drop = $('.menu-projects');if (!drop.is(event.target) && drop.has(event.target).length === 0 ){$('.menu-projects').hide();}});
  13. Здравствуйте! Нужно реализовать работу скрипта и до и после обновления части страницы ajax-ом. Столкнулся с проблемой правильной привязки обработчика событий к селектору. С таким вариантом: $(document).ready(function(){$('.cart_del').click(function(){var par_id = $(this).attr('data-cart-item-par-id');alert(par_id);// далее код работы с удалением элемента из корзины});});код работает только до обновления страницы ajax-ом. После обновления обработчики слетают и код не работает, что понятно. Но со следующим кодом всё должно работать: $(document).ready(function(){$(document).on('click', '.cart_del',function(event){var target = $(event.target);var par_id = target.attr('data-cart-item-par-id');alert(par_id);// далее код работы с удалением элемента из корзины});});но нет, работает всё зеркально к предыдущему варианту - до обновления страницы скрипт не работает, а после обновления начинает работать!
  14. А как правильно? А как правильно? Ааааа Всё. Спасибо! Разобрался. Что-то глаз замылился)
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy