php - 编辑用户的个人资料页面
问题描述:
我目前正在尝试创建个人资料编辑页面。我使用php和MySQL作为数据库。我不太了解php和MySQL。我的问题是:当我按提交时,我得到一个空白页。它不打印出错误或成功。有关如何解决它的任何想法?这里是我的PHP代码:php - 编辑用户的个人资料页面
<?php
session_start();
include_once 'dbconfig.php';
if(!isset($_SESSION['user'])) {
$userRow=mysql_fetch_array($res);
$username= $userRow["user_name"];
$useremail= $userRow["user_email"];
$userabout= $userRow["user_about"];
$results = $mysqli->query("UPDATE users SET user_name='$username', user_email='$useremail', user_about='username' WHERE user_id=user");
if($results){
print 'Success! record updated';
} else {
print 'Error : ('. $mysqli->errno .') '. $mysqli->error;
}
}
?>
以及更新用户信息我的表单代码:
<?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);
?>
<div class="main">
<form action="change.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" value="<?php echo $userRow['user_about'];?>"/></textarea>
</div>
<input type="submit" value="Submit">
</form>
</div>
答
而不是
<textarea name="userabout" rows="10" cols="30" value="<?php echo $userRow['user_about'];?>"/></textarea>
使用
<textarea name="userabout" rows="10" cols="30"><?php echo $userRow['user_about'];?></textarea>
而且,这个结果是不正确的:
/></textarea>
然而,问题是这一部分:
user_id=user
user
不被识别并引发错误。由于PHP错误未在您的服务器上显示,因此您什么也看不到。但是如果你看看你的日志,你会发现MySQL中有关语法错误的问题。你想在那里使用$_SESSION['user']
而不是user
。
最后,您的代码在SQL注入和XSS注入方面都很脆弱。请避开您的查询或使用PDO到cope with SQL injection和prevent XSS injection以及。
在很多项目中,我在PHP中有一个Common
类,其中包含常用功能。这就是其中之一:
public static function protectArrayAgainstXSS(&$arr) {
$changed = false;
foreach ($arr as $index => $a) {
if (is_array($a)) {
$changed = $changed || Common::protectArrayAgainstXSS($arr[$index]);
} else if ($a !== null) {
$changed = $changed || ($arr[$index] === strip_tags($a));
$arr[$index] = strip_tags($a);
}
}
return !$changed;
}
您可以使用此调用Common::protectArrayAgainstXSS($_POST)
,例如,以保护您不受XSS注入项目。
+0
所以,$ _SESSION ['user']我只需要使用user?我真的不知道你的意思 –
你在这里有几个问题,混合API和不在WHERE子句中引用。和'
我可以用什么来代替
你不必用别的东西来替换你的textarea,只需删除value属性并将你的php回显为 –