Re: Admin auto login for a cron job
Quote:
Originally Posted by
Robbie_79
I have the Admin Profiles addon installed, maybe thats whats makes the difference?
yes, this makes a great difference
1) if you have one, you have to edit /admin/init_includes/overrides/init_admin_auth.php in the same way as /admin/init_includes/init_admin_auth.php
2) you have to create an admin user with id==13 ( define('CRON_ADMIN_USER_ID', '13'); ); I did it via phpMyAdmin
3) you must grant permissions to admin-user 13 for the cron1.php via admin/admin_control.php?adminID=13
4) logout & try it via web-browser
5) now the cron-world should be OK
Re: Admin auto login for a cron job
aah great.
If I only checked the AdminProfiles installation for overrides a bit earlyer :blush:
thanks Hugo! u were a great help to me ;)
Any particular reason you choose ID 13 for cron_user?
Re: Admin auto login for a cron job
Quote:
Originally Posted by
Robbie_79
Any particular reason you choose ID 13 for cron_user?
NO, it's only the number in the name
Re: Admin auto login for a cron job
Thanks for this, very useful.
To further secure it and avaoid people being eble to get to the admin without authentication I added:
if ($_SERVER['REMOTE_ADDR'] == $_SERVER['SERVER_ADDR']) {
define('CRON_ADMIN_USER_ID', '999');
}
So that only local scripts would be let through
Re: Admin auto login for a cron job
Wouldn't it be better to put this test in:
/admin/includes/init_includes/overrides/init_admin_auth.php
rather than the script for the cron job?
Then if you make any future cron jobs they will have to be called locally too.
Re: Admin auto login for a cron job
Dr Byte's solution works well for me but I thought I'd add a little caveat which might save somebody some time.
If you run your php program directly as a cron job it won't have the right working directory and won't find /includes/config.php so it will fail with;
Quote:
ERROR: admin/includes/configure.php file not found. Suggest running zc_install/index.php?
To avoid this you need to tell cron to change directory before invoking PHP to run the program, so your cron command should read
Code:
cd "public_html/admin"; /usr/local/bin/php my_program.php
Remember to leave a space between your path to PHP and the program name, you are invoking PHP with the program name as a parameter.
I hope this helps someone. :smile:
Re: Admin auto login for a cron job
Hi Hugo...
I am unclear on what needs to be added to the init_admin_auth.php file in your example do I just need to define the CRON_ADMIN_USER_ID?
I have already added one to the database via SQL so now I just need to figure out this part and I am golden.
Thanks in advance.
Got toast!
Re: Admin auto login for a cron job
hey - I'm trying to get a cron job to work too now. I keep getting an error in sessions.php so I'm guessing it is failing at authenticating the user or something. Anyone still around that knows how to do this and can help? I'm desperate for help!
Re: Admin auto login for a cron job
Everyone - I got this working too with donothing's help! He/She rocks! This is making a huge difference for me and I greatly appreciate it.
Re: Admin auto login for a cron job
Quote:
Originally Posted by
DrByte
Here's one approach, which has basic security around it. You can enhance it further if you wish, but this should work as-is:
1. In your cron PHP script that calls application_top, put this *before* the call to application_top:
*snip*
2. In your /admin/init_includes/init_admin_auth.php script, add the new lines as shown below:
**snip**
I tried this, but in the e-mail that I get when the cron runs, it says this:
Quote:
<!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" dir="ltr" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>***</title> <link href="includes/stylesheet.css" rel="stylesheet" type="text/css" /> <meta name="robot" content="noindex, nofollow" /> </head> <body id="login" onload="document.getElementById('admin_name').focus()">
<form name="login" action="https://www.***.com/storemanager/login.php?zenAdminID=9s5nqcqspgpfgd5v3vls43lor5" method="post">
<fieldset>
<legend>Admin Login</legend>
<label class="loginLabel" for="admin_name">Admin Username:</label> <input style="float: left" type="text" id="admin_name" name="admin_name" value="" /> <br class="clearBoth" />
<label class="loginLabel" for="admin_pass">Admin Password:</label> <input style="float: left" type="password" id="admin_pass" name="admin_pass" value="" /> <br class="clearBoth" />
<input type="hidden" name="securityToken" value="bcbc7b1f6748bb93cb3aae681b130bfd">
<input type="submit" name="submit" class="button" value="Login" />
<a style="float: right;" href="https://www.***.com/storemanager/password_forgotten.php?zenAdminID=9s5nqcqspgpfgd5v3vls43lor5">Resend Password</a> </fieldset> </form> </body> </html>
Is there something else I can try?