heartonsleeve Posted September 11, 2006 Share Posted September 11, 2006 Okay, I'm working on a site that deals with user profiles and everything is working pretty well.However, when a user tries to update their profile picture I've got it set up to delete their old one (only if the new one uploads successfully) and the session still calls the old one. If the user logs out and logs back in, it works just fine but is there a way I can skip that step? Quote Link to comment Share on other sites More sharing options...
trq Posted September 11, 2006 Share Posted September 11, 2006 Post some code! Quote Link to comment Share on other sites More sharing options...
heartonsleeve Posted September 11, 2006 Author Share Posted September 11, 2006 [code]<?php include $_SERVER['DOCUMENT_ROOT']."/common.php"; function myheader($ptitle){?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title><?php echo ($ptitle); ?></title></head><body onLoad="preloadImages();"><div class="page_body"><div align="right" class="account_area"><?if($_SESSION['login'] == true){?><div class="top_stuff_box"><div class="top_stuff_words">Welcome, <? echo $_SESSION[first_name];?><div class="top_stuff_account"><a href="edit_profile.php">edit profile</a> | <a href="view_profile.php">view profile</a> | <a href="logout.php">logout</a></div></div><div class="top_stuff"><img src="<? echo $_SESSION[profile_pic];?>" alt="<? echo $_SESSION[username];?>" style="padding: 3px; border: 1px solid #6a7f92;" /></div></div></div><? } else {?><div class="top_stuff_box"><div class="top_stuff_words">welcome, Guest<div class="top_stuff_account"><a href="login.php">sign in</a> | <a href="join.php">create an account</a></div></div><div class="top_stuff"><img style="padding: 3px; border: 1px solid #6a7f92;" src="images/guest_pic.gif" alt="sampleprofile" /></div></div></div><?}?>[/code]That's my layout.php page. $_SESSION[profile_pic] is what I'm having trouble with... Quote Link to comment Share on other sites More sharing options...
jefkin Posted September 11, 2006 Share Posted September 11, 2006 More appropriate to post the code that changes the user's image.Probably all you need to do as the last thing in the part that verifies the new image is set$_SESSION['profile_pic'] to their new image.then just to be safe call:session_write_close(); and refresh the page to wherever you need it.Jeff Quote Link to comment Share on other sites More sharing options...
Jenk Posted September 11, 2006 Share Posted September 11, 2006 [code]<?phpsession_regenerate_id(true);?>[/code][/code] Quote Link to comment Share on other sites More sharing options...
heartonsleeve Posted September 11, 2006 Author Share Posted September 11, 2006 Sorry, this is the upload code I'm using.I would use what Jenk suggested but I'm hosted at Godaddy and their php version is older than what regenerate_session_id requires.[code]// Get a specific result from the "example" table$result = mysql_query("SELECT * FROM members WHERE member_id='$_SESSION[member_id]'") or die(mysql_error()); // get the first (and hopefully only) entry from the result$row = mysql_fetch_array( $result );$old_pic = $row['profile_pic'];if ($_FILES['imagefile']['type'] == "image/gif"){ // random 4 digit to add to our file name // some people use date and time in stead of random digit $random_digit=rand(00000,99999); //combine random digit to you file name to create new file name //use dot (.) to combile these two variables $new_file_name=$random_digit . "_" . $_SESSION[username] . "_"; // Where the file is going to be placed $target_path = "users/images/" . $new_file_name; /* Add the original filename to our target path. Result is "uploads/filename.extension" */ $target_path = $target_path . basename( $_FILES['imagefile']['name']); // This is how we will get the temporary file... $_FILES['imagefile']['tmp_name']; $target_path = "users/images/" . $new_file_name; $target_path = $target_path . basename( $_FILES['imagefile']['name']); list($width, $height, $type, $attr) = getimagesize( $_FILES['imagefile']['tmp_name']); if ($width > 65 OR $height > 65){ echo "<h3>Whoa, there</h3><br />Your dimensions are too big. They need to be 65px x 65px. <a href=\"javascript:history.go(-1)\">Go back</a> and try again."; footer(); exit();} if(move_uploaded_file($_FILES['imagefile']['tmp_name'], $target_path)) { echo "The file ". basename( $_FILES['imagefile']['name']). " has been uploaded<br /> <h3>Your new profile picture</h3> <br /><div align=\"center\"><img src=\"".$target_path."\"alt=\"$_SESSION[username]\" style=\"padding: 3px; border: 1px solid #6a7f92;\" /></div> <p><div align=\"center\"><a href=\"view_profile.php\">view your profile</a> | <a href=\"edit_profile.php\">edit your profile</a></div> </p>"; $image = $target_path ; if($row['profile_pic'] == "images/guest_pic.gif"){ echo ""; } elseif (file_exists($old_pic)) { unlink($old_pic); print(""); } else { print(""); } $sql = @mysql_query("UPDATE members SET profile_pic='$image' WHERE member_id='$_SESSION[member_id]'"); if(!$sql){ echo "Error inserting your information into MySQL: ".mysql_error(); } } else{ echo "There was an error uploading the file, please try again!";}}elseif ($_FILES['imagefile']['type'] == "image/jpeg"){ // random 4 digit to add to our file name // some people use date and time in stead of random digit $random_digit=rand(00000,99999); //combine random digit to you file name to create new file name //use dot (.) to combile these two variables $new_file_name=$random_digit . "_" . $_SESSION[username] . "_"; // Where the file is going to be placed $target_path = "users/images/" . $new_file_name; /* Add the original filename to our target path. Result is "uploads/filename.extension" */ $target_path = $target_path . basename( $_FILES['imagefile']['name']); // This is how we will get the temporary file... $_FILES['imagefile']['tmp_name']; $target_path = "users/images/" . $new_file_name; $target_path = $target_path . basename( $_FILES['imagefile']['name']); list($width, $height, $type, $attr) = getimagesize( $_FILES['imagefile']['tmp_name']); if ($width > 65 OR $height > 65){ echo "<h3>Whoa, there</h3><br />Your dimensions are too big. They need to be 65px x 65px. <a href=\"javascript:history.go(-1)\">Go back</a> and try again."; footer(); exit();} if(move_uploaded_file($_FILES['imagefile']['tmp_name'], $target_path)) { echo "The file ". basename( $_FILES['imagefile']['name']). " has been uploaded<br /> <h3>Your new profile picture</h3> <br /><div align=\"center\"><img src=\"".$target_path."\"alt=\"$_SESSION[username]\" style=\"padding: 3px; border: 1px solid #6a7f92;\" /></div> <p><div align=\"center\"><a href=\"view_profile.php\">view your profile</a> | <a href=\"edit_profile.php\">edit your profile</a></div> </p>"; $image = $target_path ; if($row['profile_pic'] == "images/guest_pic.gif"){ echo ""; } elseif (file_exists($old_pic)) { unlink($old_pic); print(""); } else { print(""); } $sql = @mysql_query("UPDATE members SET profile_pic='$image' WHERE member_id='$_SESSION[member_id]'"); if(!$sql){ echo "Error inserting your information into MySQL: ".mysql_error(); } } else{ echo "There was an error uploading the file, please try again!";}} else { echo "<h3>Sorry</h3><br /> we only accept .gif and .jpg profile pictures. <a href=\"javascript:history.go(-1)\">Go back</a> and try a different image."; }[/code] Quote Link to comment Share on other sites More sharing options...
Jenk Posted September 11, 2006 Share Posted September 11, 2006 reading user notes on php.net helps..[code]<?phpsession_start();$old_sess = $_SESSION;if (isset($_COOKIE[session_name()])) setcookie(session_name(), '', time()-999, '/');session_destroy();session_start();$_SESSION = $old_sess;?>[/code] Quote Link to comment Share on other sites More sharing options...
heartonsleeve Posted September 11, 2006 Author Share Posted September 11, 2006 Sorry, I'm having trouble getting that to work.This is what my session looks like[code]<?phpsession_start();session_name('IndieThreads');header("Cache-control: private"); // Fix for IE?>[/code]Do I put that code in there or on my layout.php page or my picture upload page? Quote Link to comment Share on other sites More sharing options...
Jenk Posted September 11, 2006 Share Posted September 11, 2006 You want to call session_name() before you call session_start() by the way.[code]<?phpsession_name('IndieThreads');session_start();$old_sess = $_SESSION;if (isset($_COOKIE[session_name()])) setcookie(session_name(), '', time()-999, '/');session_destroy();session_start();$_SESSION = $old_sess;?>[/code] Quote Link to comment Share on other sites More sharing options...
heartonsleeve Posted September 11, 2006 Author Share Posted September 11, 2006 Okay, I tried that but now it's just killing all of my information.When I log in it takes me to my welcome page but if I try to go anywhere from there it takes me back to the login page.This is my login funtion. Do I need to change something in there as well?[code]function login_check(){ if($_SESSION['login'] != TRUE){ myheader("Login Required!"); include $_SERVER['DOCUMENT_ROOT']. '/html/forms/login_form.html'; footer(); exit(); }}[/code] Quote Link to comment Share on other sites More sharing options...
heartonsleeve Posted September 11, 2006 Author Share Posted September 11, 2006 anything? Quote Link to comment Share on other sites More sharing options...
heartonsleeve Posted September 11, 2006 Author Share Posted September 11, 2006 *bump*I'd really appreciate a little more help with this. Quote Link to comment Share on other sites More sharing options...
emehrkay Posted September 12, 2006 Share Posted September 12, 2006 what happens when you just set the session to the new value?$_SESSION['val'] = "newValue"; Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.