Php MySQL更新不';行不通
我想根据用户输入更新2个数据库字段。我的代码如下:Php MySQL更新不';行不通,php,mysql,Php,Mysql,我想根据用户输入更新2个数据库字段。我的代码如下: <body> <?php $db_server["host"] = "localhost"; //database server $db_server["username"] = "root"; // DB username $db_server["password"] = "mypass"; // DB password $db_server["database"] = "mudb";// database name
<body>
<?php
$db_server["host"] = "localhost"; //database server
$db_server["username"] = "root"; // DB username
$db_server["password"] = "mypass"; // DB password
$db_server["database"] = "mudb";// database name
$dbc = mysql_connect($db_server["host"], $db_server["username"], $db_server["password"]);
mysql_select_db($db_server["database"], $dbc);
$user = $_COOKIE['mycookie'];
$q = "SELECT * FROM members WHERE username='$user'";
$r = mysql_query( $q,$dbc);
while ($row = mysql_fetch_array($r, MYSQLI_ASSOC)) {
echo 'username: '.$row['username'], '<br/>';
$password=$row['password'];
?>
<form method="post" id="changepasswordform" >
<input type="password" id="newpassword" name="newpassword"/>
<input type="submit" name="changepasswordbutton" >
</form>
<?php
echo 'email: '.$row['email'], '<br/>';
}
?>
<form method="post" id="changeemailform" >
<input type="text" id="newemail" name="newemail"/>
<input type="submit" value="αλλαγή" name="changeemailbutton" >
</form>
<?php
}
if (isset($_POST['changepasswordbutton'])){
$newpassword=$_POST['newpassword'];
$q2 = "UPDATE members SET password=$newpassword WHERE username='$user'";
$r2 = mysql_query($q2,$dbc);
}
if (isset($_POST['changeemailbutton'])){
$newemail=$_POST['newemail'];
$q3 = "UPDATE members SET email=$newemail WHERE username='$user'";
$r3 = @mysql_query( $q3,$dbc);
}
?>
</body>
您缺少了应该围绕密码字段的”
(引号)。
更改:
致:
重要提示:
即使它没有关联,也请不要使用mysql.*
函数-它已被弃用,并且容易受到sql注入的攻击。最好使用PDO或MySQLi。您缺少密码字段周围的'
(引号)。
更改:
致:
重要提示:
即使它没有关联,也请不要使用mysql.*
函数-它已被弃用,并且容易受到sql注入的攻击。最好使用PDO或MySQLi。这将达到目的,并保存为sql注入(mysql\u real\u escape\u string
):
当然,你不应该再使用mysql.*
,我只是为你的具体情况举个例子。这就可以了,并且可以保存为sql注入(mysql\u real\u escape\u string
):
当然你不应该再使用mysql了,我只是举个例子说明你的具体情况。警告你的代码很容易受到sql注入攻击!您还应该对您的用户密码进行salt+hash操作。请不要使用mysql.*
函数编写新代码。它们不再得到维护,社区已经开始。看到了吗?相反,你应该学习并使用或。如果你不能决定哪一个,我会帮你的。如果选择PDO,。是否注意到变量的查询字符串中没有花括号?其他字符串值中的字符串变量应使用{}
引用,如updatemembers SET password='{$newpassword}',其中username='{$user}'
警告您的代码非常容易受到sql注入攻击!您还应该对您的用户密码进行salt+hash操作。请不要使用mysql.*
函数编写新代码。它们不再得到维护,社区已经开始。看到了吗?相反,你应该学习并使用或。如果你不能决定哪一个,我会帮你的。如果选择PDO,。是否注意到变量的查询字符串中没有花括号?其他字符串值中的字符串变量应该用{}
引用,比如updatemembers SET password='{$newpassword}',其中username='{$user}'
这只会让我恶心-sql注入警告!如果您编辑updatemembers SET password='$newpassword',其中username='$user'
以确保安全,我将删除我的-1并将其替换为+1(如果有帮助)。我不同意否决票。答案完全正确,问题是缺少引用。这是OP源代码中不起作用的部分。无论作者在业余时间做什么(比如打开安全漏洞),都是他自己的问题。他已在评论中得到警告,视情况而定。使用正则表达式解析HTML是不可能的,但某些特定情况下可以回答是的。我理解你的观点,我只是认为评论问题或答案将是证明你观点的更好方式,而不是用愤怒的反对票来诋毁答案。@yiannis同样的原因,你也应该在电子邮件周围添加'
:“更新成员集电子邮件='$newemail',其中用户名='$user'
。和yiannis,试着忽略这些粗鲁的行为,仍然从他们关于使用mysql.*
的评论中学习。在我的母语中,有一句谚语说,即使是一个坏了的钟,每天也能正确地显示两次小时;)这让我恶心-sql注入警告!如果您编辑updatemembers SET password='$newpassword',其中username='$user'
以确保安全,我将删除我的-1并将其替换为+1(如果有帮助)。我不同意否决票。答案完全正确,问题是缺少引用。这是OP源代码中不起作用的部分。无论作者在业余时间做什么(比如打开安全漏洞),都是他自己的问题。他已在评论中得到警告,视情况而定。使用正则表达式解析HTML是不可能的,但某些特定情况下可以回答是的。我理解你的观点,我只是认为评论问题或答案将是证明你观点的更好方式,而不是用愤怒的反对票来诋毁答案。@yiannis同样的原因,你也应该在电子邮件周围添加'
:“更新成员集电子邮件='$newemail',其中用户名='$user'
。和yiannis,试着忽略这些粗鲁的行为,仍然从他们关于使用mysql.*
的评论中学习。在我的母语中,有一句谚语说,即使是一个坏了的钟,每天也能正确地显示两次小时;)
UPDATE members SET password=$newpassword WHERE username='$user'
UPDATE members SET password='{mysql_real_escape_string($password)}'
WHERE username='{mysql_real_escape_string($user)}'
$q2 = "UPDATE members SET
password='". mysql_real_escape_string($password) ."'
WHERE username='". mysql_real_escape_string($user) ."';