この質問は以前に聞いたことがあると思いますが、答えを徹底的に検索しましたが、役に立ちませんでした。 (私が見た唯一の答えは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> </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>
まず、すべてのPHPコードを一番上に移動します。これがないと、以下のコードは機能しません。
リダイレクトを行うには、次を使用します。
header('Location: http://www.example.com/');
また、私のアドバイスを考慮してください。今日の最初の質問ではなく、あなたの質問はすべて基本に関連しているので、物事がどのように機能するかを理解するために、良いPHP本を読むことを検討すべきです。
ここでは、無料の本への便利なリンクを見つけることができます: https://stackoverflow.com/tags/php/info
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;
?>
Header( "Location:home.php");を試してください。 $ msg = 'Login Complete!と表示する代わりにありがとう ';それがあなたを助けることを願っています。
次のようにlocation
ヘッダーを設定する必要があります。
header('Location: http://www.example.com/');
もちろんhttp://www.example.com
をランディングページのURLに置き換えます。
ユーザーのログインが完了した場所にこれを追加します。
注:リダイレクトすると、ユーザーはすぐにリダイレクトされるため、メッセージはおそらく表示されません。
さらに、このソリューションを機能させるには、PHPコードをファイルの先頭に移動する必要があります。
別の注意として、廃止されたmysql
ステートメントの使用に関する上記のコメントを参照し、より新しく、より安全で改善されたmysqli
またはPDO
ステートメントの使用を検討してください。
このように使用できます
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.';
}