Php 通过MySQL和PDO更新用户信息。。脚本未更新
我正在尝试创建一个页面,以便用户可以更新其用户名、电子邮件和密码。我制作了这个脚本,不确定它是否有效。当我单击“更新”时,它不会对帐户进行任何更改。不知道是什么。我遗漏了HTML内容Php 通过MySQL和PDO更新用户信息。。脚本未更新,php,mysql,pdo,Php,Mysql,Pdo,我正在尝试创建一个页面,以便用户可以更新其用户名、电子邮件和密码。我制作了这个脚本,不确定它是否有效。当我单击“更新”时,它不会对帐户进行任何更改。不知道是什么。我遗漏了HTML内容 <?php session_start(); require 'core/init.php'; $uname = $_GET['username']; $username = $_SESSION['username']; if(isset($_POST['update'])) { $uname = $
<?php
session_start();
require 'core/init.php';
$uname = $_GET['username'];
$username = $_SESSION['username'];
if(isset($_POST['update'])) {
$uname = $_GET['username'];
if(!empty($_POST['username'])) {
$updateuname = $db->prepare("UPDATE users SET username = :username WHERE username='".$uname."'");
$updateuname->bindValue(':username', $_POST['username'], PDO::PARAM_STR);
$updateuname->execute();
if(!empty($_POST['email'])) {
$updateemail = $db->prepare("UPDATE users SET email = :email WHERE username='".$uname."'");
$updateemail->bindValue(':email', $_POST['email'], PDO::PARAM_STR);
$updateemail->execute();
if(!empty($_POST['password'])) {
if(empty($_POST['password_c'])) {
echo 'You must enter your password in both boxes!';
} else {
if($_POST['password'] == $_POST['password_c']) {
$updatepassword = $db->prepare("UPDATE users SET password = :password WHERE username='".$uname."'");
$updatepassword->bindValue(':password', $_POST['password'], PDO::PARAM_STR);
$updatepassword->execute();
} else {
echo 'Passwords did not match';
}
}
}
}
}
echo 'Details updated!';
}
?>
可能的重复项您是否使用GET或POST获取变量?代码对我来说没有意义:您同时有一个$\u GET[“uname”]
和一个$\u POST[“uname”]
?真正地(两个值都应该绑定,而不是连接到字符串中,这是一个SQL注入漏洞)老实说。。。您使用带有占位符的准备好的语句,然后仍然直接插入用户提供的数据,所以仍然留下一个巨大的开放向量?这是完全错误的,更不用说以明文(tsk-tsk)存储密码了。这完全违背了安全的本质。