This is a discussion on processing 2 things in one form. is it possible? within the PHP Language forums, part of the PHP Programming Forums category; hi all, i am creating a form that returns to itself like this: <form name="form1" action=&...
|
|||||||
| FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
|
|||
|
hi all,
i am creating a form that returns to itself like this: <form name="form1" action="<?php echo $_REQUEST['PHP_SELF']; ?>" method="post"> Upon clicking submit, I want the form to return to "itself" (does the input fields validation). If the validation is false, the initial input values are displayed on the fields. If the validation is correct, it should go to an external file (on different server) and does the rest of the processing such as sending mail or writing to a file, etc (could be anything). There are basically 2 tasks here. Is this achievable in a single form. I tried to include external file after validation but it fails to call a function inside that file as the file resides on a different server. Can someone show me the right direction? Thanks |
|
|||
|
crescent...@yahoo.com wrote: > Upon clicking submit, I want the form to return to "itself" (does the > input fields validation). If the validation is false, the initial input > values are displayed on the fields. If the validation is correct, it > should go to an external file (on different server) and does the rest > of the processing such as sending mail or writing to a file, etc (could > be anything). if($_SERVER['REQUEST_METHOD'] == 'GET') { ...show the form } elseif post { validate the post vars if success use the header() function to jump the external page else show the form again, you'll still have the $_POST array hanging around to initialize the form elements with, so the form looks like it did just before the first submit } |
|
|||
|
"pittendrigh" <Sandy.Pittendrigh@gmail.com> wrote in message news:1159971142.114178.260610@m73g2000cwd.googlegr oups.com... > > crescent...@yahoo.com wrote: > > > Upon clicking submit, I want the form to return to "itself" (does the > > input fields validation). If the validation is false, the initial input > > values are displayed on the fields. If the validation is correct, it > > should go to an external file (on different server) and does the rest > > of the processing such as sending mail or writing to a file, etc (could > > be anything). > > if($_SERVER['REQUEST_METHOD'] == 'GET') > { > ...show the form > } > elseif post > { > validate the post vars > if success > use the header() function to jump the external page > else > show the form again, you'll still have > the $_POST array hanging around to initialize > the form elements with, so the form looks > like it did just before the first submit > } > The only problem I see with that is that the OP probably wants to take data along to the new script(on different server) and header won't do that by itself afaik. You may need to use curl to repost your data to the other server. |
|
|||
|
One solution is to use fsockopen to post the data to the other server.
Create a function which takes as input a URL to post to, and an array of variables to be posted. This function could then connect the URL, post the data, and return the response. Note that the response will contain all data return from the server (including headers). Therefore, the remote server's page should echo results in an easily parsable form. I usually do something along the lines of: <!-- OUTPUT STARTS HERE --> <result>1</result> This way you can easily cut off the headers, and look at the actual result of the operation. Here is a code snippet of using fsockopen: $request.="POST ".$URL_Info["path"]." HTTP/1.1\r\n"; $request.="Host: ".$URL_Info["host"]."\r\n"; $request.="Referer: $referrer\r\n"; $request.="Content-type: application/x-www-form-urlencoded\r\n"; $request.="Content-length: ".strlen($data_string)."\r\n"; $request.="Connection: close\r\n"; $request.="\r\n"; $request.=$data_string."\r\n"; $fp = fsockopen($URL_Info["host"],$URL_Info["port"]); fputs($fp, $request); while(!feof($fp)) { $result .= fgets($fp, 128); } fclose($fp); On Oct 4, 8:38 am, "Johnny" <removethis.huuan...@hotmail.com> wrote: > "pittendrigh" <Sandy.Pittendr...@gmail.com> wrote in messagenews:1159971142.114178.260610@m73g2000cwd.g ooglegroups.com... > > > > > > > crescent...@yahoo.com wrote: > > > > Upon clicking submit, I want the form to return to "itself" (does the > > > input fields validation). If the validation is false, the initial input > > > values are displayed on the fields. If the validation is correct, it > > > should go to an external file (on different server) and does the rest > > > of the processing such as sending mail or writing to a file, etc (could > > > be anything). > > > if($_SERVER['REQUEST_METHOD'] == 'GET') > > { > > ...show the form > > } > > elseif post > > { > > validate the post vars > > if success > > use the header() function to jump the external page > > else > > show the form again, you'll still have > > the $_POST array hanging around to initialize > > the form elements with, so the form looks > > like it did just before the first submit > > }The only problem I see with that is that the OP probably wants to take data > along to the new script(on different server) and header won't do that by > itself afaik. You may need to use curl to repost your data to the other > server. |