些細な質問で申し訳ありませんが、header() php 関数を使用してページにリダイレクトする際に問題が発生しています。より具体的には、ユーザーが存在しないプロファイル ページを表示しようとしたときに、ユーザーをリダイレクトするのに苦労しています。私の問題は、セッションの開始と、基本的なヘッダーを表示するための html を含むヘッダー ファイルを常に含めていることです。これは、header() 関数を使用して、このヘッダー ファイルを含むスクリプト内のページにリダイレクトできないということですか? この問題を回避する 1 つの方法は、ヘッダーの html 部分を別のファイルに分割し、最初にヘッダー スクリプトをインクルードし、次にプロファイル スクリプトを記述し、最後にヘッダーの html 部分をインクルードすることではないかと考えました。それは悪い習慣ですか?profile.php スクリプトは次のとおりです。
<?php include("inc/incfiles/header.inc.php"); ?>
<?php
if(isset($_GET['u'])) {
//check user exists
$username = mysql_real_escape_string($_GET['u']);
if (ctype_alnum($username)) {
$check = mysql_query("SELECT username, email FROM users WHERE username = '$username'");
if (mysql_num_rows($check)===1) {
$get = mysql_fetch_assoc($check); //execute query and store in array
$username = $get['username'];
$email = $get['email'];
}
else {
header("Location: index.php");
die();
}
}
else {
echo "username has to be alphanumeric";
}
}
else {
echo "error";
}
?>
<h2> Profile page of <?php echo "$username";?>
<h3> Email: <?php echo "$email";?>
header.inc.php ファイル:
<?php
include ("inc/scripts/mysql_connect.inc.php");
//start the session
session_start();
//Checks whether the user is logged in
$user = $_SESSION["user_login"];
if (!isset($SESSION["user_login"])) {
//header("Location: index.php");
//exit();
}
else
{
header("location: home.php");
}
?>
<?php
//Login Scripts has to be at the top to make sure header() redirecting works
if (isset($_POST["user_login"]) && isset($_POST["password_login"])) {
$user_login = preg_replace('#[^A-Za-z0-9]#i','', $_POST["user_login"]); //filter user login text
$password_login = preg_replace('#[^A-Za-z0-9]#i','', $_POST["password_login"]); //filter user password text
$md5password_login = md5($password_login);
$sql = mysql_query("SELECT id FROM users WHERE username='$user_login' AND
password='$md5password_login' LIMIT 1"); //query the user
//Check for user's existence
$userCount = mysql_num_rows($sql); //count number of rows
if ($userCount == 1) {
while ($row = mysql_fetch_array($sql)) {
$id = $row["id"];
}
$_SESSION["user_login"] = $user_login;
$_SESSION["password_login"] = $md5password_login;
header("Location: home.php");
exit();
}
else {
echo "That information is incorrect, try again";
}
}
?>
<html>
<head>
<link href = "css/main.css" rel = "stylesheet" type = "text/css">
<title> title </title>
</head>
<body>
<div class = "wrapper">
<div id = "header">
<div class = "logo">
<img src = "img/Logo.png">
</div>
<div id = "login-header">
<form action = "index.php" method ="post" name = "form1" id = "form1">
<div class = "input-wrapper"><input type = "text" size = "25" name = "user_login" id = "user_login" placeholder = ">Username" ></div>
<div class = "input-wrapper"><input type = "password" size = "25" name = "password_login" id = "password_login" placeholder = "Password" ></div>
<div class = "input-wrapper"><input type = "submit" name = "login" value = "Sign in"></div>
</form>
</div>
<div id = "menu">
<a href = "#"></a>
<a href = "#"></a>
</div>
</div>
</div>