【发布时间】:2019-10-31 02:03:19
【问题描述】:
我正在尝试使用来自表单的新用户名记录更新用户名记录。
在我执行该语句后,我的数据库中的一条记录被删除,但它没有被来自表单的新记录替换。我不知道为什么。
index.php:
<form action="change.php">
<input type="text" name="txtNewUsername" id="txtNewUsername" placeholder="new username"><br/>
<button>Change username</button>
</form>
更改.php:
<?php
session_start();
require_once __DIR__.'/connect.php';
$txtNewUsername = $_POST['txtNewUsername'];
$sUsername = $_SESSION['txtUsername'];
try{
$stmt = $db->prepare('UPDATE users SET username = :sNewUsername WHERE username = :sOldUsername');
$stmt->bindValue('sNewUsername', $txtNewUsername);
$stmt->bindValue(':sOldUsername', $sUsername);
$stmt->execute();
echo $txtNewUsername;
}catch(PDOEXception $ex){
echo $ex;
}
我想将连接用户的用户名替换为来自表单的用户名。
【问题讨论】:
-
这也假设 PHP 会话始终是安全的(它们不是)并且未经外部“虚拟主机用户”编辑,请参阅How to prevent PHP sessions being shared between different apache vhosts? (answer off mine).. SQL 注入是不可能的,因为您使用准备好的语句作为您应该这样做,但如果会话文件存储在网络服务器上的一个目录中,则在某些错误的配置情况下可能会更改其他用户的用户名
标签: php pdo sql-update