Hello:
I am trying to change the action portion of my form based on criteria, in this case if the counter is equal to 14 then load thankyou.php, else continue on the PHP Self. What this is is a application form that tests whether all the data is okay. I will work on the santizing later but wanted to get this done as it seems to be the hardest, at least for me.
<?php
$frmSubmit = "";
$errFName = "";
if($_POST["ac"]=="login")
{
// If First Name is NOT letters, dash or spaces then display error message.
if(preg_match("/^[A-Z][a-zA-Z -]+$/", $_POST["fname"]) === 0)
$errFName = '<class="errText">First name must be from letters, dashes, spaces and must not start with dash';
else
$frmCounter = $frmCounter + 1;
// Add validation & Santization here
// more of the above ...
// more of the above ...
// more of the above ...
// more of the above ...
if $frmCounter = 14
$frmSubmit = ThankYou.php;
else
$frmSubmit = $PHP_SELF;
}
?>
<body>
<form name="main" action="<?php $frmSubmit ?>" method="POST"><input type="hidden" name="ac" value="login">
Conditional submit ...
Moderator: General Moderators
-
pepe_lepew1962
- Forum Commoner
- Posts: 44
- Joined: Thu Nov 20, 2008 10:29 am
- sergio-pro
- Forum Commoner
- Posts: 88
- Joined: Sat Dec 27, 2008 12:26 pm
Re: Conditional submit ...
Hi,
Looks like you misunderstand how forms work.
The form action should always be $PHP_SELF, so that the form data comes to your server script first, where it is validated.
Then if form data has error - the form should be displayed again,
if no error - just redirect to Thank You page.
The better code is:
Looks like you misunderstand how forms work.
The form action should always be $PHP_SELF, so that the form data comes to your server script first, where it is validated.
Then if form data has error - the form should be displayed again,
if no error - just redirect to Thank You page.
The better code is:
Code: Select all
<?php
$frmSubmit = "";
$errFName = "";
$hasError = false;
if($_POST["ac"]=="login")
{
// If First Name is NOT letters, dash or spaces then display error message.
if(preg_match("/^[A-Z][a-zA-Z -]+$/", $_POST["fname"]) === 0) {
$errFName = '<class="errText">First name must be from letters, dashes, spaces and must not start with dash';
$hasError = true;
} else {
// Add validation & Santization here
// more of the above ...
// more of the above ...
// more of the above ...
// more of the above ...
if (!$hasError)
Redirect to ThankYou.php;
else
Show $PHP_SELF page;
}
?>
Re: Conditional submit ...
First off, put your code into [ code][ /code] or [ code=php][ /code] tags for easier reading.pepe_lepew1962 wrote:Hello:
I am trying to change the action portion of my form based on criteria, in this case if the counter is equal to 14 then load thankyou.php, else continue on the PHP Self. What this is is a application form that tests whether all the data is okay. I will work on the santizing later but wanted to get this done as it seems to be the hardest, at least for me.
<?php
$frmSubmit = "";
$errFName = "";
if($_POST["ac"]=="login")
{
// If First Name is NOT letters, dash or spaces then display error message.
if(preg_match("/^[A-Z][a-zA-Z -]+$/", $_POST["fname"]) === 0)
$errFName = '<class="errText">First name must be from letters, dashes, spaces and must not start with dash';
else
$frmCounter = $frmCounter + 1;
// Add validation & Santization here
// more of the above ...
// more of the above ...
// more of the above ...
// more of the above ...
if $frmCounter = 14
$frmSubmit = ThankYou.php;
else
$frmSubmit = $PHP_SELF;
}
?>
<body>
<form name="main" action="<?php $frmSubmit ?>" method="POST"><input type="hidden" name="ac" value="login">
Code: Select all
<?php
...
if($frmCounter==14) $frmSubmit = "ThankYou.php"; else $frmSubmit = $_SERVER['PHP_SELF'];
...
?>
<form name="main" action="<?php echo $frmSubmit; ?>" method="POST">...</form>