reading digital INPUT for 30 sec: at least one 1

Thanks!
I'm losing my mind... why does it enter in BOTH first and second "if" at the beginning, than it enters in BOTH second and third "if"?
:o

long start;

void setup(){
  pinMode(12, OUTPUT);
  Serial.begin(9600);
}

void loop(){

  start = millis();    
while (digitalRead(8)==LOW){
  if ((millis() - start) <= 15000){
    Serial.println("1");
    digitalWrite(12, HIGH);
    delay(1000);
    digitalWrite(12, LOW);
    delay(1000);
  } 
  if (15000 < (millis() - start) <= 30000){
    Serial.println("2);
    digitalWrite(12, HIGH);
    delay(500);
    digitalWrite(12, LOW);
    delay(500);
  }      
  if ((millis() - start) > 30000){
    Serial.println("3);
    digitalWrite(12, HIGH);
    delay(150);
    digitalWrite(12, LOW);
    delay(150);

  }         
}

}