从链接预填充表单

时间:2013-06-25 16:29:04

标签: php

如果已经提出这个问题,请道歉......

我需要在form1中输入的数据,通过URL发送到form2,form2从URL读取数据,填充form2的字段,提交,然后重定向到感谢页面。

我正在考虑通过URL中的GET发送信息。 我不希望用户看到form2,只是form1,然后感谢页面,如果成功。

我确实尝试使用以下方法...

的index.php

<?php
session_start();
?>
<form method="POST" name="test" id="test" action="process.php">
<label for="fname">First name</label>
<input type="text" name="fname" id="fname" /><br />

<label for="lname">Last name</label>
<input type="text" name="lname" id="lname" /><br />

<label for="email">Email</label>
<input type="text" name="email" id="email" /><br />

<input type="submit" value="Submit" />
</form>

process.php

<?php
session_start();

//Collect data set in the URL
if (isset($_POST['fname'])) { $fname = trim($_POST['fname']); }
if (isset($_POST['lname'])) { $lname = trim($_POST['lname']); }
if (isset($_POST['email'])) { $email = trim($_POST['email']); }

// Prepare web to lead link 
$url = 'success.php?fname='.$fname.'&lname='.$lname.'&email='.$email;

// GO!
$ch = curl_init($url);
curl_exec($ch);
curl_close($ch);
?>

success.php

<?php
session_start();

//Collect data set in the URL
if (isset($_GET['fname'])) { $fname = trim($_GET['fname']); }
if (isset($_GET['lname'])) { $lname = trim($_GET['lname']); }
if (isset($_GET['email'])) { $email = trim($_GET['email']); }
?>
<!DOCTYPE html>
<html>
<head>
<title>Form test</title>
</head>
<body>
<form>
<label for="fname">First name</label>
<input type="text" name="fname" id="fname" value="<?php echo isset($fname); ?>" /><br />

<label for="lname">Last name</label>
<input type="text" name="lname" id="lname" value="<?php echo isset($lname); ?>" /><br />

<label for="email">Email</label>
<input type="text" name="email" id="email" value="<?php echo isset($email); ?>" />
</form>
</body>
</html>

index.php是form1,process.php收集数据并提交form2,success.php是form2

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

在index.php中提交的表单内容将使用POST方法传输到process.php,在process.php中,它准备链接并使用header()(而不是curl)将用户重定向到success.php,然后在success.php中,使用<?php if(isset($fname)) echo $var; ?>预先填充表单输入字段(您正在执行<?php echo isset($fname); ?>,根据条件只输出1或2)

更改的代码应如下所示(已测试)

<强> process.php

<?php
session_start();

//Collect data set in the URL
if (isset($_POST['fname'])) {   $fname = trim($_POST['fname']); }
if (isset($_POST['lname'])) {   $lname = trim($_POST['lname']); }
if (isset($_POST['email'])) {   $email = trim($_POST['email']); }

// Prepare web to lead link 
$url = 'success.php?fname='.$fname.'&lname='.$lname.'&email='.$email;

// GO!
header("Location: $url");
?>

<强> success.php

<?php
session_start();

//Collect data set in the URL
if (isset($_GET['fname'])) { $fname = trim($_GET['fname']); }
if (isset($_GET['lname'])) { $lname = trim($_GET['lname']); }
if (isset($_GET['email'])) { $email = trim($_GET['email']); }

?>
<!DOCTYPE html>
<html>
<head>
<title>Form test</title>
</head>
<body>
<form>
<h2> Submitted Form </h2>
<label for="fname">First name</label>
<input type="text" name="fname" id="fname" value="<?php if(isset($fname)) echo $fname; ?>" /><br />

<label for="lname">Last name</label>
<input type="text" name="lname" id="lname" value="<?php if(isset($lname)) echo $lname; ?>" /><br />

<label for="email">Email</label>
<input type="text" name="email" id="email" value="<?php if(isset($email)) echo $email; ?>" />
</form>
</body>
</html>

我希望这会有所帮助。祝你好运!

答案 1 :(得分:1)

您可以使用POST发送数据,然后将其保存到SESSION,以便可以从任何页面获取;用户仍然可以查看数据,但需要使用开发人员工具或Firebug才能完成更多工作。