yo aconsejaria un primer login con un humano certificado para hacerlo que deje una cookie con un (id de maquina o llave unica) y (la información de logeo del usuario y/o userAgent minimo) encriptados para siempre, al momento de logearse dos id iguales al mismo tiempo le cae al usuario.
los parentesis (...) fueron para agrupar.
obviamente lo encriptado se tiene que comparar en cada login con la información en el server
las sesiones deben durar poco y se debe mantener un valor random como token en la session, se debe mantener abierta solo por el uso.
en db se guarda el token de la ultima sesion abierta y la fecha, Al abrir session: si la fecha ya esta expirada se puede abrir sesión, si no, se detecta un doble logueo
esta solución no es 100% segura, sí se puede robar la session de php!
lo ideal sería hacerlo por software instalable, aunque al final cualquier sistema es crackeable
mi solución tiene el mismo problema que la de Carlos Petz, solo que a el le pueden robar el toquen que le devuelve el programa y que la mac puede ser alterable xD
--
Luis Mauricio Déleon Barquero