php-编辑用户的个人资料页面

问题描述:

嗨,我想让用户更新自己的详细信息(个人资料页面) 我的页面正常工作,但是当我点击更新按钮时,页面只是刷新,细节保持不变这是我的代码。php-编辑用户的个人资料页面

<?php 
session_start(); 
include_once 'dbconfig.php'; 

if(!isset($_SESSION['user'])) 
{ 
    header("Location: index.php"); 
} 
$res=mysql_query("SELECT * FROM users WHERE user_id=".$_SESSION['user']); 
$userRow=mysql_fetch_array($res); 



    if(isset($_POST['username'])) 
    { 
     $username= $_POST['username']; 
     $id = $_POST['user_id']; 
     $sql = "UPDATE users SET user_name='$username' user_id=".$_SESSION['user']; 
     $res = mysql_query($sql) 
            or die("Could not update".mysql_error()); 
     echo "<meta http-equiv='refresh' content='0;url=profile.php'>"; 
    } 
      if(isset($_POST['useremail'])) 
    { 
     $useremail= $_POST['useremail']; 
     $id = $_POST['user_id']; 
     $sql = "UPDATE users SET user_email='$useremail' WHEREuser_id=".$_SESSION['user']; 
     $res = mysql_query($sql) 
            or die("Could not update".mysql_error()); 
     echo "<meta http-equiv='refresh' content='0;url=profile.php'>"; 
    } 

     if(isset($_POST['userabout'])) 
    { 
     $userabout= $_POST['userabout']; 
     $id = $_POST['user_id']; 
     $sql = "UPDATE users SET user_about='$userabout' WHERE user_id=".$_SESSION['user']; 
     $res = mysql_query($sql) 
            or die("Could not update".mysql_affected_rows()); 
     echo "<meta http-equiv='refresh' content='0;url=profile.php'>"; 
    } 

error_reporting(-1); 
?> 






<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title><?php echo $userRow['user_email']; ?>s Profile</title> 
<link rel="stylesheet" href="style.css" type="text/css" /> 
</head> 
<body> 

<div class="box"> 

    <input type="button"/> 

     <div class="menubar"> 
      <div class="menu"> 
          <ul id="menubar"> 
       <li><?php echo $userRow['user_email']; ?><a href="logout.php?logout">Sign Out</a></li> 
       </ul> 
       </div> 
      <div class="menu1"> 
      <ul id="menubar"> 
       <li><a class="upload" href="index1.php">Upload</a></li> 
       </ul> 
      </div> 

</div> 







    <div class="main"> 
<form action="profile.php" method="POST"> 
<div> 
<label for="uname"><a>User Name:</a></label> 
<input type="text" name="username" value="<?php echo $userRow['user_name'];?>"/> 
</div> 

<div> 
<label for="email"><a>Email:</a></label> 
<input type="text" name="useremail" value="<?php echo $userRow['user_email'];?>"/> 
</div> 
<div> 
<label for="about"><a>About me:</a></label> 
<textarea name="userabout" rows="10" cols="30"><?php echo $userRow['user_about'];?></textarea> 
</div> 

<input type="submit" value="Update"> 
<div> 
</div> 

</form> 







</div> 



    <div id="mainv"> 
<table width="80%" border="1"> 
    <tr> 
    <th colspan="4">your uploads...<label><a href="index.php">upload new files...</a></label></th> 
    </tr> 
    <tr> 
    <td>File Name</td> 
    <td>File Type</td> 
    <td>File Size(KB)</td> 
    <td>View</td> 
    </tr> 

<video width="700" height="500" controls="autoplay"> 
    <source src="mmm.mp4" type="video/mp4"> 
</video> 

    <?php 
$sql="SELECT * FROM tbl_uploads"; 
$result_set=mysql_query($sql); 
while($row=mysql_fetch_array($result_set)) 
{ 
    ?> 
</source> 
     <tr> 
     <td><?php echo $row['file'] ?></td> 
     <td><?php echo $row['type'] ?></td> 
     <td><?php echo $row['size'] ?></td> 

     <td><a href="uploads/<?php echo $row['file'] ?>"target="frame_a">view file</a></td> 
</a>   
</tr> 
     <?php 
} 
?> 
    </table> 


    </div> 
    <div class="mid"> 
    <div class="main2"><div class="pop"><div class="pop1"><h2>More Popular videos<h2></div><div class="pop2"></div></div></div> 
    <div class="com"><div class="comm"><div class="comm1"><h2>Best comments of the week<h2></div><div class="comm2"></div></div></div> 
    </div> 


</body> 

</html> 

我知道这是老的PHP,但我通过我意识到有更新版本的项目开始了我的项目,它的一半。

你能帮我在这里谢谢。

****我编辑了代码,我收到了关键错误**** 无法更新您的SQL语法中有错误;请检查与您的MySQL服务器版本对应的手册,以便在第1行的'user_id = 36'附近使用正确的语法。

+0

什么错误? –

+0

如果你想真正想知道你的更新是否工作,使用'mysql_affected_rows()'http://php.net/manual/en/function.mysql-affected-rows.php,因为你可能会在这里得到误报。然而,为什么'include_once'dbconfig.php';'的倍数? –

+0

当你刷新页面(使用浏览器刷新按钮)时,你看到你的更新?如果是,那么在“更新”记录 – codisfy

为什么绑定$id$_POST['user_id']哪个表单在你的html甚至不发布?显然你有$_SESSION['user']变量中的用户ID。

此外,您的SQL语句已损坏。

你的代码可能看起来是这样的:

if(isset($_POST['username'])) 
{ 
    $username= $_POST['username']; 
    $id = $_SESSION['user']; 
    $sql = "UPDATE users SET user_name='$username' WHERE user_id=$id"; 
    $res = mysql_query($sql) 
           or die("Could not update".mysql_error()); 
    echo "<meta http-equiv='refresh' content='0;url=profile.php'>"; 
} 

if(isset($_POST['useremail'])) 
{ 
    $useremail= $_POST['useremail']; 
    $id = $_SESSION['user']; 
    $sql = "UPDATE users SET user_email='$useremail' WHERE user_id=$id"; 
    $res = mysql_query($sql) 
           or die("Could not update".mysql_error()); 
    echo "<meta http-equiv='refresh' content='0;url=profile.php'>"; 
} 

if(isset($_POST['userabout'])) 
{ 
    $userabout= $_POST['userabout']; 
    $id = $_SESSION['user']; 
    $sql = "UPDATE users SET user_about='$userabout' WHERE user_id=$id"; 
    $res = mysql_query($sql) 
           or die("Could not update".mysql_affected_rows()); 
    echo "<meta http-equiv='refresh' content='0;url=profile.php'>"; 
} 
+0

Thanks man它工作正常。 –

+1

太好了,尽管你确实应该使用准备好的语句,因为你当前的代码很脆弱。 – Crs

1)第一条语句中缺少WHERE,第二条语句中有空格。

2)您的代码中存在SQL注入漏洞。这些值来自用户输入并且是未分类的。

正确的代码是:

$sql = "UPDATE users SET user_name='" . mysql_real_escape_string($username) . "' WHERE user_id=" . $_SESSION['user']; 

$sql = "UPDATE users SET user_email='" . mysql_real_escape_string($useremail) . "' WHERE user_id=" . $_SESSION['user']; 

$sql = "UPDATE users SET user_about='" . mysql_real_escape_string($userabout) . "' WHERE user_id=" . $_SESSION['user']; 

防止SQL注入,我以前mysql_real_escape_string在这里,让您的代码相同的休息,但你一定要看看“准备语句”的主题。