2013-01-07 256 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數據並提交。