I would go for sollution, that is not the simplest, but nicely optimized.
Introduce two variables in your menager script and make setget for them :
var onsand = true setget checksand
var onplatform = true setget checkplatform
next define both setter functions :
onsand = value
onplatform = value
Next define checkvictory conditions :
if onplatform == false and onsand == false :
Next take your connected signals functions, that you propably named "onplatform/sandarea_exit/enter" or something, and insert code there :
Player.onsand ( or onplatform ) = true ( or false )
Most important thing here, is that if its player himself that is connected to those signals, than You must refer to those values using SELF keyword ( like self.onplatform), otherwise setter functions will not pick up any change.
So I think that is it. I hope your player is not jumping, because he will be queued free when on air with this code :P. DOn't worry, if You have jump in your game just do the same thing with "onair" "aircheck" and in checkvictory add line " and onair == false "