[英]Profile Page PHP + MySQL
配置文件页面使用PHP和MySQL来显示项目。
我想问两件事
承诺:如果您能帮助我,我会在我的网站上确认您的身份,并把您记入功劳;)
问题1:
如何检查用户是否存在于数据库中,以及如何显示404消息?
问题2:
因此,这里的主要错误是当您搜索用户时,它无法识别用户。
用户“ admin01”搜索自己并且个人资料页面正在运行,如果用户admin01搜索用户admin02 ,则该页面将不向用户提供信息。 无论如何如何解决这个问题?
附加信息:
该站点将使用GET方法检查网址,例如: 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替换该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:您可以检查id您是否不是SELECT查询中的任何数组您可以将标题位置更改为404页。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.