2011-07-27 123 views
0

我在這裏做錯了什麼?PHP查詢字符串與陣列

firstpage.php

<html> 
    <body> 
     <?php 
     if (!isset($_GET['error'])) 
      $error=array(); 
     else 
      $error = $_GET['error']; 
     ?> 
     <script> 
      function clearText(field){ 
       if (field.defaultValue == field.value) field.value = ''; 
       else if (field.value == '') field.value = field.defaultValue; 

      } 
     </script> 
     <?php 

     foreach($error as $key => $value){ 
      if ($value != '') 
       echo '<p style="color:red;">', $value, '</p>'; 
     } 
     ?> 


     <form method="GET" action="validar.php"> 

      First Name: <input type="text" name="firstname" value="first name here" onFocus="clearText(this)" onBlur="clearText(this)"> <br> 
      Last Name: <input type="text" name="lastname" value="last name here" onFocus="clearText(this)" onBlur="clearText(this)"> <br><br> 

      <input type="submit" value="SEND"> 

     </form> 

    </body> 
</html> 

secondPage.php

<?php 
# confirmation.php 

$firstname = $_GET['firstname']; 
$latname = $_GET['lastname']; 

?> 
<html> 
<body> 
<h3>Congratulations <?php echo $firstname; $lastname; ?>, you have been successfully registered</h3> 

</body> 
</html> 

validar.php

<?php 

    $firstname = $_GET['firstname']; 
    $lastname = $_GET['lastname']; 

    $error['firstname'] = ''; 
    $error['lastname'] = ''; 

    $firstPage = "firstPage.php"; 
    $secondPage = "secondPage.php"; 

    $server_dir = $_SERVER['HTTP_HOST'] . rtrim(dirname($_SERVER['PHP_SELF']), '/\\') . '/'; 

    if($firstname == "first name here"){ 
     $firstname == ""; 
     $error['firstname'] = 'Please introduce firstname <br>'; 
    } 

    if($lastname == "last name here"){ 
     $lastname == ""; 
     $error['lastname'] = 'Please introduce last <br>'; 
    } 

    if($error == ''){ 
     $query_string = '?firstname=' . $firstname; 
     header('Location: http://' . $server_dir . $secondPage . $query_string); 
    } 
    else { 

    $query_string = http_build_query($error); 
    header('Location: http://' . $server_dir . $firstPage . $query_string); 
} 

    ?> 

錯誤消息:訪問被拒絕!我是PHP的新手,所以我不知道如何構建一個多字段錯誤的查詢字符串。我正在做一個關鍵字爲「字段值」的數組,因爲我認爲它更容易。但我不是這是最好的方法,即使是這樣,我不確定我是否做得很好。任何幫助,將不勝感激, 約翰

+1

您是否從Web服務器獲取訪問被拒絕(403)?回顯傳遞給你的'header()'調用''Location:http://'的字符串的結果。 $ server_dir。 $ firstPage。 $ query_string'確保它是一個有效的URL,並且在你期望的位置 –

+0

「拒絕訪問」是什麼時候?用戶執行什麼操作,以及您在哪裏看到「訪問被拒絕」?這不太可能與查詢字符串有關。 –

+0

輸出:位置:http://localhost/php_teste1/treino/firstPage.phpfirstname=Please+introduce+firstname+%3Cbr%3E&lastname=Please+introduce+last+%3Cbr%3E – portoale

回答

0

http_build_query函數只建立查詢。您需要在問號前添加它以標記查詢字符串的開頭。

讓我們的代碼: 「?」

 

    header('Location: http://' . $server_dir . $firstPage . $query_string); 

你需要插入在firstPage和query_string之間:

 

    header('Location: http://' . $server_dir . $firstPage . '?' . $query_string);