プロフィールページでは、PHPとMySQLを使用して項目を表示しています。
二つのことは、私は
約束カントー聞きたいがあります:あなたは私を助けることができる場合、私は私のウェブサイトであなたを認識し、クレジットであなたを置くことができます;)
質問1:
どのようにユーザーがデータベースに存在するかどうか、404メッセージを表示する方法を確認します。プロフィールページPHP + MySQL
質問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>
サイドノート:長い非推奨のデータベースアダプタ(古い 'mysql _...()'関数)を使用していて、あなたのスクリプトはSQLインジェクション攻撃に対してオープンでオープンしています...あなたのスクリプトを 'mysqli'データベースアダプタとして「PDO」を使用します。その公式文書をチェックしてください。そして、あなたのコードを安全にするために "prepared statements"と "parameter binding"を使う利点について学びましょう。 – arkascha
ヒントをお寄せいただきありがとうございます。これは実際にはlocalhostedです。これを "オンライン"に移植すると、これは変更され、mysqliまたはPDOを後で使用します:) – astroXoom
質問2の回答は明らかです。スクリプトの先頭で、引数として指定されたユーザー名のようにセッション変数が存在するかどうかをチェックします。これは現在ログインしているユーザー以外のユーザーには当てはまりません。したがって、実際に自分が達成しようとしていることを防ぐことができます。 – arkascha