2013-03-09 62 views
0

我正在處理表單的腳本,它將數據提交給自己以檢查錯誤,如果沒有錯誤,它使用header()將它們發送到下一頁。有沒有一種方法可以將$ _POST數據發送到下一頁,而不需要重新提交表單?

<?php 

if (isset($_POST['submit'])) { 
    $errors = array(); 
    $moo = array(); 

    if (empty($_POST['a'])) { 
     $errors[] = 'You forgot to answer Question 1!<br/>'; 
    } else { 
     $moo = $_POST['a']; 
    } 

    if (empty($_POST['b'])) { 
     $errors[] = 'You forgot to answer Question 2!<br/>'; 
    } 

    if (empty($_POST['c'])) { 
     $errors[] = 'You forgot to answer Question 3!<br/>'; 
    } 

    if (empty($errors)) { 

     $_POST['aids'] = "RAWR"; 
     $url = "http://localhost/test/test.php?page=2"; 
     header("Location: $url"); 
     exit(); 
    } else { 
     foreach ($errors as $error) { 
      echo $error; 
     } 
    } 
} 

echo " 
    <form action=\"test.php?page=1\" method=\"post\"> 
     <input type=\"text\" name=\"a\" value=\"" . $_POST['a'] . "\"> 
     <input type=\"text\" name=\"b\" value=\"" . $_POST['b'] . "\"> 
     <input type=\"text\" name=\"c\" value=\"" . $_POST['c'] . "\"> 
     <input type=\"submit\" name=\"submit\"> 
    </form> 
"; 

?> 
+0

將它保存到文件或數據庫? – Dave 2013-03-09 00:38:53

+0

你試過使用'.ajax()'嗎? – 2013-03-09 00:40:32

+0

在JS中做錯誤檢查。或者,如果想要scrictly使用PHP,可以將它們保存在會話中並傳遞。或者,建議的方法是進行錯誤檢查並使用同一文件中的數據。 – Jon 2013-03-09 00:41:31

回答

-1

儘量不使用任何動作url。這使得當前頁面成爲目標:

<form action="" method="post"> 

編輯。誤讀的問題。試試這個第一頁上:

<?php 
    if(isset($_POST['submit'])){ 
    // check for errors here... 
    if (empty($errors)) { 
     $valuea = 'a'; 
     $valueb = 'b'; 
     $url = "http://domain/test/test.php?vala=".$valuea."&valb=".$valueb.""; 
     header("Location: $url"); 
     exit(); 
    } 
    }  
?> 

在第2頁

<?php 
$valuea = $_GET['vala']; 
$valueb = $_GET['valb']; 
?> 

這僅僅是傳遞值通過URL。否則,你需要一個會話或數據庫來使用PHP傳遞值。

+0

他們已經提交到第一頁,並知道如何做到這一點 - 他們問如何獲得他們重定向到的第二頁上的信息。 – Jon 2013-03-09 00:42:38

+0

做你的錯誤檢查,然後做一個重定向,如果它成功。或者使用ajax。或者使用會話。有很多選擇! – john 2013-03-09 00:44:01

+0

是的,但你的回答根本不能解決問題,你重申他們已經成功完成的事情,而不是如何將它們傳遞給第二頁。 – Jon 2013-03-09 00:45:49

0

您應該使用AJAX請求來檢查錯誤,然後提交表單,如果所有信息對$ url的位置都是正確的。

但是,如果您希望在沒有錯誤的情況下將數據存儲在$ _SESSION變量中,您將能夠在下一頁中檢索它。

... 
if (empty($errors)) { 

    $_POST['aids'] = "RAWR"; 
    $url = "http://localhost/test/test.php?page=2"; 
    $_SESSION['post'] = $_POST; 
    header("Location: $url"); 
    exit(); 
} else { 
    foreach ($errors as $error) { 
     echo $error; 
    } 
} 
... 

甚至可以與網址的查詢字符串發送數據,如

$url = "http://localhost/test/test.php?page=2&data=whatever"; 
0

那麼有很多方法,你可以去這個問題。首先想到的是將數據存儲在一個$_SESSION變量中,然後將其存儲在數據庫中...

如果您不想更改腳本的結構,而不是做一次重定向數據是有效的,只需要include()來運行其他頁面的代碼 -

if (empty($errors)) { 
    ... 
    // this will simply insert the contents of the script and execute it. 
    include('test.php?page=2'); 
} else { 
    ... 
}