わかった。私はplans.phpというページを持っており、その中に3つのリンク(Plan 1、Plan 2、Plan 3)があります。各リンクには独自のページがあり、ログイン ページ (正常に動作する login.php) にリダイレクトされます。そのため、ユーザーが「プラン 2」をクリックしたときにログインしていない場合、ユーザーは強制的にログインして、目的のページを表示できます。すべては、ユーザーが選択した「プラン」に依存します。
問題: ユーザーを「目的のプラン (URL)」にリダイレクトするのに苦労しています。
解決策: ユーザーが「プラン 1 またはプラン 2 (どのようなプランでも)」を選択すると、ユーザーはログインを強制されます (私はそれが正常に機能しています)。ユーザーが正常にログインした後、ユーザーはそれぞれの「プラン ページ」にリダイレクトされる必要があります。 .
この問題に精通している方がいらっしゃいましたら、助けてください。
プラン.php
<a href="plan-1.php">Plan 1</a>
<a href="plan-2.php">Plan 2</a>
<a href="plan-3.php">Plan 3</a>
plan-2.php
<?php
ob_start();
include "header.php";
if(!$current_user) {
require_login();
}
ob_end_flush();
?>
HTML コード: ログイン ページの後にユーザーに表示されるもの。
<p>Hello, you have been redirected to "Plan 2"</p>
login.php
<?php
ob_start();
include "header.php";
if($current_user) {
req_logout(); }
ob_end_flush();
?>
HTML コード:
<form action="authenticate.php" method="POST">
<label for="email">Email</label><br/>
<input type"text" class="input" name="username" id="username" />
<label for="password">Password</label><br/>
<input name="password" type="password" class="input" id="password"/>
<input type="submit" value="Sign In" class="submit"/>
</form>
このファイルは、ログイン フォームが送信されるユーザー資格情報を検証します。
認証.php
<?php
session_start();
require_once "db.php";
db_connect();
require_once "auth.php";
$user_id = credentials_valid($_POST['username'], $_POST['password']);
if($user_id){
log_in($user_id);
if($_SESSION['redirect_to']){
header("Location: " . $_SESSION['redirect_to']);
unset($_SESSION['redirect_to']);
}else{
// Default page after user logs in.
header("Location: manage.php");
}
}else{
header("Location: login.php?error=1");
exit("You are being redirected");
}
?>
このファイルにはいくつかの PHP 関数があります。
auth.php
// Logs into the user $user
function log_in($user_id){
$_SESSION['user_id'] = $user_id;
}
// Returns the currently logged in user (if any)
function current_user(){
static $current_user;
if(!$current_user){
if($_SESSION['user_id']){
$user_id = intval($_SESSION['user_id']);
$query = "SELECT *
FROM `********`
WHERE `id` = $user_id";
$result = mysql_query($query);
if(mysql_num_rows($result)){
$current_user = mysql_fetch_assoc($result);
return $current_user;
}
}
}
return $current_user;
}
// Requires a current user (Restrict Access to Page)
function require_login(){
if(!$current_user){
$_SESSION['redirect_to'] = $_SERVER['REQUEST_URI'];
header('Location: signin.php');
exit("You must log in.");
}
}