2013-07-02 117 views
0

我有2個php頁面。第一個php頁面如下:

<?php 
    //code... 
    if(isset($_POST['value'])== true && empty($_POST['value']) == false){ 
    echo"<a href='search_form_all_2.php'>See more results for </a>"; 
} ?> 

第二頁是「search_form_all_2.php」。

<?php 

$value = mysql_real_escape_string($_POST['value']); 

$name_and_surname = explode(" ", "$value "); 

$name = $name_and_surname[0]; 

$surname = $name_and_surname[1]; 

$query = mysql_query(" SELECT `name`, `surname`, `email`, `user_id` FROM users 
    WHERE (surname LIKE '$name%' AND name LIKE '$surname%') OR (surname LIKE 
    '$surname%' AND name LIKE '$name%') "); 

while($run = mysql_fetch_array($query)){ 
    $surname = $run['surname']; 
    $name = $run['name']; 
    echo"$surname $name "; 
} 
?> 

我想在「search_form_all_2.php」的$值來獲得,我在第1頁的if(isset($_POST['value'])== true && empty($_POST['value']) == false)第一頁的價值。注意:未定義指數:我怎麼能因爲運行時「search_form_all_2.php」我得到一個錯誤回報訊息爲此值

+0

存儲值在會話中,或者將它們傳遞作爲查詢字符串參數'鏈接。 –

回答

1

在這種情況下,您需要使用GET。 POST值僅在表單被引用時發送。

if(isset($_POST['value'])== true && empty($_POST['value']) == false){ 
    echo "<a href='search_form_all_2.php?value=".urlencode($_POST['value'])."'>See more results for </a>"; 

然後在第二頁上您檢索GET值

$value = mysql_real_escape_string($_GET['value']); 

要小心,這些價值觀是對用戶可見。它們是URL的一部分。不要發送機密信息。

另一種方法是將值保存在COOKIE或SESSION變量中。

setcookie("TestCookie", $_POST['value']); 
$value = $_COOKIE["TestCookie"]; 

BTW empty()總是返回布爾值,而且它已經檢查,如果變量設置,所以你只需要:

if(!empty($_POST['value']) 
+0

終於有效!感謝您提供有關敏感數據的建議......牢記! – user2491321

0

在你的第一頁,你可以在URL參數傳遞...例如:

echo "<a href='search_form_all_2.php?s=".urlencode($_POST['value'])."'>See more results for </a>"; 

然後,在你的第二頁,可以調用的參數...例如:

$value = mysql_real_escape_string($_GET['value']); 

PS:你不應該使用mysql_*功能。相反,至少要學習mysqli或PDO。

+0

注意:通常您希望您的搜索結果頁面可以鏈接。IE:用戶A可以複製/粘貼URL並將其發送給用戶B.因此,您的搜索表單應該對POST請求執行GET請求,那麼你可以訪問'$ _GET ['s']'......就像搜索引擎的工作方式一樣(谷歌,雅虎等)。 –

0

On search_form_all_2.php您無法訪問數據值,因爲當您單擊鏈接時,它是GET請求,而不是POST請求。我建議你看看差異。

但是,如果你使用這個吐出鏈接:

echo"<a href='search_form_all_2.php?more={$_POST['value']}'>See more results for </a>"; 

然後,您可以用$ _GET或$ _REQUEST(如果你希望能夠使用GET或POST)第2頁檢索:

$value = mysql_real_escape_string($_REQUEST['value']); 
+0

仍然給我在第2頁的$ value的未定義索引... – user2491321

+0

您傳遞的名稱實際上是否有空格?如果沒有,你可能會得到一個錯誤。你應該檢查那種事情。查看防禦性編程。 – Jordan