繁体   English   中英

配置文件页面PHP + MySQL

[英]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>&nbsp;Member - <?php echo $userRow['userName']; ?>&nbsp;<span class="caret"></span></a>
              <ul class="dropdown-menu">
                <li><a href="logout.php?logout"><span class="glyphicon glyphicon-log-out"></span>&nbsp;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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM