Авторизация, интеграция и прочие прелести
Я уже писал (и не только я), что иногда возникает желание к уже работающему сайту прикрутить социалку. Если речь идет о форуме или еще каком-то ресурсе, где уже есть регистрация, авторизация, то это отдельный разговор, как такое замутить. Но может быть и так, что возникает желание прикрутит ЛС к сайту, где регистрации не было, либо она была примитивной и ею можно пожертвовать. В таком случае разумней использовать систему регистрации/авторизации из ЛС. Немного поковырялся в коде, и вот что накопал (если что навру, пусть меня гуру поправят).
При входе в ЛС в куках создается переменная с именем 'key'. Поэтому из стороннего PHP-кода можно проверять, существует ли $_COOKIE['key']. И если есть, то всю инфу о юзере можно получить из базы из таблицы 'prefix_user' примерно так:
В примере кода ниже никакого запроса нет, просто выводится ключ, если он есть:
PS Показан пример для варианта, когда ЛС живет не в корне, а в папке community
PPS ВНИМАНИЕ! SQL-запрос приводится в качестве очень упрощенного примера! Непосредственное его использование на рабочем сайте может создать угрозу безопасности! Как верно замечено комментаторами ниже, нельзя совать в запрос, что попало без тщательной проверки!
UPD Вышесказанное действительно, если при входе юзера стоит галка «Запомнить меня» и мы хотим воспользоваться этой опцией. А вообще надо проверять сессионную переменную 'user_id' (и в prefix_user можно найти запись по соотвествующему полю).
При входе в ЛС в куках создается переменная с именем 'key'. Поэтому из стороннего PHP-кода можно проверять, существует ли $_COOKIE['key']. И если есть, то всю инфу о юзере можно получить из базы из таблицы 'prefix_user' примерно так:
SELECT * FROM prefix_user WHERE user_key='{$_COOKIE['key']}'
В примере кода ниже никакого запроса нет, просто выводится ключ, если он есть:
<?
if (isset($_COOKIE['key'])) {
?>
User Key: <?=$_COOKIE['key'];?> | <a href="/community/login/exit/">Выйти</a>
<?
} else {
?>
<form action="/community/login/" method="POST">
<h3>Авторизация</h3>
<label for="login">Логин или e-mail</label>
<input type="text" class="input-text" name="login" id="login-input" /><br />
<label for="password">Пароль</label>
<input type="password" name="password" class="input-text" /><br />
<label for="" class="input-checkbox">
<input type="checkbox" name="remember" checked />Запомнить меня</label><br />
<input type="hidden" name="submit_login">
<button type="submit" ">Войти</button>
</form>
<?
}
?>
PS Показан пример для варианта, когда ЛС живет не в корне, а в папке community
PPS ВНИМАНИЕ! SQL-запрос приводится в качестве очень упрощенного примера! Непосредственное его использование на рабочем сайте может создать угрозу безопасности! Как верно замечено комментаторами ниже, нельзя совать в запрос, что попало без тщательной проверки!
UPD Вышесказанное действительно, если при входе юзера стоит галка «Запомнить меня» и мы хотим воспользоваться этой опцией. А вообще надо проверять сессионную переменную 'user_id' (и в prefix_user можно найти запись по соотвествующему полю).