2016-10-04 3 views
3

Я создаю сайт, подобный интрасети, для учащихся старшеклассников, и я бы хотел, чтобы они вошли в систему с помощью входа в систему Google, потому что у всех есть учетные записи google. Я успешно интегрировал вход в Google, используя инструкции Google.Переадресовать с страницы входа

Когда новый пользователь посещает первую страницу (страницу входа) моего сайта и входит в систему, я бы хотел, чтобы они автоматически перенаправлялись на вторую страницу. Я исследовал это на SO и в других местах, но пока ничего не нашел. Как я могу это сделать?

Кроме того, если пользователь пытается получить доступ к любой странице, отличной от первой, без первого входа в систему, как я могу перенаправить их на первую страницу?

Адрес и код моего сайта ниже. Дайте мне знать, если вам нужна дополнительная информация. Благодаря!

Первая страница: http://davidstarshaw.atwebpages.com/test/index.php

<!DOCTYPE html> 
<head> 
    <title>Test login page</title> 
    <meta name="google-signin-client_id" content="795531022003-rdb02epf7o0qpr5p83326icrseh82gqa.apps.googleusercontent.com"> <!--My google sign-in client ID--> 
    <script src="https://apis.google.com/js/platform.js" async defer</script> <!--Google platform library. Needed for sign-in--> 
    <script src="script.js" async defer></script> 
</head> 

<body> 
    <p>This is the first page.</p> 
    <div class="g-signin2" data-onsuccess="onSignIn"></div> <!--This code is straight from google--> 
    <a href="#" onclick="signOut();">Sign out</a><br> 
    <a href=home.php>Manually go to the second page</a> 
</body> 

Вторая страница: http://davidstarshaw.atwebpages.com/test/home.php

<!DOCTYPE html> 
<head> 
    <title>Test home page</title> 
    <meta name="google-signin-client_id" content="795531022003-rdb02epf7o0qpr5p83326icrseh82gqa.apps.googleusercontent.com"> <!--My google sign-in client ID--> 
    <script src="https://apis.google.com/js/platform.js" async defer></script> <!--Google platform library. Needed for sign-in--> 
    <script src="script.js" async defer></script> 
</head> 

<body> 
    <p>This is the second page.</p> 
    <div class="g-signin2" data-onsuccess="onSignIn"></div> <!--This code is straight from google--> 
    <a href="#" onclick="signOut();">Sign out</a><br> 
    <a href=index.php>Manually go back to the first page</a> 

+0

Как вы успешно храните логин? Использование сеансов? Если нет, установите сеанс с именем «loggedIn» и просто переадресовывайте его на страницу входа, если он не установлен, а на первой странице перенаправляется на вторую страницу, если она установлена. –

+0

использовать заголовок fuction для перенаправления –

ответ

1

Есть много способов, вы можете сделать это. но

simpleest Решение должно помещать этот код в начало каждой страницы php, чтобы при посещении пользователем какой-либо страницы и сессии не было найдено, тогда пользователь будет перенаправлен на страницу входа.

<?php 
// put at the top of each php page. 
session_start(); 
if (!isset($_SESSION["Authenticated"])) 
{ 
    header("location: login.php"); 
} 
?> 

и замените login.php на ваш php-файл. то, что он делает, просто проверяет переменную сеанса, если не найдена, то перенаправляется на страницу входа. и на странице входа вы можете установить переменную сеанса.

На Войти PHP странице (где вы попросите пользователя ввести свой пароль электронной почты) вставьте следующий код, вы можете сделать это:

имя пользователя получить и пароль из HTML формы затем передать в базу данных для того, чтобы найти, что зарегистрировать пользователя. если обнаружено, что пользователь из строки результатов mysql затем помещает эти значения в переменную сеанса.

<?php 
    // put in only login page 
    $email = $_REQUEST['email']; // get email from html form 
    $password = $_REQUEST['password']; // get password from html form 

    // search for this user in database. 
    $query = mysqli_query("select * from MyRegisteredUser where email='$email' and password='$password'"); 
    // if any record is founf then get that records fields 
    if(mysqli_num_rows($query)){ 
    $result_row = mysqli_fetch_fields($query); 
    $_SESSION["Authenticated"] = true; 
    $_SESSION['id'] = $result_row->id; 
    $_SESSION['Name'] = $result_row->name; 
    $_SESSION['Email'] = $result_row->email; 
    }else{ 
     // session can't be set due to no user found. so redirect back with some error. 
    unset($_SESSION); 
    header("location: login.php"); 
    } 
    ?> 

Ваша форма html будет выглядеть так.

<!DOCTYPE html> 
    <head> 
    <title>Login</title> 
    </head> 
    <body> 
    <form method="post" action="login.php"> 
     <div class="container"> 
     <label><b>Email</b></label> 
     <input type="text" placeholder="Enter Email" name="email"></input> 
     <label><b>Password</b></label> 
     <input type="password" placeholder="Password" name="password"></input> 
     <input type="submit" value="Login" name="login_btn"></input> 
     </div> 
    </form> 
    </body> 
</html> 
+0

Спасибо за идеи функции сессии и заголовка. Они работают точно так, как мне нужно. Но я не собираю данные для входа пользователя; Google делает это с OAuth. Таким образом, нет никакой HTML-формы или базы данных SQL для запроса. Есть функция JS, которая запускается при входе в систему. Я изучил, могу ли я использовать это, чтобы установить переменную PHP в true, но она выглядит как [плохая идея] (http://stackoverflow.com/questions/3590293/set -session-переменный с помощью использования JavaScript-в-РНР). Любые мысли о том, как я могу установить переменную сеанса? –

+0

Я понимаю, что вы хотите аутентифицировать и установить сеанс без javascript. пожалуйста, посмотрите [здесь] (http://phppot.com/php/php-google-oauth-login/) и [здесь] (https://github.com/search?utf8=%E2%9C%93&q=php + Google + OAuth) –

Смежные вопросы