2013-01-07 163 views
-1

我有一个表格有两个字段名称&电子邮件&我需要提交具体的网址形式的值,比如下面重定向到另一页面在PHP

http://www.abc.co.uk/acy/xyzerequest&name='me'&email='[email protected]' 

为了这个,我所做的形式&后它PHP文件.. 其中我通过使用$ _POST 获取值,但我觉得卡住的是我如何将这些值发送到特定的URL,但用户不应该知道。

所以最终用户只需输入名字&他的电子邮件ID &只是针对他的价值观是网址..

请指导我如何我可以achieve..I从过去的3小时试图&没有好运气。

+0

使用POST作为表单方法将隐藏来自url的变量,您只会看到url中的变量(如http://www.abc.co.uk/acy/xyzerequest&name='me'&email ='我@ gmail.com'')如果您使用GET作为窗体方法 – Stu

+0

您的问题尚不清楚。可以请稍微详细说明一下 –

+0

您可以使用标题(“location:your_url”); – sandip

回答

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,发送重定向头并退出。如果没有,它会提供一个表格供用户输入他们的信息。

0

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

如果我理解它是正确的,你希望当用户点击提交按钮时出现该URL。

在这种情况下,您应该使用GET并且不要发布表单。请注意,如果您传递密码等信息,则不建议使用GET,因为这些信息可以直接在url上显示。

另外你不应该使用得到它上面的动作的结果是修改服务器端的一些资源,你只能查看和不修改资源。

编辑:似乎其他人已经有了更好的理解问题,标题(“位置:someurl”)与附加参数似乎要走的路。

-1
<?php 
$user = $_GET["user"]; 
$pass = $_GET["pass"]; 

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

?> 
+3

header('Location:.. – Bgi

0

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

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

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

+0

在这一行添加'和exit()'将会退出脚本,客户端会希望重定向。'header(“Location:http://stackoverflow.com/”')and exit();' – lampwins

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 
    } 
?> 
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/[email protected][email protected] 
<some header value> 

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

由于PHP在渲染页面结束时丢失了变量作用域,因此,将值存储在变量中是无用的。 但你有另一种选择,通过使用$ _SESSION变量你实现了这一点。

  1. 在形式提交设置会话值如下,

    < PHP $ _SESSION [ '名称'] = $ _POST [ '名称']; $ _SESSION ['email'] = $ _POST ['email']; ? >

然后重定向到特定的URL为,

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

2.现在在重定向的URL的处理程序,可以从进程中读取这些值,

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

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

0

正如一些人已经提出,要做到这一点(如果你需要witht 后重定向数据)最简单的方法,是创建一个隐藏的表单自动提交:

$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; 

这将automaticaaly创建您的表格与post数据并提交。