I have created a cloud page with fields like firstname, email, and one field as OTP. If someone submits the form I am storing all data in a data extension and creating a 4-digit random number using a random function and storing that into the OTP field. And sending that OTP number to the subscriber when someone registered. When the subscriber enters that OTP I need to cross-verify the data from the data extension and what he entered, when he enters the correct OTP I want to display a success or failure message. But when a subscriber enters OTP it was showing a 500 error message. Here is the code
HTML form when a user enters details.
<form action="**Form handler URL**" method="post">
<h3><strong>Personal Informatiom</strong></h3>
<p>
Please enter your personal details.
</p><br>
<label>Email</label>
<input type="email" required="required" placeholder="EMAIL" id="email" name="email">
<label>First Name</label>
<input type="text" required="required" placeholder="First Name" id="firstname" name="firstname">
<button id="myButton" type="submit">Submit</button>
</form>
**File Handler page**
%%[
var @random, @num1, @num2
set @num1 = 1000
set @num2 = 9999
set @random = random(@num1, @num2)
set @email = RequestParameter("email")
set @firstname = RequestParameter("firstname")
set @lookupdata = Lookup("TESTDE01","email","email",@email)
if empty(@lookupdata) then
set @data = insertde("TESTDE01","email", @email,"FirstName", @firstname, "OTP",@random)
set @msg = "You have been succesfully registered"
]%%
%%=v(@msg)=%% Thank You<br><br>
<form action="%%=RequestParameter('PAGEURL')=%%" method="POST">
<label>Enter OTP Here</label>
<input type="text" required="required" placeholder="OTP" id="otpvalue" name="otpvalue"><br><br>
<button id="myButton" type="submit">Submit</button>
</form><br><br>
OTP is %%=v(@random)=%%
%%[ else ]%%
%%[
set @msgs = "You are already registered"
endif
]%%
%%=v(msgs)=%% Thank you
%%[
var @otpentered
set @otpnumber = AttributeValue("OTP")
set @otpentered = RequestParameter("otpvalue")
set @otpde = Lookup("TESTDE01","OTP","email",@email)
if @otpde == @otpvalue then
set @result = "success"
else
set @result = "failure"
endif
]%%