B_CooperA Posted October 7, 2013 Share Posted October 7, 2013 I know this might been asked before, but my problem is a bit different compared to the other related topic I found in here. So, I have a profile page where user can change his/her profile pic. Here's my function for that: public function createProfileThumb() { if(!empty($_FILES['upload_profile_pic']['name'])) { $target_folder = 'images/thumbnails/'; // Tallennettava kansio $ext = pathinfo($_FILES['upload_profile_pic']['name'], PATHINFO_EXTENSION); $newimg_name = "userprofilepic".$_GET['id'].".".$ext; $upload_image = $target_folder.basename($_FILES['upload_profile_pic']['name']); // Uusi tiedostopaikka if(move_uploaded_file($_FILES['upload_profile_pic']['tmp_name'], $upload_image)) { $thumbnail = $target_folder.$newimg_name; // Thumbnailin nimi // Get new sizes list($width, $height) = getimagesize($upload_image); $newwidth = 300; // Thumbnailin leveys pikseleissä $newheight = 300; // Thumbnailin korkeus pikseleissä // Kuvan lataus $thumb = imagecreatetruecolor($newwidth, $newheight); if( $_FILES['upload_profile_pic']['type'] == "image/jpeg" && $_FILES['upload_profile_pic']['size'] < 3000000) { $source = imagecreatefromjpeg($upload_image); imagecopyresized($thumb, $source, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); imagejpeg($thumb, $thumbnail, 100); $query = "UPDATE users SET profilepic = :profilepic WHERE user_id = :user_id"; $stmt = $this->connect->prepare($query); $stmt->execute(array( ':profilepic' => $newimg_name, ':user_id' => $_SESSION['user_id'] )); if($query) { // REGENERATE THE $_SESSION['profilepic'] SOMEHOW } else { $this->error[] = "Kuvan tallennus epäonnistui"; } } else { $this->error[] = "Kuva on väärässä muodossa (vain .jpg) tai liian suuri"; } // Poistetaan alkuperäinen kuva unlink($upload_image); } else { return false; } } else { $this->error[] = "Kuvaa ei ole valittu"; } return (count($this->error)) ? 0 : 1; } And here's a part of my login script which will save somer user information, including profilepic, in to sessions. public function fetchInfo() { $query = "SELECT * FROM users WHERE email = :email AND activation_token IS NULL"; $stmt = $this->connect->prepare($query); $stmt->execute(array( ':email' => $this->email, )); if($stmt->rowCount() == 0) { $this->error[] = "Väärä käyttäjätunnus tai salasana"; return 0; } else { $row = $stmt->fetch(PDO::FETCH_ASSOC); $_SESSION['user_id'] = $row['user_id']; $_SESSION['email'] = $row['email']; $_SESSION['name'] = $row['name']; $_SESSION['profilepic'] = $row['profilepic']; } if (Register::cryptPass($this->password) != $row['password']) { $this->error[] = "Virheelliset kirjautumistiedot"; } else { return true; } return count($this->error) ? 0 : 1; } My main problem is that every time user does change his/her profilepic, it will show up as a blank image until I log my self out destroying the session and log in back. So how will I some sort of "Regenerate" the picture inside the session superglobal? My thumbnail function will obviously create a thumbnail from that uploaded picture, but also deletes the original picture and renames the new thumbnail to match up the users id. So if my users auto incremented user_id value in users table is 1, it will rename it to userprofilepic1.jpg. That will save me a lot of memory, since there's only one picture per user saved each and every time user changes the profile picture. Link to comment https://forums.phpfreaks.com/topic/282783-profilepic-in-session-how-to-update/ Share on other sites More sharing options...
Ch0cu3r Posted October 7, 2013 Share Posted October 7, 2013 Just set the $_SESSION['profilepic'] to the new profilepic when the image has been uploaded. $_SESSION['profilepic'] = $newimg_name; Link to comment https://forums.phpfreaks.com/topic/282783-profilepic-in-session-how-to-update/#findComment-1452964 Share on other sites More sharing options...
B_CooperA Posted October 7, 2013 Author Share Posted October 7, 2013 Just set the $_SESSION['profilepic'] to the new profilepic when the image has been uploaded. $_SESSION['profilepic'] = $newimg_name; Wow, didn't know it was that easy:D Thanks a lot:) Link to comment https://forums.phpfreaks.com/topic/282783-profilepic-in-session-how-to-update/#findComment-1452965 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.