wp_setcookie() and wp_clearcookie(). Set cookies for both siteurl and home if they are not the same. Update cookies whenever home or siteurl change.
git-svn-id: http://svn.automattic.com/wordpress/trunk@2107 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
e8aff31d6e
commit
122c114cd6
|
@ -40,6 +40,10 @@ case 'update':
|
||||||
|
|
||||||
$options = $wpdb->get_results("SELECT $wpdb->options.option_id, option_name, option_type, option_value, option_admin_level FROM $wpdb->options WHERE option_name IN ($option_names)");
|
$options = $wpdb->get_results("SELECT $wpdb->options.option_id, option_name, option_type, option_value, option_admin_level FROM $wpdb->options WHERE option_name IN ($option_names)");
|
||||||
|
|
||||||
|
// Save for later.
|
||||||
|
$old_siteurl = get_settings('siteurl');
|
||||||
|
$old_home = get_settings('home');
|
||||||
|
|
||||||
// HACK
|
// HACK
|
||||||
// Options that if not there have 0 value but need to be something like "closed"
|
// Options that if not there have 0 value but need to be something like "closed"
|
||||||
$nonbools = array('default_ping_status', 'default_comment_status');
|
$nonbools = array('default_ping_status', 'default_comment_status');
|
||||||
|
@ -56,8 +60,10 @@ case 'update':
|
||||||
$new_val = 0;
|
$new_val = 0;
|
||||||
}
|
}
|
||||||
if( in_array($option->option_name, $nonbools) && $new_val == '0' ) $new_val = 'closed';
|
if( in_array($option->option_name, $nonbools) && $new_val == '0' ) $new_val = 'closed';
|
||||||
if ($new_val !== $old_val)
|
if ($new_val !== $old_val) {
|
||||||
$result = $wpdb->query("UPDATE $wpdb->options SET option_value = '$new_val' WHERE option_name = '$option->option_name'");
|
$result = $wpdb->query("UPDATE $wpdb->options SET option_value = '$new_val' WHERE option_name = '$option->option_name'");
|
||||||
|
$any_changed++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
unset($cache_settings); // so they will be re-read
|
unset($cache_settings); // so they will be re-read
|
||||||
|
@ -65,12 +71,20 @@ case 'update':
|
||||||
} // end if options
|
} // end if options
|
||||||
|
|
||||||
if ($any_changed) {
|
if ($any_changed) {
|
||||||
$message = sprintf(__('%d setting(s) saved... '), $any_changed);
|
// If siteurl or home changed, reset cookies.
|
||||||
|
if ( get_settings('siteurl') != $old_siteurl || get_settings('home') != $old_home ) {
|
||||||
|
// Get currently logged in user and password.
|
||||||
|
get_currentuserinfo();
|
||||||
|
// Clear cookies for old paths.
|
||||||
|
wp_clearcookie();
|
||||||
|
// Set cookies for new paths.
|
||||||
|
wp_setcookie($user_login, $user_pass_md5, true, get_settings('home'), get_settings('siteurl'));
|
||||||
|
}
|
||||||
|
|
||||||
|
//$message = sprintf(__('%d setting(s) saved... '), $any_changed);
|
||||||
}
|
}
|
||||||
|
|
||||||
//$referred = str_replace('?updated=true' , '', $_SERVER['HTTP_REFERER']);
|
|
||||||
$referred = remove_query_arg('updated' , $_SERVER['HTTP_REFERER']);
|
$referred = remove_query_arg('updated' , $_SERVER['HTTP_REFERER']);
|
||||||
//$goback = str_replace('?updated=true', '', $_SERVER['HTTP_REFERER']) . '?updated=true';
|
|
||||||
$goback = add_query_arg('updated', 'true', $_SERVER['HTTP_REFERER']);
|
$goback = add_query_arg('updated', 'true', $_SERVER['HTTP_REFERER']);
|
||||||
$goback = preg_replace('|[^a-z0-9-~+_.?#=&;,/:]|i', '', $goback);
|
$goback = preg_replace('|[^a-z0-9-~+_.?#=&;,/:]|i', '', $goback);
|
||||||
header('Location: ' . $goback);
|
header('Location: ' . $goback);
|
||||||
|
|
|
@ -62,8 +62,8 @@ case 'update':
|
||||||
die (__("<strong>ERROR</strong>: you typed two different passwords. Go back to correct that."));
|
die (__("<strong>ERROR</strong>: you typed two different passwords. Go back to correct that."));
|
||||||
$newuser_pass = $_POST["pass1"];
|
$newuser_pass = $_POST["pass1"];
|
||||||
$updatepassword = "user_pass=MD5('$newuser_pass'), ";
|
$updatepassword = "user_pass=MD5('$newuser_pass'), ";
|
||||||
setcookie('wordpresspass_' . COOKIEHASH, " ", time() - 31536000, COOKIEPATH);
|
wp_clearcookie();
|
||||||
setcookie('wordpresspass_' . COOKIEHASH, md5(md5($newuser_pass)), time() + 31536000, COOKIEPATH);
|
wp_setcookie($user_login, $newuser_pass);
|
||||||
}
|
}
|
||||||
|
|
||||||
$newuser_firstname = wp_specialchars($_POST['newuser_firstname']);
|
$newuser_firstname = wp_specialchars($_POST['newuser_firstname']);
|
||||||
|
|
|
@ -1628,4 +1628,37 @@ function add_magic_quotes($array) {
|
||||||
return $array;
|
return $array;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function wp_setcookie($username, $password, $already_md5 = false, $home = '', $siteurl = '') {
|
||||||
|
if ( ! $already_md5)
|
||||||
|
$password = md5(md5($password)); // Double hash the password in the cookie.
|
||||||
|
|
||||||
|
if (empty($home))
|
||||||
|
$cookiepath = COOKIEPATH;
|
||||||
|
else
|
||||||
|
$cookiepath = preg_replace('|https?://[^/]+|i', '', $home . '/' );
|
||||||
|
|
||||||
|
if (empty($siteurl)) {
|
||||||
|
$sitecookiepath = SITECOOKIEPATH;
|
||||||
|
$cookiehash = COOKIEHASH;
|
||||||
|
} else {
|
||||||
|
$sitecookiepath = preg_replace('|https?://[^/]+|i', '', $siteurl . '/' );
|
||||||
|
$cookiehash = md5($siteurl);
|
||||||
|
}
|
||||||
|
|
||||||
|
setcookie('wordpressuser_'. $cookiehash, $username, time() + 31536000, $cookiepath);
|
||||||
|
setcookie('wordpresspass_'. $cookiehash, $password, time() + 31536000, $cookiepath);
|
||||||
|
|
||||||
|
if ( $cookiepath != $sitecookiepath ) {
|
||||||
|
setcookie('wordpressuser_'. $cookiehash, $username, time() + 31536000, $sitecookiepath);
|
||||||
|
setcookie('wordpresspass_'. $cookiehash, $password, time() + 31536000, $sitecookiepath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function wp_clearcookie() {
|
||||||
|
setcookie('wordpressuser_' . COOKIEHASH, ' ', time() - 31536000, COOKIEPATH);
|
||||||
|
setcookie('wordpresspass_' . COOKIEHASH, ' ', time() - 31536000, COOKIEPATH);
|
||||||
|
setcookie('wordpressuser_' . COOKIEHASH, ' ', time() - 31536000, SITECOOKIEPATH);
|
||||||
|
setcookie('wordpresspass_' . COOKIEHASH, ' ', time() - 31536000, SITECOOKIEPATH);
|
||||||
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -113,6 +113,7 @@ foreach($wpsmiliestrans as $smiley => $img) {
|
||||||
|
|
||||||
// Path for cookies
|
// Path for cookies
|
||||||
define('COOKIEPATH', preg_replace('|https?://[^/]+|i', '', get_settings('home') . '/' ) );
|
define('COOKIEPATH', preg_replace('|https?://[^/]+|i', '', get_settings('home') . '/' ) );
|
||||||
|
define('SITECOOKIEPATH', preg_replace('|https?://[^/]+|i', '', get_settings('siteurl') . '/' ) );
|
||||||
|
|
||||||
// Some default filters
|
// Some default filters
|
||||||
add_filter('bloginfo','wp_specialchars');
|
add_filter('bloginfo','wp_specialchars');
|
||||||
|
|
|
@ -20,13 +20,11 @@ switch($action) {
|
||||||
|
|
||||||
case 'logout':
|
case 'logout':
|
||||||
|
|
||||||
setcookie('wordpressuser_' . COOKIEHASH, ' ', time() - 31536000, COOKIEPATH);
|
wp_clearcookie();
|
||||||
setcookie('wordpresspass_' . COOKIEHASH, ' ', time() - 31536000, COOKIEPATH);
|
|
||||||
header('Expires: Mon, 11 Jan 1984 05:00:00 GMT');
|
header('Expires: Mon, 11 Jan 1984 05:00:00 GMT');
|
||||||
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
|
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
|
||||||
header('Cache-Control: no-cache, must-revalidate, max-age=0');
|
header('Cache-Control: no-cache, must-revalidate, max-age=0');
|
||||||
header('Pragma: no-cache');
|
header('Pragma: no-cache');
|
||||||
|
|
||||||
header('Location: wp-login.php');
|
header('Location: wp-login.php');
|
||||||
exit();
|
exit();
|
||||||
|
|
||||||
|
@ -134,9 +132,7 @@ default:
|
||||||
|
|
||||||
if ( wp_login($user_login, $user_pass, $using_cookie) ) {
|
if ( wp_login($user_login, $user_pass, $using_cookie) ) {
|
||||||
if (! $using_cookie) {
|
if (! $using_cookie) {
|
||||||
$user_pass = md5(md5($user_pass)); // Double hash the password in the cookie.
|
wp_setcookie($user_login, $user_pass);
|
||||||
setcookie('wordpressuser_'. COOKIEHASH, $user_login, time() + 31536000, COOKIEPATH);
|
|
||||||
setcookie('wordpresspass_'. COOKIEHASH, $user_pass, time() + 31536000, COOKIEPATH);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
header("Location: $redirect_to");
|
header("Location: $redirect_to");
|
||||||
|
|
Loading…
Reference in New Issue