Q:

PHP auto assign IP

I'm creating a little module for my web application and I need something that automatically assign an IP from a pool I implemented.
I tried to add the database as:
pool = 172.16.0.0
mask = 20

I want to add users and assign automatically 1 ip from this pool and do no repeat it.
Basically I'm doing and "auto-config" module for our technicians that only have to enter the client name, client id and client location.
I was thinking about IP segmentation, for example
in the database assign:
segment1 = 172
segment2 = 16
segment3 = 0

And in another database insert the 3 first segments and append the last number between 1-254
Idk if anyone tried this before (surely yes) and how I can do it.
Thanks in advance.

A:

Ok,
I got it with the help of ip2long
I save in the database the first IP from the pool and the last one.
Then I convert it to decimal with ip2long 
When I want to use I check the last pool ip and the last_used_ip and just do last_used_ip+1.
if($checkCliente == 0){
        if($checkTelefono == 0){
                //Faltan checks para comprobar usuario Asterisk y PPPoE
                $pool_result = $conn->query("SELECT ultima,ip_final FROM ip_pools WHERE id='$pool_id'");
                if($pool_result ->num_rows == '1'){
                        $row = $pool_result->fetch_assoc();
                        $ultima_ip = ip2long($row['ultima']);
                        $ip_final = ip2long($row['ip_final']);
                        if($ultima_ip !== $ip_final){

                                $ip_gestion = (ip2long($row['ultima']) + 1);
                                $ip_gestion = long2ip($ip_gestion);
                                if($conn->query("INSERT INTO clients(nombre,num_cliente,telefono,poblacion,direccion,ip_gestion,password,usuario_pppoe,usuario_asterisk) VALUES('$nombre', '$num_cliente', '$telefono', '$poblacion', '$direccion', '$ip_gestion', '$password', '$usuario_pppoe', '$usuario_asterisk')")){
                                        $conn->query("UPDATE ip_pools SET ultima='$ip_gestion'");
                                        $alert = 'success';
                                        $mensaje = 'El cliente '.$nombre.' con el número de cliente '.$num_cliente.' se ha creado correctamente';

                                        $export = '__exportar_resultados__';
                                } else {
                                        $alert = "danger";
                                        $mensaje = "Ha ocurrido un error al intentar introducir los datos en la base de datos.";
                                }
                        } else {
                                $alert = 'danger';
                                $mensaje = 'El pool de IP\'s seleccionado está lleno<br />Porfavor, seleccione otro.';
                        }
                } else {
                        $alert = 'danger';
                        $mensaje = 'No hay ningún Pool de IP\'s seleccionado';
                }
        } else {
                $alert = 'danger';
                $mensaje = 'El número de teléfono '.$telefono.' ya existe.';
        }
} else {
        $alert = 'danger';
        $mensaje = 'El número de cliente '.$num_cliente.' ya existe.';
}

