Timing using millis() is fundamentally quite simple
Save the value of millis() as the start time when the start action occurs. In your case this will be when the input is LOW or when the input becomes HIGH. At the same time as saving the value of millis() set the output to HIGH and set a boolean to true.
Each time through loop(), if the boolean is true (timing started) check whether the required period has elapsed. If not keep going round loop() until it has. Once the required period has elapsed change state of the output and change state of the boolean to false.
One of several things may occur
1 - The input is kept LOW for longer that the period. No matter, because each time through loop() the start time will be reset and the output will remain HIGH
2 - The input becomes HIGH. The timing period will start and the output will be set HIGH
3 - the input goes LOW during the timing period. This is the same as 1 above