http://www.perlmonks.org?node_id=1032056


in reply to [SOLVED] possible to repeat if statement?

Remember that, immediately after print redirect("search.cgi"); , you must return.   Your code should not proceed beyond that point, because having issued the redirect-order in response to this HTML packet, you have nothing further to do with this.   (The user’s browser will receive the redirect, and will act upon it, and so, at some time in the future, you’ll (maybe...) get another HTML packet from the same user requesting the new address.)

The same thing is true, later on, when you (ask the browser to) redirect and (ask the browser to) set a cookie.   When you have given the browser that instruction, you are done (for now).   So, you must return.

It is reasonable to generate the login form as your output, as you do now, either when “login failed” or,in the case where param is not-present, they are here for the first time and not-yet logged in.

So, your (corrected) logic will have three possible outcomes, and it will execute one of these three and then return:

  1. If the user is logged-in, he is redirected to search.cgi.
  2. If the user presents valid credentials, he is redirected and a cookie is stored.
  3. Otherwise, the login form is displayed, with-or-without an “incorrect password” warning.