Om datums als string te kunnen vergelijken moeten deze van het format Y-m-d zijn, niet d-m-Y.
Je vergelijkt namelijk strings, PHP weet niet dat de string '01-03-2019' een datum is.
Het klopt dat in je oorspronkelijke codefragment '27-02-2019' na '06-03-2019' komt omdat 2 (van 27) lexicografisch (textueel) volgt op 0 (van 06).
Als je de formattering Y-m-d gebruikt dan werkt het zoals je zou verwachten omdat '2019-03-06' textueel gerangschikt is na '2019-02-27' immers:
2019 en 2019 zijn equivalent
03 volgt op 02, en daarmee valt de tweede datum na de eerste in de sortering.
Ook loont het misschien moeite om de huidige datum op te slaan in een aparte variabele ($now) en het if-statement in een logische volgorde te zetten qua tijdslijn, dus zoiets:
<?php
if ($before <= $now && $now < $after) {
// this is happening now
} else {
// ...
}
?>