使用PHP和HTML表单更新帐户信息

时间:2014-01-03 12:08:32

标签: php html

我有一个带有HTML表单和PHP的PHP页面。它要求用户更改其用户名并在数据库中进行更改。我有一些代码,但它不起作用,我被困在我需要的东西。有人可以给我一些想法吗?

HTML

<form id="edit" method="POST" action="">

    <h1>
        <label for="username">Username *</label>
        <input id="username1" type="text" name="username1" value=""/>
    </h1>

    <h1>
        <button id="submit" type="submit">Submit</button>
    </h1>

</form>

PHP

<?php

if (isset($_POST['edit'])){
    $username = $_POST["username1"];

    $id = $_SESSION["user_id"];
    $query = "UPDATE user SET username = '$username' WHERE id = '$id'";
}
?>

1 个答案:

答案 0 :(得分:1)

您必须要求$_POST['username']而不是$_POST['edit']

您的查询必须由mysqli或PDO执行。

<?php

if (isset($_POST['username1'])){
    $username = $_POST["username1"];

    $id = $_SESSION["user_id"];
    $query = "UPDATE user SET username = '$username' WHERE id = '$id'";
    mysqli_query($database_con, $query);
}
?>

但是这些方法是不安全的,因为$ username和$ id可能包含SQL-Injection。

改为使用prepared statements

<?php
$con = new mysqli("host", "user", "password", "databasename");
if (isset($_POST['username1'])){
    $username = $_POST["username1"];

    $id = $_SESSION["user_id"];
    $stmt = $con->prepare("UPDATE user SET username = ? WHERE id = ?");
    $stmt->bind_param("si",$username,$id);
    $stmt->execute();
}
?>