crea una tabla con los códigos, luego de generados los entregas, cuando un usuario ingrese un código, revisas en la tabla, si exíste, le sumas 1 al respectivo campo del usuario donde almacene sus puntos, luego borras el código de la tabla...
para generar el código, puedes simplemente generar numeros al azar con una función random normal y le aplicas sha256 u otro hash para que sea más largo y de un tamaño fijo todas las veces
sobre generar un hash
http://php.net/manual/es/function.hash.php