RE: Multipage form redux

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> 
> Somehow my intent has been turned around here and I apologise.
> 
> I do not want to use *any* client side validation. I only want to do 
> server side validation and server side storage.
> 
> My intent was to remove the client from as much as possible 
> of this - if 
> I didn't need their information I wouldn't even allow clients!! :)
> 
> What I wanted to do was this:
> 
> 
> p. 1 : I send client page one, they send answers. SUBMIT 
> sends to page 2 
> script.
> 
> p 2. Before displaying anything to the client, Page 2 script 
> validates 
> input from page 1. If there are problems, page 2 script 
> redisplays page 
> one questions with highlights around problems. Clicking submit then 
> resubmits page one data to page 2 script.
> 
> Once page 2 script validates all page 1 answers, page 2 script stores 
> all those answers to a SESSION, then sends PAGE 2 QUESTIONS ONLY (no 
> $_POST information) to client. Client answers page 2 questions and 
> clicking submit submits PAGE 2 QUESTIONS to page 3 script.
> 
> p 3. Before displaying anything to the client, Page 3 script 
> validates 
> input from page 2 questions. If there are problems, page 3 script 
> redisplays page 2 questions with highlights around problems. Clicking 
> submit resubmits page 2 data to page 3 script.
> 
> Once page 3 script validates all page 2 answers, the script 
> stores all 
> those answers to a SESSION, then sends PAGE 3 QUESTIONS ONLY 
> (no $_POST 
> information) to client. Client answers page 3 questions and clicking 
> submit submits PAGE 3 QUESTIONS to page 4 script.
> 
> At this point, if the client goes off for a bite, or two weeks 
> backpacking in the Anapurna region, I'm fine, because the 
> information is 
> stored in the session (I have a very small group taking this 
> questionnaire, all have a vested interested in filling it in, so I am 
> not too worried abou their going aaway from it for more than a couple 
> days max).
> 
> Once they complete the last set of questions, I say thanks 
> much, get all 
> the information out of their SESSION, insert it into the db, send 
> confirmation emails all around and we're done.
> 
> Is this possible? How?
> 
> Thanks!
 
 
This is exactly the scenario I suggested.  The only place I believe your
logic fails is that the session will time out after a period of time and all
data will be lost.  If you suspect that a user may need to resume an
interrupted session, you need to store the data somewhere (DB, cookies, etc)

Consider this over-simplified and (probably syntactically incorrect)
example:

<? // Page 1
session_start();
?>

<html>

<head>
<title>Page 1</title>
</head>
<body>
<form method="POST" action="page2.php">
  <p>NAME: <input type="text" name="NAME" value="<? echo
$_SESSION['Name']?>"></p>
  <p><input type="submit" value="Submit" name="B1"></p>
</form>
</body>
</html>

--------------------------------------------------------

<? // Page 2
$_SESSION['Name'] = $_POST['NAME']; // commit to session variables
// Validate data here
if (data problems){die('<meta http-equiv="refresh"
content="0;url=page1.php">');}
?>

<html>

<head>
<title>Page 1</title>
</head>
<body>
<form method="POST" action="page3.php">
  <p>ADDRESS: <input type="text" name="ADDRESS" value="<? echo
$_SESSION['Address']?>"></p>
  <p><input type="submit" value="Submit" name="B1"></p>
</form>
</body>
</html>

--------------------------------------------------------

<? // Page 3
$_SESSION['Address'] = $_POST['ADDRESS'];// commit to session variables
// Validate data here
if (data problems){die('<meta http-equiv="refresh"
content="0;url=page1.php">');}
?>

<html>

<head>
<title>Page 1</title>
</head>
<body>
<form method="POST" action="page4.php">
  <p>PHONE: <input type="text" name="PHONE" value="<? echo
$_SESSION['Phone']?>"></p>
  <p><input type="submit" value="Submit" name="B1"></p>
</form>
</body>
</html>


This is incredibly over-simplified, but you get the idea.  If you want to
redisplay the form and highlight data errors, you may want to POST to
PHP_SELF, validate there, redisplay the form if necessary, and meta-refresh
to the next page if all is OK.

JM

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux