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'附近使用正确的语法。
为什么绑定$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'>";
}
Thanks man它工作正常。 –
太好了,尽管你确实应该使用准备好的语句,因为你当前的代码很脆弱。 – 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
在这里,让您的代码相同的休息,但你一定要看看“准备语句”的主题。
什么错误? –
如果你想真正想知道你的更新是否工作,使用'mysql_affected_rows()'http://php.net/manual/en/function.mysql-affected-rows.php,因为你可能会在这里得到误报。然而,为什么'include_once'dbconfig.php';'的倍数? –
当你刷新页面(使用浏览器刷新按钮)时,你看到你的更新?如果是,那么在“更新”记录 – codisfy