One of my colleagues asked a question that I’ve heard dozens of times over my careers…
What’s a good regular expression for validating email addresses.
Sadly, due to poor standards, poor implementation choices, and just the sheer age of Email, this is a surprisingly tough problem.
The best way to validate an email address is to email it, and get the user to do something. That’s not really feasible if it’s someone just filling in a form.
Failing that, I came up with:
This is the same as suggested by Microsoft, which is gratifying. You can see the logic of it here.
I had an interesting problem; we wanted to log stuff that was happening on a client’s browser. Fair enough, we can use AJAX to do that. However, this had a twist – we wanted to log events that were happening immediately before the page might be redirected to a new location. In other words, the page might unload, and a new page load. What I found was the messages from just before the page unloaded might not be sent to the server; as the page was unloading, the AJAX requests were not being performed. I wondered what I could do about this. Continue reading “Logging client actions near page Unload”
We have a customer who is using Sitecore and the SagePay Pi service to take credit card payments. They were using a multi-page Sitecore Forms form, and weirdly their confirmation emails couldn’t use field values from the first pages of the form. Eventually, we found that the problem was due to the the user’s session being lost, but only if the user was using 3D-secure, and a recent browser. Here’s why…
Continue reading “Don’t be Lax about your SameSite cookies”
I noticed something strange in Sitecore; for most of my nodes (not the Sitecore node!), the 13th Hex character of the identifying GUID is ‘4’.
I had a list of about 50 of these, and my eye was drawn to the pattern. Now, I thought Guids were entirely random, except that the chance of 50 page template IDs all having a 4 at that character was infinitesimal.
Weird. Except it turns out that they’re not random. I had no idea that there are different versions of guids, or than that character defined the version of the GUID.
This requires a test, so I wrote a program to print Guid.NewGuid() a lot:
All of them are 4s.
- GUIDs aren’t entirely random.
- They might not be very random at all, looking at some of the other GUID versions.
- Which is why they shouldn’t be used as a source of entropy for encryption.
- I still have things to learn.
I’ve written before about Azure Backup fails due to Content Testing Screenshots not clearing and the resulting problems with backup size.
That’s not the whole problem though.
Sitecore made some effort to configure some directories to be outside the home folder of the app services, and therefore not subject to backup – but there’s still a lot that shouldn’t be in the backup. Continue reading “Keeping the size of of Sitecore Azure Backups under control”
I tried logging into Sitecore’s App Center, and got the following error:
The credentials used to log in to the Sitecore App Center cannot access the license used on this server
This was in Chrome. Strangely, I discovered that I could log in through Chrome Canary. What’s different?
Continue reading “Sitecore App Center Login Fails”
We have been having a problem with Sitecore in Azure PAAS – it appears that when auto-scaling scales out, App Services are being put into rotation before they have started up. This is causing all sorts of weirdness.
Sitecore support recommended making sure that we had Application Initialization configured. That seems a good idea. I’m not sure why the guys who set up this instance didn’t; perhaps they were unaware of it (and to be fair, it’s something I’ve not looked at before).
Continue reading “Application Initialization for Azure Service Apps (and Sitecore)”
Sitecore’s Federated Experience Manager (FXM) allows non-Sitecore sites to record analytics data into Sitecore. It’s both quite neat, and has a number of problems. I’m going to assume you’ve done a little reading about FXM already, but here’s how it works (in Sitecore 9.0.x).
And the response to that sets up a Sitecore Session ID, Contact ID, and returns element matches, which are stored in Cookies:
The element matches use HTML Element IDs to identify content to a) attach click handlers too, or b) elements to insert content around or in place of.
This is where we hit the first of my problems with FXM… Continue reading “My problems with Sitecore FXM”
We had a problem with Sitecore 9.0.2 in a PAAS environment. Our Azure App Service backups started failing. This was due to the backup size:
Above 10GB you have to use an Azure Storage Account to store your backup, apparently. However, we wondered why our backups had grown so large – they had been a few GB – and why they seemed to be growing. Continue reading “Azure Backup fails due to Content Testing Screenshots not clearing”
Google Tag Manager (GTM) is a tool that lets marketers put code for tracking users/analytics onto a website without having actually change the code of the website. Essentially, Google Tag Manager will inject the code, after the page has loaded. “Tags” in this instance aren’t just #hashtag, but are snippets of code that can record data and send it to third party services.