在用户信息面板中看不到编辑的信息

时间:2018-09-10 13:48:33

标签: php

我制作了一个有关用户信息的页面,其中包含一个用于更新其信息的按钮。当我更改字段并按下按钮时,数据库中已更改的信息以及网页显示一切正常并且已更改,但是当我刷新页面(按下按钮后)时,这些字段没有更改并且仍然包含相同的信息(但数据库已更改)。那我该如何解决呢?

以下是html代码:

<div class="custom-container">

        <div class="row">

            <div class="col-10">

                <div class="user_content custom-container">

                    <div class="row">

                        <div class="col-11 fields">

                            <form method="post" action="user_updates.php">

                                <fieldset id="right">

                                    <label>نام کاربری</label>
                                    <br>
                                    <input type="text" name="username" value="<?php echo $_SESSION["member_username"] ?>" disabled style="direction: ltr;">

                                    <br><br>

                                    <label>رمز عبور</label>
                                    <br>
                                    <input type="text" name="password" value="<?php echo $_SESSION["member_password"] ?>" style="direction: ltr;">

                                    <br><br>

                                    <label>نام</label>
                                    <br>
                                    <input type="text" name="first-name" value="<?php echo $_SESSION["member_name"] ?>">

                                    <br><br>

                                    <label>نام خانوادگی</label>
                                    <br>
                                    <input type="text" name="last-name" value="<?php echo $_SESSION["member_last_name"] ?>">

                                </fieldset>

                                <fieldset id="left">

                                    <label>نام پدر</label>
                                    <br>
                                    <input type="text" name="father-name" value="<?php echo $_SESSION["member_father_name"] ?>">

                                    <br><br>

                                    <label>کد ملی</label>
                                    <br>
                                    <input type="text" name="melli-code" value="<?php echo $_SESSION["member_melli_code"] ?>" style="direction: ltr; font-family: Iran_Sans_M;">

                                    <br><br>

                                    <label>شماره موبایل</label>
                                    <br>
                                    <input type="text" name="mobile-number" value="<?php echo $_SESSION["member_mobile_number"] ?>" style="direction: ltr; font-family: Iran_Sans_M;">

                                    <br><br>

                                    <label>ایمیل</label>
                                    <br>
                                    <input type="email" name="email" value="<?php echo $_SESSION["member_email"] ?>" style="direction: ltr;">

                                </fieldset>

                                <input type="hidden" name="user-id" value="<?php echo $_SESSION["member_id"] ?>">

                                <input type="submit" name="change" value="ثبت تغییرات">

                            </form>

                            <?php 

                                if (isset($_GET["empty"]))
                                {
                                    echo '<div class="php_texts"> <p>لطفاً تمامی قسمت ها رو پر نمایید.</p> </div>';
                                }

                                if (isset($_GET["changes"]))
                                {
                                    echo '<div class="php_texts"> <p>اطلاعات با موفقیت ویرایش شد.</p> </div>';
                                }

                                if (isset($_GET["error"]))
                                {
                                    echo '<div class="php_texts"> <p>عدم ارتباط با سرور.</p> </div>';
                                }

                            ?>

                        </div>

                    </div>

                </div> <!-- User Content-->

            </div> <!-- User Content-->

这是php代码:

<!-- General Codes-->

include("connect_to_sql.php");
session_start();    
if(isset($_POST["change"]))
{
    $password = $_POST["password"];
    $first_name = $_POST["first-name"];
    $last_name = $_POST["last-name"];
    $father_name = $_POST["father-name"];
    $melli_code = $_POST["melli-code"];
    $mobile_number = $_POST["mobile-number"];
    $email = $_POST["email"];
    $id = $_POST["user-id"];

    if (empty($username) && empty($password) && empty($first_name) && empty($last_name) && empty($father_name) && empty($melli_code) && empty($mobile_number) && empty($email))
    {
        header("location:user_changes.php?empty=fill+all+fields");
        exit;
    }

    if (isset($_SESSION["member_username"]))
    {
        $member_update= "UPDATE `member_info` SET `password` = '".$password."', `first_name` = '".$first_name."', `last_name` = '".$last_name."', `father_name` = '".$father_name."', `melli_code` = '".$melli_code."', `mobile_number` = '".$mobile_number."', `email` = '".$email."' WHERE `member_info`.`id` = '".$id."';";
        $member_query = mysqli_query($connect_to_mysql,$member_update);
        #$member_fetch = mysqli_fetch_assoc($member_query);

        if($member_query)
        {
            header("location:user_changes.php?changes=ok");
            exit;
        }
        else
        {
            header("location:user_changes.php?error=data+base");
            exit;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

主要问题是您从会话中读取了用户的信息,但从未将更新的数据写入会话中。

因此,可以在if($member_query)块中将值重写为会话,或者在每次页面加载到会话时从数据库中获取并映射实际值。

您的代码的另一个巨大问题是它很容易受到SQL Injection攻击。