Separate Out Real Users

If you install the following plugin and leave that one running for a while… you can see who logged in since using that plugin: http://wordpress.org/extend/plugins/wp-last-login/ That seems to do what you need. As far as I quickly can see it runs on $this->hook( ‘wp_login’ ) and does: $user = get_user_by( ‘login’, $user_login ); update_user_meta( $user->ID, … Read more

Security and Must Use Plugins

I agree with Wyck’s comment. If I can upload files, game over. If I couldn’t upload to mu-plugins chances are that I could upload, and overwrite, the theme’s functions.php or Core files instead. Any of those options work as well or better than a mu-plugin file would. The “also modify the database” part is irrelevant … Read more

Is that a malicious code?

That is most likely a false positive : https://en.wikipedia.org/wiki/Type_I_and_type_II_errors base64_decode is not bad in of itself : https://en.wikipedia.org/wiki/Base64 The plugin is not smart enough to know a legitimate reason to use base64_decode of which there are many.

What’s the proper way to sanitize checkbox value sent to the database

I would use the filter_var() function. It has some predefined filters that you can use depending on what kind of data you are expecting such as string, number, etc. So to sanitize for a number: $sanitizedNum = filter_var($yourVar, FILTER_SANITIZE_NUMBER_INT); For a string you would just change “_NUM_INT” to “_STRING”. Wrap those in a custom function … Read more

Use global variables or function that returns said variables for site-wide private-ish WP settings?

No overriding benefit, other than collision avoidance and safeguard against unintended modification. Not sure if it makes you feel any better but WP core itself has many dependencies on global variables. I’m not saying that’s a good thing; just a fact. Also remember you have a database and functions to handle storing and retrieving options, … Read more

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)