Change Profile everytime login
-
One more newbie question please…
I promise I am searching this site before posting my questions!
??
I’ve registered some test users and whenever I login with their username/password, WordPress brings me to the “Change Profile” page. I think this will confuse my bloggers. Can I change it so that it doesn’t default to the profile page, but instead defaults to the BLOG and they are logged in and ready to post?
That’s how this WordPress help blog works!
-
Modify the file
wp-login.php
. Look for “case: ‘login'” and beforefunction login()
add the line:
$redirect_to= get_settings('siteurl');
This will return the users to your main blog page.
RegardsThere is no fuction(login) under case:login
Here is what I have:
<?php
require(‘./wp-config.php’);
function login($username, $password, $already_md5 = false) {
global $wpdb, $error, $tableusers;
if ( !$username )
return false;
if ( !$password ) {
$error = __(‘Error: The password field is empty.’);
return false;
}
$login = $wpdb->get_row(“SELECT ID, user_login, user_pass FROM $tableusers WHERE user_login = ‘$username'”);
if (!$login) {
$error = __(‘Error: Wrong login.’);
$pwd = ”;
return false;
} else {
if ( ($login->user_login == $username && $login->user_pass == $password) || ($already_md5 && $login->user_login == $username && md5($login->user_pass) == $password) ) {
return true;
} else {
$error = __(‘Error: Incorrect password.’);
$pwd = ”;
return false;
}
}
}
function wp_mail($to, $subject, $message, $headers = ”, $more = ”) {
if ( function_exists(‘mb_send_mail’) )
return mb_send_mail($to, $subject, $message, $headers, $more);
else
return mail($to, $subject, $message, $headers, $more);
}
if (!function_exists(‘add_magic_quotes’)) {
function add_magic_quotes($array) {
foreach ($array as $k => $v) {
if (is_array($v)) { $array[$k] = add_magic_quotes($v);
} else {
$array[$k] = addslashes($v);
}
}
return $array;
}
}
if (!get_magic_quotes_gpc()) {
$_GET = add_magic_quotes($_GET);
$_POST = add_magic_quotes($_POST);
$_COOKIE = add_magic_quotes($_COOKIE);
}
$wpvarstoreset = array(‘action’);
for ($i = 0; $i < count($wpvarstoreset); $i = $i + 1) {
$wpvar = $wpvarstoreset[$i];
if (!isset($$wpvar)) {
if (empty($_POST[“$wpvar”])) {
if (empty($_GET[“$wpvar”])) {
$$wpvar = ”;
} else {
$$wpvar = $_GET[“$wpvar”];
} } else {
$$wpvar = $_POST[“$wpvar”];
}
}
}
$error = ”;
// If someone has moved WordPress let’s try to detect it
if ( dirname(‘https://’ . $_SERVER[‘HTTP_HOST’] . $_SERVER[‘REQUEST_URI’]) != get_settings(‘siteurl’) )
update_option(‘siteurl’, dirname(‘https://’ . $_SERVER[‘HTTP_HOST’] . $_SERVER[‘REQUEST_URI’]) );
switch($action) {
case ‘logout’:
setcookie(‘wordpressuser_’ . $cookiehash, ‘ ‘, time() – 31536000, COOKIEPATH);
setcookie(‘wordpresspass_’ . $cookiehash, ‘ ‘, time() – 31536000, COOKIEPATH);
header(‘Expires: Wed, 11 Jan 1984 05:00:00 GMT’);
header(‘Last-Modified: ‘ . gmdate(‘D, d M Y H:i:s’) . ‘ GMT’);
header(‘Cache-Control: no-cache, must-revalidate’);
header(‘Pragma: no-cache’);
if ($is_IIS)
header(‘Refresh: 0;url=wp-login.php’);
else
header(‘Location: wp-login.php’);
exit();
break;
case ‘lostpassword’:
?>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”
“https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”https://www.w3.org/1999/xhtml”>
<head>
<title>WordPress » <?php _e(‘Lost Password’) ?></title>
<meta http-equiv=”Content-Type” content=”text/html; charset=<?php bloginfo(‘charset’); ?>” />
<link rel=”stylesheet” href=”wp-admin/wp-admin.css” type=”text/css” />
<script type=”text/javascript”> function focusit() {
// focus on first input field
document.getElementById(‘user_login’).focus();
}
window.onload = focusit;
</script>
</head>
<body>
<div id=”login”>
<h1>WordPress</h1>
<?php _e(‘Please enter your information here. We will send you a new password.’) ?>
<?php
if ($error)
echo “<div id=’loginerror’>$error</div>”;
?>
<form name=”lostpass” action=”wp-login.php” method=”post” id=”lostpass”>
<input type=”hidden” name=”action” value=”retrievepassword” />
<label><?php _e(‘Login’) ?>: <input type=”text” name=”user_login” id=”user_login” value=”” size=”12″ tabindex=”1″ /></label>
<label><?php _e(‘E-mail’) ?>: <input type=”text” name=”email” id=”email” value=”” size=”12″ tabindex=”2″ /></label>
<p class=”submit”><input type=”submit” name=”submit” value=”<?php _e(‘Retrieve Password’); ?> »” tabindex=”3″ />
</form>
</div>
</body>
</html>
<?php
break;
case ‘retrievepassword’:
$user_data = get_userdatabylogin($_POST[‘user_login’]);
// redefining user_login ensures we return the right case in the email
$user_login = $user_data->user_login;
$user_email = $user_data->user_email;
if (!$user_email || $user_email != $_POST[’email’])
die(sprintf(__(‘Sorry, that user does not seem to exist in our database. Perhaps you have the wrong username or e-mail address? Try again.’), ‘wp-login.php?action=lostpassword’));
// Generate something random for a password… md5’ing current time with a rand salt
$user_pass = substr( MD5(‘time’ . rand(1, 16000) ), 0, 6);
// now insert the new pass md5’d into the db
$wpdb->query(“UPDATE $tableusers SET user_pass = MD5(‘$user_pass’) WHERE user_login = ‘$user_login'”);
$message = __(‘Login’) . “: $user_login\r\n”;
$message .= __(‘Password’) . “: $user_pass\r\n”;
$message .= get_settings(‘siteurl’) . ‘/wp-login.php’;
$m = wp_mail($user_email, sprintf(__(“[%s] Your login and password”), get_settings(‘blogname’)), $message);
if ($m == false) {
echo ” . __(‘The e-mail could not be sent.’) . “
\n”;
echo __(‘Possible reason: your host may have disabled the mail() function…’) . “”;
die();
} else {
echo ” . sprintf(__(“The e-mail was sent successfully to %s’s e-mail address.”), $user_login) . ‘
‘;
echo “” . __(‘Click here to login!’) . ‘‘;
// send a copy of password change notification to the admin
wp_mail(get_settings(‘admin_email’), sprintf(__(‘[%s] Password Lost/Change’), get_settings(‘blogname’)), sprintf(__(‘Password Lost and Changed for user: %s’), $user_login));
die();
}
break;
case ‘login’ :
default:
if( !empty($_POST) ) {
$log = $_POST[‘log’];
$pwd = md5($_POST[‘pwd’]);
$redirect_to = preg_replace(‘|[^a-z0-9-~+_.?#=&;,/:]|i’, ”, $_POST[‘redirect_to’]);
}
$user = get_userdatabylogin($log);
if (0 == $user->user_level) {
$redirect_to = get_settings(‘siteurl’) . ‘/wp-admin/profile.php’;
}
if ( !login($log, $pwd) ) {
header(‘Expires: Wed, 11 Jan 1984 05:00:00 GMT’);
header(‘Last-Modified: ‘ . gmdate(‘D, d M Y H:i:s’) . ‘ GMT’);
header(‘Cache-Control: no-cache, must-revalidate’);
header(‘Pragma: no-cache’);
} else {
$user_login = $log;
$user_pass = $pwd;
setcookie(‘wordpressuser_’.$cookiehash, $user_login, time() + 31536000, COOKIEPATH);
setcookie(‘wordpresspass_’.$cookiehash, md5($user_pass), time() + 31536000, COOKIEPATH);
header(‘Expires: Wed, 11 Jan 1984 05:00:00 GMT’);
header(‘Last-Modified: ‘ . gmdate(‘D, d M Y H:i:s’) . ‘ GMT’);
header(‘Cache-Control: no-cache, must-revalidate’);
header(‘Pragma: no-cache’);
if ($is_IIS)
header(“Refresh: 0;url=$redirect_to”);
else
header(“Location: $redirect_to”);
}
if( !empty($_COOKIE[‘wordpressuser_’ . $cookiehash]) && !empty($_COOKIE[‘wordpresspass_’ . $cookiehash]) ) {
$user_login = $_COOKIE[‘wordpressuser_’ . $cookiehash];
$user_pass_md5 = $_COOKIE[‘wordpresspass_’ . $cookiehash];
}
if ( !login($user_login, $user_pass_md5, true) ) {
if ( !empty($_COOKIE[‘wordpressuser_’ . $cookiehash]) )
$error = ‘Your session has expired.’;
} else {
header(‘Expires: Wed, 5 Jun 1979 23:41:00 GMT’); // Michel’s birthday
header(‘Last-Modified: ‘ . gmdate(‘D, d M Y H:i:s’) . ‘ GMT’);
header(‘Cache-Control: no-cache, must-revalidate’);
header(‘Pragma: no-cache’);
header(‘Location: wp-admin/’);
exit();
}
?>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN”
“https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”https://www.w3.org/1999/xhtml”>
<head>
<title>WordPress › <?php _e(‘Login’) ?></title>
<meta http-equiv=”Content-Type” content=”text/html; charset=<?php bloginfo(‘charset’); ?>” />
<link rel=”stylesheet” href=”wp-admin/wp-admin.css” type=”text/css” />
<script type=”text/javascript”>
function focusit() {
// focus on first input field
document.getElementById(‘log’).focus();
}
window.onload = focusit;
</script>
</head>
<body>
<div id=”login”>
<h1>WordPress</h1>
<?php
if ($error)
echo “<div id=’login_error’>$error</div>”;
?>
<form name=”loginform” id=”loginform” action=”wp-login.php?action=login” method=”post”>
<label><?php _e(‘Login’) ?>: <input type=”text” name=”log” id=”log” value=”” size=”20″ tabindex=”1″ /></label>
<label><?php _e(‘Password’) ?>: <input type=”password” name=”pwd” value=”” size=”20″ tabindex=”2″ /></label>
<p class=”submit”><input type=”submit” name=”submit” value=”<?php _e(‘Login’); ?> »” tabindex=”3″ /anyone have any ideas why when my users login they are always taken to the “update profile” page. Very distracting to the users.
Thanks!If your users are at a user level too low to post, they will be taken to their profile page instead of the post page. What are their user levels?
user levels by default are 0.
Can I change the default user level higher?
I want my wife and I to be able to post new topics and everyone else to just be able to comment.
Suggestions?Refer to this: https://wiki.www.ads-software.com/User%20Levels
You should probably set their user level at 2.Your suggestion yielded undesireable results. ??
The user still defaulted to the profile page, but now the user had more rights.
I want the user to automatically go to the blog when they login, not to the profile page.
In order to accomplish this, the user has to click on the “view site” hyperlink, and I want that to happen automatically.
Any ideas?Use phpmyadmin, and browse the wp_user table.
Edit the line for your wife, and try changing the ‘user_level’ to 10I think I should explain again what I am trying to do.
I have a BLOG that I only want my wife and I to be able to post new topics to. I’ve figured this part out.
All other registered users can only comment on pre-existing topics. This also is currently working.
The problem I have is that when a user logs in, they are automatically redirected to the “Edit Profile” page. This is undesireable.
I want them to be put back on the BLOG page when they login.
Any suggestions on how to get them to be redirected to the BLOG and NOT to the “Profile Edit” page?
Cypher suggested this:
Modify the file wp-login.php. Look for “case: ‘login'” and before function login() add the line:
$redirect_to= get_settings(‘siteurl’);
This will return the users to your main blog page.
But I couldn’t figure out what he meant.Out of curiosity, why is it undesirable? Basically, the login function is working exactly as it should. But, you’ve installed a hack that only registered user can post on comments. And that is why you want then to be taken back to the blog page after logging in. This, however, would require an additional hack as it is the default for wp-login to redirect the user to the profile page If their level is below 2 and to the post page if their level is two or higher. Your users should have cookies enabled. If they did, they would only have to login once and see that profile edit page once. So, again I ask, why is this default behavior undesirable?
I do have cookies enabled and yet it still sends them to the profile page.
I agree that I installed a hack to only allow registered users to post. This was because the first day I had my test blog up (test blog – noone knew about this blog but me) I got a TON of spam comments!
I thought that requiring a login was a good way to prevent spam bots from posting.
I don’t want to give my users level 2 access because I don’t want them to be able to post new topics. I only want them to comment on existing ones.No, I understand entirely. What I’m saying is, they should only have to click the login link once. Thanks to cookies, they don’t have to login every time they go to your site. So, what I was wondering is why that one (once a month maybe) login that redirects them to the profile page is undesirable?
You’re right! The user doesn’t have to login every time. Okay, I’m satisfied. ??
I had thought the user had to login every time!
How long does the cookie last until? Any way to make it never expire so that they never have to login again?Cypher – cool fix. Thanks. I was wondering the same thing. However, macmanx has some great points, so I haven’t decided whether I want to change it just yet.
Was the default behavior changed in 1.5? I didn’t install a hack on my site, but you have to login to post comments (which is fine with me, and the ways I’d like it). Just wondering. Thanks again,
Randy
- The topic ‘Change Profile everytime login’ is closed to new replies.