【问题标题】:php,mysql, update users details formphp,mysql,更新用户详细信息表单
【发布时间】:2018-04-10 15:28:29
【问题描述】:

如果用户愿意,我想更新他的名字、密码和头像图片等信息。我不知道如何以及在哪里保留 UPDATE sql 语句。这些更改将在个人资料页面中进行

profile.php:

session_start();
if (!isset($_SESSION['username'])) {
    header("Location: login.php");
}


<form action="profile.php" method="post" enctype="multipart/form-data" autocomplete="off">
<fieldset>
    <label for="firstName">First Name:</label>
    <input type="text" name="firstName" placeholder="Your firstname" required>
    <label for="password">Password:</label> 
    <input type="text" name="password" placeholder="Your new password">
    <label>Upload a new profile picture: </label><input type="file" name="avatar" accept="image/*" />
    <input type="submit" value="Submit Changes" name="changes"  />                        
</fieldset>

users.php

    <?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {

    //two passwords are equal to each other
    if ($_POST['password'] == $_POST['confirmpassword']) {

        //define other variables with submitted values from $_POST
        $firstName = $mysqli->real_escape_string($_POST['firstName']);
        $lastName = $mysqli->real_escape_string($_POST['lastName']);
        $username = $mysqli->real_escape_string($_POST['username']);
        $password = $mysqli->real_escape_string($_POST['password']);
        $email = $mysqli->real_escape_string($_POST['email']);
        $date = $mysqli->real_escape_string($_POST['regDate']);

        //we can also do md5 hash password for security
        //  $password = md5($_POST['password']);
        //  
        //path were our avatar image will be stored
        $avatar_path = $mysqli->real_escape_string('images/' . $_FILES['avatar']['name']);

        //checking email

        //make sure the file type is image, image properties validates
        if (preg_match("!image!", $_FILES['avatar']['type'])) {

            //copy image to images/ folder 
            if (copy($_FILES['avatar']['tmp_name'], $avatar_path)) {
                //if email does not already exist
                //set session variables to display on the index page
                $_SESSION['username'] = $username;
                $_SESSION['avatar'] = $avatar_path;

                //insert user data into database
                $sql = "INSERT INTO users (firstName, lastName, username, email, password, avatar, regDate) "
                        . "VALUES ('$firstName','$lastName','$username', '$email', '$password', '$avatar_path', NOW())";

                //check if mysql query is successful
                if ($mysqli->query($sql) === true) {
                    header("location: index.php");
                } else {
                    $_SESSION['message'] = 'User could not be added to the database!';
                }
                $mysqli->close();
            } else {
                $_SESSION['message'] = '';
            }
        } else {
            $_SESSION['message'] = '';
        }
    } else {
        $_SESSION['message'] = '';
    }
}

我还有一个 register.php,其中有以下代码: 比如会话开始; 以及连接和用户需要的连接

更新用户:

if ($_SERVER["REQUEST_METHOD"] == "POST") {
        //define other variables with submitted values from $_POST
        $firstName = $mysqli->real_escape_string($_POST['firstName']);
        $password = $mysqli->real_escape_string($_POST['password']);

        $avatar_path = $mysqli->real_escape_string('images/' . $_FILES['avatar']['name']);

        //make sure the file type is image, image properties validates
        if (preg_match("!image!", $_FILES['avatar']['type'])) {

            //copy image to images/ folder 
            if (copy($_FILES['avatar']['tmp_name'], $avatar_path)) {
                //if email does not already exist
                //set session variables to display on the index page
                $_SESSION['username'] = $username;
                $_SESSION['avatar'] = $avatar_path;

                //insert user data into database
                $sql = "UPDATE INTO users (firstName, password, avatar) "
                        . "VALUES ('$firstName', '$password', '$avatar_path'";

                //check if mysql query is successful
                if ($mysqli->query($sql) === true) {
                    echo 'updated successfully';
                    header("location: index.php");
                } else {
                    $_SESSION['message'] = 'User could not be added to the database!';
                }
                $mysqli->close();
            } else {
                $_SESSION['message'] = 'File upload failed!';
            }
        } else {
            $_SESSION['message'] = 'Please only upload GIF, JPG or PNG images!';
        }
    } 

更新 profile.php

    session_start();
if (!isset($_SESSION['username'])) {
    header("Location: login.php");
}
$text = "Welcome to your profile page";


$_SESSION['message'] = '';
$mysqli = new mysqli("localhost", "root", "", "");

require 'updateUser.php';

【问题讨论】:

  • 有什么问题?
  • 我没有看到UPDATE table..............你呢?
  • 我不知道在哪里以及如何保存它。我应该在数据库中创建一个新表吗?不对吧?
  • 为什么要创建一个新表;为什么不直接更新呢?
  • //we can also do md5 hash password for security // $password = md5($_POST['password']); - 我看到你没有使用它;好的。它完全“不”安全也不可靠。

标签: php mysql session


【解决方案1】:

如果您愿意,可以将新的UPDATE 查询放在另一个文件中,这将是action="newfilename.php",然后您可以从那里使用$_POST["firstname"] 和其他输入,然后将它们添加到您的SQL 查询中。

【讨论】:

  • 你能告诉我如何,我创建了一个 updateUser.php,只有我需要的 3 个名称、密码和头像。它不会更新表格,并且显示的用户名会导致错误
  • 请给我看一下代码,让我看看你已经走了多远:)
  • 嗨@dalmatian,你成功了吗?抱歉很忙。让我们弄清楚这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-18
  • 2014-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-30
相关资源
最近更新 更多