Я предпочитаю не писать свою собственную функцию входа, поэтому вместо этого я хотел бы использовать openId. Я нашел библиотеку lightopenid и с некоторыми изменениями в Google, например файл выглядит следующим образом:Можно ли использовать openId?
<?php
session_start();
# Logging in with Google accounts requires setting special identity, so this example shows how to do it.
require 'openid.php';
try {
# Change 'localhost' to your domain name.
$openid = new LightOpenID('127.0.0.1');
if(!$openid->mode) {
if(isset($_GET['login'])) {
$openid->identity = 'https://www.google.com/accounts/o8/id';
header('Location: ' . $openid->authUrl());
}
?>
<form action="?login" method="post">
<button>Login with Google</button>
</form>
<?php
} elseif($openid->mode == 'cancel') {
echo 'User has canceled authentication!';
} else {
echo 'User ' . ($openid->validate() ? $openid->identity . ' has ' : 'has not ') . 'logged in.';
if ($openid->validate()) {
$_SESSION['auth'] = true;
}
}
} catch(ErrorException $e) {
echo $e->getMessage();
}
Так что я добавил $ _SESSION вещь там ... Теперь думаю, может использовать код на верху каждого защищенные страницы, как это:
<?php session_start();
if (!$_SESSION['auth']) { exit; } ?>
Я хочу, чтобы это было сделано правильно, так что это все безопасно и так далее. Вы бы это сделали, или я делаю что-то неправильно? Я мог бы использовать файлы cookie вместо этого ...
Не совсем уверен в ваших сомнениях, но надеюсь, вы даже не рассматриваете идею хранения файла 'auth = true' cookie ... Тривиально редактировать файлы cookie из браузера. Кроме того, вас не интересует, кто такой пользователь? До сих пор любой, у кого есть учетная запись Google, может войти на ваш сайт, и вы даже не храните '$ openid-> identity'. –
Что содержит идентификатор $ openid->? если я повторяю это, он ничего не печатает ... – theva