配置文件页面未显示用户配置文件信息或正在更新


Profile page not displaying user profile information or updating

希望有人能帮忙。我有一个配置文件页面,我想显示登录用户的详细信息。到目前为止,我在个人资料页面上有这个。

<?php  
/* This script pulls the existing name input and displays it when the user logs in. */
session_start();
include("db.php"); ?>
<?php include("includes/header.php") ?>
<?php include("includes/nav.php") ?>


<?php 
    if(logged_in()) {
    $result = mysqli_query($link,$query);
    $row = mysqli_fetch_array($result);

if (!$_POST['name'] && $_POST['name']=="") $error.="<br />Please enter your name";
if (!$_POST['email'] && $_POST['email']=="") $error.="<br />Please enter your email";
if (!$_POST['DOB'] && $_POST['DOB']=="") $error.="<br />Please enter your date of birth";
if (!$_POST['country'] && $_POST['country']=="") $error.="<br />Please enter your country";


if ($error) {
                echo '<div class="alert alert-success alert-dismissable">'.addslashes($error).'</div>';
            }
if(isset($_POST['form-control'])) {
move_uploaded_file($_FILES['file']['tmp_name'],"img/".$_FILES['file']['name']);
 $query = mysqli_query("UPDATE users SET image = '".$_FILES['file']['name']."'");
}    

    } else {
        redirect("login.php");
    } 
?>

<Style>

.alert{
display:none;
}
#profileimg {
    height: 100px;
    width: auto;
}    
</Style>

<div class="container">
<h1>Edit Profile</h1>
<hr>
<div class="row">
  <!-- left column -->
  <div class="col-md-3">
    <div class="text-center">
      <img src="//placehold.it/100" class="avatar img-circle" alt="avatar" id="profileimg">
      <h6>Upload a different photo...</h6>
      <input class="form-control" type="file" name="name">
    </div>
  </div>
  <!-- edit form column -->
  <div class="col-md-9 personal-info">
    <div class="alert alert-success alert-dismissable">
      <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button> 
      <strong>Profile updated.</strong>
    </div>
    <h3>Personal info</h3>
    <form class="form-horizontal" role="form" action="edit_profile.php" method="post">
      <div class="form-group">
        <label class="col-lg-3 control-label name">name:</label>
        <div class="col-lg-8">
         <input class="form-control" value="<?php echo $row['name'];?>" type="text" name="name" required>
        </div>
      </div>
      <div class="form-group">
        <label class="col-lg-3 control-label">Email:</label>
        <div class="col-lg-8">
          <input class="form-control" value="<?php echo $row['email'];?>" type="text" name="email" required>
        </div>
      </div>
      <div class="form-group">
        <label class="col-lg-3 control-label">DOB:</label>
        <div class="col-lg-8">
          <input class="form-control" value="<?php echo $row['DOB'];?>" type="date" name="DOB" required>
        </div>
      </div>
      <div class="form-group">
        <label class="col-lg-3 control-label">Country</label>
        <div class="col-lg-8">
          <input class="form-control" value="<?php echo $row['country'];?>" type="text" name="country" required>
        </div>
      </div>
      <div class="form-group">
        <label class="col-md-3 control-label"></label>
        <div class="col-md-8">
          <input class="btn btn-primary" value="Save Changes" type="submit">
          <span></span>
          <input class="btn btn-default" id="updated" value="Cancel" type="reset">
        </div>
      </div>
    </form>
  </div>

     <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="js/bootstrap.min.js"></script>
    <script>
     $("#updated").click(function(){
 $(".alert").hide().show('medium');
     </script>

</body>
</html>

然后我有另一个用于更新的php文件,它是:

<?php
session_start();
include("db.php");

$name = $_POST['name'];
$email = $_POST['email'];
$DOB = $_POST['DOB'];
$country = $_POST['country'];
$password = md5($salt.$_POST['password']);

$query = "UPDATE users SET name  = '".$name."', email = '".$email."', DOB = '".$DOB."', country = '".$country."', password = '".$password."'"; 


$result = mysqli_query($link,$query);


header('Location: profile.php');
?>

简而言之,它没有显示或更新,我不知道为什么。我是PHP的新手,所以如果这很简单,请放心,我已经搜索过了,但似乎找不到答案。

提前谢谢。

我也是新手,但通常当我检查SESSION id是否处于活动状态时,我会使用

if(isset($_SESSION['id'])) {
$query = "UPDATE users SET name  = '".$name."', email = '".$email."', DOB = '".$DOB."', country = '".$country."', password = '".$password."' WHERE id='".$_SESSION['id']."'"; 
}

您还需要回显您试图查询的索引行,以显示结果

$name = row['username'];
echo $name;

您的代码中有很多错误:您试图在同一页面上传文件,而将表单数据发送到另一页面。如何处理表单验证也是一个小开销。我在表单中所做的更改是:我在你的提交按钮中添加了name="save",并添加了新的隐藏输入来存储你的用户配置文件id。我不确定login()函数在你的代码中做了什么,最好坚持if($id){}。

试试这个:

<?php  
/* This script pulls the existing name input 
   and displays it when the user logs in. */
session_start();
include("db.php");
include("includes/header.php");
include("includes/nav.php");
$id = $_SESSION['id'];
if(loginned()) {//you can do if($id){}  
    $query="SELECT * FROM users WHERE id='$id' LIMIT 1";
    $result = mysqli_query($link,$query);
    $row = mysqli_fetch_array($result);
?>
<style>
.alert{
display:none;
}
#profileimg {
    height: 100px;
    width: auto;
}    
</style>
<div class="container">
<h1>Edit Profile</h1>
<hr>
<div class="row">
  <!-- left column -->
  <!-- edit form column -->
  <div class="col-md-9 personal-info">
    <div class="alert alert-success alert-dismissable">
      <button type="button" class="close" data-dismiss="alert"
           aria-hidden="true">&times;</button> 
      <strong>Profile updated.</strong>
    </div>
    <h3>Personal info</h3>    
    <form class="form-horizontal" role="form" 
          action="edit_profile.php" method="post">    
      <div class="form-group">
        <label class="col-lg-3 control-label name">name:</label>
        <div class="col-lg-8">
         <input class="form-control" value="<?php echo $row['name'];?>" 
               type="text" name="name" required>
        </div>
      </div>
      <div class="col-md-3">
    <div class="text-center">
      <img src="//placehold.it/100" class="avatar 
           img-circle" alt="avatar" id="profileimg">
      <h6>Upload a different photo...</h6>
      <input class="form-control" type="file" name="name">
    </div>
  </div>   
      <div class="form-group">
        <label class="col-lg-3 control-label">Email:</label>
        <div class="col-lg-8">
          <input class="form-control" value="<?php echo $row['email'];?>" 
               type="text" name="email" required>
        </div>
      </div>
      <div class="form-group">
        <label class="col-lg-3 control-label">DOB:</label>
        <div class="col-lg-8">
          <input class="form-control" value="<?php echo $row['DOB'];?>" 
                type="date" name="DOB" required>
        </div>
      </div>
      <div class="form-group">
        <label class="col-lg-3 control-label">Country</label>
        <div class="col-lg-8">
          <input class="form-control" value="<?php echo $row['country'];?>" 
              type="text" name="country" required>
        </div>
      </div>
      <div class="form-group">
        <input type="hidden" name="id" value="<?php echo $row['id'];?>">
        <label class="col-md-3 control-label"></label>
        <div class="col-md-8">
          <input class="btn btn-primary" name="save" 
               value="Save Changes" type="submit">
          <span></span>
          <input class="btn btn-default" id="updated" 
                 value="Cancel" type="reset">
        </div>
      </div>         
    </form>
  </div>
    <?php }else{ redirect("login.php"); }  ?>

edit_profile.php首先我们检查是否有任何名称为save的帖子,我们验证发布的数据。如果验证成功,我们将继续上传您的文件,然后运行您的更新查询。

<?php   
    session_start();
    include("db.php");
if(isset($_POST['save'])){
        $id = isset($_POST['id'])? $_POST['id']:'';
        $name = isset($_POST['name'])? $_POST['name']:'';
        $email = isset($_POST['email'])? $_POST['email']:'';
        $dob = isset($_POST['DOB'])? $_POST['DOB']:'';
        $pass = isset($_POST['passwrd'])? md5($salt.$_POST['password']):'';
        $country = isset($_POST['country'])? $_POST['country']:'';
        if(empty($name)){
            $error = 'Please enter your name';
        }elseif(empty($email)){
            $error = 'Please enter your email';
        }elseif(empty($dob)){
            $error = 'Please enter your date of birth';
        }elseif(empty($country)){
            $error = 'Please enter your country';
        }elseif(empty($pass)){
            $error = 'Please enter your password';
        }else{
            move_uploaded_file($_FILES['file']['tmp_name'],"img/".$_FILES['file']['name']);
            $query = mysqli_query("UPDATE users SET image = '".$_FILES['file']['name']."' 
                                   WHERE id='$id'");
            $query = "UPDATE users SET name  = '$name', email = '$email', 
                      DOB = '$DOB', country = '$country', password = '$password' 
                      WHERE id='$id'"; 
            $result = mysqli_query($link,$query);
            header('Location: profile.php');
        }

}?>

<?php if(!empty($error)){ 
        echo '<div class="alert alert-success 
           alert-dismissable">'.addslashes($error).'</div>';
     }else{
       echo '<div class="alert alert-success">Success</div>';
      }
  ?>

我在这里添加了一个演示。至少这会有所帮助: