web-dev-qa-db-ja.com

ログイン成功後の新しいページへのリダイレクト

この質問は以前に聞いたことがあると思いますが、答えを徹底的に検索しましたが、役に立ちませんでした。 (私が見た唯一の答えはajaxに関するものです)しかし、私はjavascript、PHPおよびHTML。

Login.phpページがあり、ユーザーが正常にログインした直後にランディングページとなるHTMLページを既に作成しています。これを行うにはどうすればよいですか。

ログインページとログイン後のランディングページのコードはtransfer.htmlと呼ばれます。

LOGIN.PHP

  <div id="content">
     <h3>Login to Internet Banking</h3>
     <form id="login" action="" method="post">
        <p>
          <label for="userid">UserID:</label>
          <input type="text" name="UserID" id="UserID"/>
        </p>
        <p>
          <label for="PIN">PIN:</label>
          <input type="password" name="PIN" id="PIN" />
        </p>

        <p>
          <input type="submit" name="btnSend" value="Login" class="submit_button" />

        </p>
      </form>
      <td>&nbsp;</td>
 <p>
        Not yet registered?
 <a href="registration.php">Click here to register</a>
 </p>

  <div id="wrap">
        <!-- start PHP code -->
        <?php

            mysql_connect("localhost", "root", "") or die(mysql_error()); // Connect to database server(localhost) with UserID and PIN.
            mysql_select_db("registrations") or die(mysql_error()); // Select registration database.

            if(isset($_POST['name']) && !empty($_POST['name']) AND isset($_POST['PIN']) && !empty($_POST['PIN'])){
                $UserID = mysql_escape_string($_POST['name']);
                $PIN = mysql_escape_string(md5($_POST['PIN']));

                $search = mysql_query("SELECT UserID, PIN, active FROM users WHERE UserID='".$UserID."' AND PIN='".$PIN."' AND active='1'") or die(mysql_error()); 
                $match  = mysql_num_rows($search);

                if($match > 0){
                    $msg = 'Login Complete! Thanks';
                }else{
                    $msg = 'Login Failed!<br /> Please make sure that you enter the correct details and that you have activated your account.';
                }
            }


        ?>
        <!-- stop PHP Code -->
        <?php 
            if(isset($msg)){ // Check if $msg is not empty
                echo '<div class="statusmsg">'.$msg.'</div>'; // Display our message and add a div around it with the class statusmsg
            } ?>

    </div>
        </div>
6
Kaos

まず、すべてのPHPコードを一番上に移動します。これがないと、以下のコードは機能しません。

リダイレクトを行うには、次を使用します。

header('Location: http://www.example.com/');

また、私のアドバイスを考慮してください。今日の最初の質問ではなく、あなたの質問はすべて基本に関連しているので、物事がどのように機能するかを理解するために、良いPHP本を読むことを検討すべきです。

ここでは、無料の本への便利なリンクを見つけることができます: https://stackoverflow.com/tags/php/info

15
Serge Kuharev

PHPコードで生成されたJavascriptリダイレクト:

 if($match > 0){
     $msg = 'Login Complete! Thanks';
     echo "<script> window.location.assign('index.php'); </script>";
 }
 else{
     $msg = 'Login Failed!<br /> Please make sure that you enter the correct  details and that you have activated your account.';
 }

Phpリダイレクトのみ:

<?php
    header("Location: index.php"); 
    exit;
?>
9
Hackerman

Header( "Location:home.php");を試してください。 $ msg = 'Login Complete!と表示する代わりにありがとう ';それがあなたを助けることを願っています。

0
Tapas Pal

次のようにlocationヘッダーを設定する必要があります。

header('Location: http://www.example.com/');

もちろんhttp://www.example.comをランディングページのURLに置き換えます。

ユーザーのログインが完了した場所にこれを追加します。

:リダイレクトすると、ユーザーはすぐにリダイレクトされるため、メッセージはおそらく表示されません。

さらに、このソリューションを機能させるには、PHPコードをファイルの先頭に移動する必要があります。

別の注意として、廃止されたmysqlステートメントの使用に関する上記のコメントを参照し、より新しく、より安全で改善されたmysqliまたはPDOステートメントの使用を検討してください。

0
War10ck

このように使用できます

if($match > 0){
 $msg = 'Login Complete! Thanks';
 echo "<a href='".$link_address."'>link</a>";
 }
else{
 $msg = 'Login Failed!<br /> Please make sure that you enter the correct  details and that you have activated your account.';
}
0
vikash