2016-10-04 5 views
3

私は高校生のためにイントラネットのようなウェブサイトを構築しており、Googleアカウントを持っているので、ログインするにはログインする必要があります。私は正常にGoogleの指示を使用してGoogleログインを統合しました。ログインページからリダイレクト

新しいユーザーが自分のサイトの最初のページ(ログインページ)にアクセスしてログインすると、自動的に2番目のページにリダイレクトされます。私は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> 

2ページ目: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」というセッションを設定し、設定されていない場合はログインページにリダイレクトし、最初のページでは、設定されている場合は2ページ目にリダイレクトします。 –

+0

リダイレクトするためにヘッダーfuctionを使用 –

答えて

1

あなたがこれを行うことができる方法がたくさんあります。しかし、

最も簡単な解決方法は、各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-variable-use-javascript-in-php)を使用します。私はどのようにセッション変数を設定することができますか? –

+0

私はあなたが認証し、javascriptを使わないでセッションを設定することを理解しています。 [こちら](http://phppot.com/php/php-google-oauth-login/)と[ここ](https://github.com/search?utf8=%E2%9C%93&q=php)をご覧ください。 + google + oauth) –

関連する問題