-1

我有一个包含两个字段名称和电子邮件的表单,我需要在特定 url 上提交该表单值,如下所示

http://www.abc.co.uk/acy/xyzerequest&name='me'&email='me@gmail.com'

为此,我制作了表单并将其发布到 php 文件中。我在哪里使用 $_POST 获取值,但我觉得卡住的地方是如何将这些值发送到特定的 URL,但用户不应该知道。

因此,最终用户只需输入姓名和他的电子邮件 ID,并使用他的值定向到该 URL..

请指导我如何实现..我从过去 3 小时开始尝试,但运气不佳。

4

7 回答 7

0

正如其他人所说,您的问题不是很清楚。

如果我理解正确,您希望在用户单击提交按钮时显示该 URL。

在这种情况下,您应该使用 GET 而不是发布表单。请注意,如果您要传递诸如密码之类的信息,则不建议使用 GET,因为该信息将直接在 url 上可见。

此外,您不应该使用 get it 上述操作的结果是修改服务器端的某些资源,您只能查看而不修改资源。

编辑:似乎其他人对这个问题有了更好的理解,附加参数的标题(“Location:someurl”)似乎是要走的路。

于 2013-01-07T13:43:14.870 回答
0

您可以使用该函数通过设置Location:标题重定向到另一个页面。header一个例子:

header("Location: http://stackoverflow.com/");

正如@lampwins 指出的那样,通常这与exit. 这样页面的其余部分就不会被执行(因为这可能会导致异常的副作用和不必要的服务器负载)。

于 2013-01-07T13:47:50.193 回答
0

一种方法是使用诸如 form.php 之类的表单来显示您的表单,然后重定向到自身以处理该表单而不是 action=myphp 只需放置 form.php ,然后它将重定向到自身在顶部做你需要的。这样您就不需要在 URL 中发送密码。

<?php 
if(isset($_POST['submit'])) {
   $name  = $_POST['name'];
   $email = $_POST['email'];

   // do here whatever you wanted to do with the user and email in your form
   // you can show a different html page or redirect on, or login or whatever.
}  else {
   // the form html elements will only show if the form is not already submitted by the user.  This allows you to do what you need to do on one page without processing and then redirecting using the header.
?>
<!-- form.php -->
<form method=post action="form.php">
name <input name="name" value="" size="10" /><br />
email <input name="email" value="" size="25" /><br />
<input type="submit" name="submit" value="go" />
</form>
<?php
   }
?>
于 2013-01-07T14:00:53.057 回答
0

据我了解,您希望您的脚本收集用户名和电子邮件,创建一个 URL 并重定向用户。

所以脚本应该看起来像这样(这只是一个指导方针)。

    <?php
    if(isset($_POST['submit'])){
        $name = $_POST["name"];
        $email = $_POST["email"];

        //create the URL
        $url = "http://www.example.com/yourpage.php?name=" . urlencode($name) . "&email=" . urlencode($email);

        //send the header
        header("Location: " . $url);
        //exit the script
        exit();
    }
    ?>
    <html>
      <body>
        <form method="post" action="" name="name">
          Name:<input type="text" name="name">
          Email:<input type="text" name="name">
          <input type="submit">
        </form>
      </body>
    </html>

就 URL 而言,?表示您的“变量”从哪里开始。

您永远不应该从原始用户数据创建 URL,尤其是当您将它们发送到您的其他脚本之一时。您应该始终使用urlencode($data),这将使数据 URL 安全。您还应该研究数据验证和清理。

所以这个脚本首先检查是否有任何东西被发布到它,如果有,如果收集数据,创建 URL,发送标头进行重定向,然后退出。如果没有,它会提供一个表格供用户输入他们的信息。

于 2013-01-07T14:04:21.493 回答
0

让我把事情弄清楚,

  1. 您在提交中获得两个值(姓名、电子邮件)。
  2. 现在您将在另一个 url 中处理这两个。

如果我是对的,您可以使用 PHP“标头”函数,例如

<?php
    header("Location:http://www.abc.co.uk/acy/xyzerequest?name=".$_POST['name']."&email=".$_POST['email']);
?>

在这种情况下,带有标头值的空白响应将发送到客户端或浏览器

<some header value>
Contet-Type:text/plain
Location:http://www.abc.co.uk/acy/xyzerequest?name=foo@email=foo@gmail.com
<some header value>

这样,每个人都知道这些名称和电子邮件值。

由于 PHP 在向客户端呈现页面结束时会丢失变量范围。因此将值存储在变量中是没有用的。但是您还有另一种选择,通过使用 $_SESSION 变量,您可以实现这一点。

  1. 在表单提交设置会话值如下,

    <?php $_SESSION['name'] = $_POST['name']; $_SESSION['email'] = $_POST['email']; ?>

然后重定向到特定的网址,

<?php
  header("Location:http://www.abc.co.uk/acy/xyzerequest");
?>

2. 现在在重定向 url 的处理程序中,您可以从会话中读取这些值,

<?php
  $name = $_SESSION['name'];
  $email = $_SESSION['email'];
?>

因此,这些值是隐藏的,我们可以使用不同的页面处理程序。

于 2013-01-07T14:15:25.513 回答
0

正如一些人已经建议的那样,最简单的方法(如果您需要使用发布数据重定向)是创建一个隐藏表单并自动提交:

$form = "<form name='autoForm' method='post' action='http://www.abc.co.uk/acy/xyzerequest'>
             <input type='hidden' name='name' value='{$_POST['name']}' />
             <input type='hidden' name='email' value='{$_POST['email']}' />
             <script type='text/javascript' language='javascript'>
                 document.autoForm.submit();
             </script>
         </form>";

echo $form;

这将自动使用post数据创建您的表单并提交。

于 2013-01-07T14:46:31.020 回答
-1
<?php
$user = $_GET["user"];
$pass = $_GET["pass"];

   header( 'http://www.abc.co.uk/acy/xyzerequest&name=' . $user . '&email=' . $pass ) ;

?>
于 2013-01-07T13:45:39.520 回答