【发布时间】:2013-02-07 21:14:51
【问题描述】:
已解决
在问这个之前我已经搜索过,但什么也没找到,所以我会在这里为将来的任何人写信。但是要修复它,我所要做的就是确保 $username 指向某个东西,我已经在 login.php 脚本中声明了它,但由于某种原因这没有找到它,所以设置 $username=$_SESSION['myusername '];解决了问题。
简而言之,我有一个名为“状态”的列,它是文本,140 个字符。这只是一个乱搞php的测试,所以我可以习惯它。现在起初它正在更新数据库但为空,我意识到我没有将帖子数据设置为 $status 并且在我这样做之后,我更新了数据库两次然后它就停止了工作......页面显示没有错误,但值与我上次更改时的值相同(uuu)。
我有一个表格:
<form action="status-update.php" method="post">
<p>
<input name="status" type="text" id="status" value="<?PHP echo $query_row[status]; ?>">
<input type="submit" name="submit" value="Update">
</p>
</form>
然后当按下按钮时,它会将您带到这个脚本:
<?php
SESSION_START();
//WAMP Login Details
$host = "localhost";
$username="root";
$password="";
$db_name="database";
$tbl_name="members";
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("Database doesn't exist.");
//Set $status to the post
$status=$_POST['status'];
//This grabs the data from the form on the settings page and updates
$sql="UPDATE $tbl_name SET status='$status' WHERE username='$username'";
$result=mysql_query($sql);
//if true then redirect else echo error
if($result){
header("location:me.php");
}
else {
echo "ERROR";
}
?>
我试图让它再次将值设置为 null,但我什至不能再这样做了,这很奇怪,因为我是一个菜鸟,我不知所措。
【问题讨论】:
-
value="<?PHP echo $query_row[status]; ?>">-- XSS 攻击向量。 -
UPDATE $tbl_name SET status='$status'-- SQL 注入攻击向量。 -
我已经解决了,我把 $username=$_SESSION['myusername'];在 WAMP 登录详细信息之后,它现在正在工作。
-
您尝试使用用户名 root 更新用户是否正确?因为您正在尝试更新用于连接数据库的用户名。尝试回显 $sql 变量并禁用标头重定向以查看正在处理的 sql
-
首先打印整个 print_r($_POST),$_POST['status'] 里面有什么,然后尝试像这样在 mysql_query() 中添加 die(mysql_error()):$result =mysql_query($sql) 或死 (mysql_error());