duanheye7423 2017-02-22 11:11
浏览 144
已采纳

在php中更新会话变量

Okey so i got a problem when a user changes their profile picture. And if I with my silly mind understood correctly (what i think) this is due to my session being not updated... So this is my uploadfile where the user is able to upload a image file to the database, the image gets inserted and it works fine but even if the image is changed in the database i still see the old image when i insert it... Only when i logout and login im able to see the new picture,

  • Is there some type of way i can update my session without the user being logged out in the proccess....?
  • Is this due to my session being unupdated?

Don't know if it helps but here is my code

<?php
if(isset($_FILES['file']) )
{

move_uploaded_file($_FILES['file']['tmp_name'],'files/'.$_FILES['file']['name']);

session_start();
$username = $_SESSION['user'];
$userpic = 'files/'.$_FILES['file']['name'];
$id = $_SESSION['id'];

include ("connect.php");
$sql = $con->prepare('UPDATE users SET username=?, userpic=? WHERE id = ?');
$sql->bind_param("ssi",$username,$userpic,$id);
$sql->execute(); 
$sql->close();
$con->close();  
echo '<div id = "check"> Your image was succesfully uploaded</div>';
}
else{
echo "no files";}
?>

And here is my login if that makes it easier as well:

<?php 

include('connect.php');

$username = $_POST['username'];
$password = $_POST['password'];
$query = "SELECT * FROM users";

$result = $con->query($query);

while($row = $result->fetch_object())
{
    if($username == $row->username)
    {

            $checkPassword = password_verify($password,$row->password);
            if($checkPassword ){   // betyder om det är sant
                session_start();
                $_SESSION['loggedIn'] = true; 
                $_SESSION['user'] = $row->username;
                $_SESSION['admin'] = $row->admin;
                $_SESSION['userpic'] = $row->userpic;
                $_SESSION['id'] = $row->id;
                header("Location:music.php?success");
                exit();
                $fail = false;
            }


    }
    else{
        $fail = true;
        if($fail){      
    echo "<script>
    alert('You typed in wrong password or username, please try again mate!');
    window.location.href='music.php';
    </script>";

    }

    }
}?>

Any help more than appreciated but please try to keep it simple im stupid

  • 写回答

3条回答 默认 最新

  • duanque3125 2017-02-22 11:16
    关注

    When you upload the user image you update the content in the table to the associated user. However, you do not update the session variable with the corresponding value.

    After you have ran the query successfully, before you return the success message, set the value of the session variable, like so:

    [...]
    $_SESSION['userpic'] = $userpic;
    echo '<div id = "check"> Your image was succesfully uploaded</div>';
    [...]
    

    Edit: Note that the changing of the image will not happen on THIS pageload, it will happen after. This is because you are using the previous value up until this point.

    It is a common approach to do a complete page load/redirect when you have finished a request. For example, you can store the output message in a session variable, redirect the user and then check if there are any messages to output.

    Sample:

    [...]
    $sql->execute(); 
    $sql->close();
    $con->close();
    $_SESSION['userpic'] = $userpic;
    $_SESSION['messages'] = '<div id = "check"> Your image was succesfully uploaded</div>';
    header("Location: index.php");
    

    Then, somewhere in your index.php where you want to the message to be, you add something like this:

    if (isset($_SESSION['messages']) and strlen($_SESSION['messages']) > 0) {
        echo $_SESSION['messages'];
        unset($_SESSION['messages']);
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度