One note with my previous solution (a bug I found) -> if you happen to be just at the top of the stair case, so that you're overlapping the platform at the top, but you're still on the staircase, there's a small window (a couple pixels) that can cause you to fall through the stairs if you're going slowly.
As for your other question: You could set the player's position to prevent the re positioning, but doing this could interfere with jumping. (If say, you added a re position to that same event, it would see that the player is near the ground and not pressing up, so therefore it would set the player to be standing on the ground unless they jump higher in 1 frame then your offset (= half the player's height right now).