Te va a ser difícil. No se como están facebook y tiwtter con los referers pero por defecto, los sitios con HTTPS (ambos sitios lo usan by default), NO pasan el referer a un sitio externo. Es decir, no podrás obtener el valor. Hay ciertas excepciones como Google en el que ponen la etiqueta
<meta name="referrer" content="origin">
Que si que permite al sitio visitado obtener el referer (de donde viene) pero no creo que ni facebook ni twitter lo apliquen por cuestiones de privacidad.
La solución (algo dramática) seria poner links personalizados para saber de donde viene. En plan si posteas en facebook el enlace le añades al final
?ref=fb o en twitter
?ref=tw.
Luego es solo buscar el atributo ($_GET) 'ref' y mirar de donde viene.
Saludos