metallissimus wrote:I had a friend (who had the problem on my site as well) check:
Thanks. Yep, I should look into it. Realistically, I already have it narrowed down, because the response "thnx" is triggered as an anti-bot response. Exactly why they fail on these few devices, is unclear, but it would be one of the following two Javascript functions. I'll just write em down for some clarity and why they are useful:
1. The 'focus' event below modifies the value of two hidden "honeypot" fields in X3 contact form as soon as user focuses on any visible input or textarea. Since user would need to focus on at least one input or textarea, they would always get populated correctly for human visitors. Bots will either try to automatically populate the fields incorrectly, or at least they would never get populated as long as the bot does not trigger the focus event. Basically, the event below needs to get triggered, else the mailer PHP will refuse to send and simply return a false "thnx" response.
form.one('focus', 'input, textarea', function(e) {
if(this == honey1 || this == honey2) return; // bail out before setting values
honey1.value = '';
honey2.value = atob('YWxwYWNh'); // alpaca
});
2. The 'focus' event below on the hidden "honeypot" inputs should never get triggered for human visitors, because the inputs are hidden. If they are focused, it must be by bots that don't know they are hidden. If they are focused, the mailer PHP will refuse to send and simply return a false "thnx" response.
$(honey1).add(honey2).one('focus', function(e) {
is_bot = true;
});
Looking at it right now, it almost has to be one of the above. Would be easy to diagnose from here if I could reproduce it, but until then, hopefully we can have some assistance from one of your clients.
For starters, can you please try this: Open
app/x3.api.php and find around
line 57:
if(empty($_POST['honey1'])
&& $_POST['honey2'] == 'alpaca'
&& (!$email || filter_var($email, FILTER_VALIDATE_EMAIL))
&& !empty($_POST['page'])
) {
Just replace that entire chunk of code above with this:
if(!$email || filter_var($email, FILTER_VALIDATE_EMAIL)) {
Ask your client to try. It should definitely work, because the anti-bot honeypot validation will be ignored. In this case, I know 100% sure it's one of the functions noted above. If it still doesn't work however, it would mean that the visitors browser is blockings POST items or the email they entered is invalid (unlikely).