Страница профиля использует PHP и MySQL для отображения элемента.
Есть две вещи, которые я хочу спросить,
Обещание: Если вы можете мне помочь, я могу подтвердить вас на моем сайте и поставить вас в кредит;)
Вопрос 1:
Как проверить, существует ли пользователь в базе данных, и как отобразить сообщение 404?
Вопрос 2:
Итак, основная ошибка здесь в том, что при поиске пользователя он не распознает пользователя.
Пользователь «admin01» ищет себя и страница профиля работает, если пользователь admin01 поиск пользователя admin02 , страница не будет давать пользователям информацию. В любом случае, как это исправить?
Дополнительная информация:
Сайт будет использовать метод GET для проверки URL, например: profile.php?username=admin01
Будет отображаться информация о пользователе. Если пользователь не вошел в систему, страница будет перенаправлена на страницу входа.
коды:
<?php
ob_start();
session_start();
require_once 'dbconnect.php';
if( !isset($_SESSION['user']) ) {
header("Location: index.php");
exit;
}
// select loggedin users detail
$res=mysql_query("SELECT * FROM users WHERE userId=".$_SESSION['user']);
$userRow=mysql_fetch_array($res);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Welcome - <?php echo $userRow['userName']; ?></title>
<link rel="stylesheet" href="assets/css/bootstrap.min.css" type="text/css" />
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body>
<nav class="navbar navbar-default navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="http://www.codingcage.com">Prospekt | A Gaming Community</a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li class="active"><a href="#">Dashboard</a></li>
<li><a href="../home.php">Home</a></li>
<li><a href="/forums.php">Forums</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
<span class="glyphicon glyphicon-user"></span> Member - <?php echo $userRow['userName']; ?> <span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="logout.php?logout"><span class="glyphicon glyphicon-log-out"></span> Sign Out</a></li>
</ul>
</li>
</ul>
</div><!--/.nav-collapse -->
</div>
</nav>
<div id="wrapper">
<div class="container">
<div class="page-header">
<h1>Prospekt | A Gaming Community</h1>
<h4> Dashboard | See your live ranking, stats, and more! </h4>
</div>
<?php
$username = $_GET['username'];
if (isset($username) === true && empty($_GET['username']) === false){
echo $username;
} else {
echo "Please search for a valid user!";
}
?>
<div class="row">
<div class="col-lg-12">
</div>
</div>
</div>
</div>
<script src="assets/jquery-1.11.3-jquery.min.js"></script>
<script src="assets/js/bootstrap.min.js"></script>
</body>
</html>
Проблема заключается в основном в HTML, который вы выбрали для использования. Это создает впечатление того, что он является главной страницей пользователя. Вам нужно заменить этот HTML на новый. И вам нужно немного кода PHP, как это
ob_start();
session_start();
require_once 'dbconnect.php';
if( !isset($_SESSION['user']) ) {
header("Location: index.php");
exit;
}
else {
/* find out if a user exists and raise 404 if not? Here's how */
$sql = 'SELECT COUNT(*) from users WHERE username = ? LIMIT 1';
$stmt = $conn->prepare($sql);
$stmt->bindParam(1, $_GET['username'], PDO::PARAM_INT);
$stmt->execute();
if($stmt->fetchColumn()) {
/* now an authenticated users is trying to see a profile page
on your website for a user who exists */
// CREATE THE APPROPRIATE HTML
}
else
{
header('HTTP/1.0 404 not found');
}
}
Обратите внимание, что я использую PDO. Функции mysql_ * не должны использоваться. Вы не экранируете свои параметры запроса в текущем коде. Смертельно опасно
Обратите внимание, что следующие строки в вашем исходном коде должны быть удалены:
$res=mysql_query("SELECT * FROM users WHERE userId=".$_SESSION['user']);
$userRow=mysql_fetch_array($res);
Для вашего вопроса № 2: Добавьте следующее условие, когда вы проверяете метод $ _GET
<?php
$username = $_GET['username'];
if (isset($username) === true && empty($_GET['username']) === false && $username != $userRow['userName'] ){
echo $username;
} else {
echo "Please search for a valid user!";
}
?>
И для вашего вопроса № 1: Вы можете проверить идентификатор, который вы не какой-либо массив в запросе SELECT. Вы можете изменить расположение заголовка на 404 Page.