2017-02-06 13 views
0

這裏得到一個非常奇怪的結果是我的代碼:我在我的PHP的形式輸出

<h2> Simple Form </h2> 
<form action="" method="post"> 
First Name: <input type="text" name="firstName"> 
Last Name: <input type="text" name="lastName"><br /><br /> 
<input type="submit"> 
</form> 
<br /> 
Welcome, 
<?php 
echo $_POST['firstName']; 
echo " "; 
echo $_POST['lastName']; 
?> 
! 
<hr> 
<h2>POST Form</h2> 
<h3>Would you like to volunteer for our program?</h3> 
<form action="" method="post"> 
Name: <input type="text" name="postName"> 
Age: <input type="text" name="age"><br /><br /> 
<input type="submit"> 
</form> 
<br /> 
Hello, 
<?php 
echo $_POST['postName']; 
?> 
! 
<br> 
<?php 
if ($_SERVER['REQUEST_METHOD'] == "POST") { 
    $age = $_POST['age']; 
    if ($age >= 16) { 
     echo "You are old enough to volunteer for our program!"; 
    } else { 
     echo "Sorry, try again when you're 16 or older."; 
    } 
} 
?> 
<hr> 
<h2>GET Form</h2> 
<h3>Would you like to volunteer for our program?</h3> 
<form method="get" action="<?php echo htmlspecialchars($_SERVER["REQUEST_URI"]); ?>"> 
<input type="hidden" name="p" value="includes/forms.php"> 
Name: <input type="text" name="getName"> 
Age: <input type="text" name="age"><br /><br /> 
<input type="submit"> 
</form> 
<br /> 
Hello, 
<?php 
echo $_GET['getName']; 
?> 
! 
<br> 
<?php 
if ($_SERVER['REQUEST_METHOD'] == "GET") { 
    $age = $_GET['age']; 
    if ($age >= 16) { 
     echo "You are old enough to volunteer for our program!"; 
    } else { 
     echo "Sorry, try again when you're 16 or older."; 
    } 
} 
?> 

我有兩種形式。兩者都顯示完全相同的內容,但使用POST的一種形式和使用GET的一種形式。

我已經變得如此接近完成這個功能,但現在我還有一個小的/奇怪的問題。

代碼技術上工作正常,但這裏的輸出解釋:

當我第一次打開了GET形式已經有了結果的頁面「對不起,當你16歲以上再試一次。」當我填寫第一個「簡單」表單時,它會正確顯示結果,但是POST表單顯示「Sorry,try again ...」結果。然後,當我填寫信息並單擊提交時,它會顯示正確的結果,其他兩個表單都是空白的,因此當填寫GET表單時結果相同。

任何幫助,這是非常感謝。

+0

你爲什麼要使用這條線? '' –

回答

0

試試這個代碼:

<h2> Simple Form </h2> 

    <form action="" method="post"> 
     First Name: <input type="text" name="firstName"> 
    Last Name: <input type="text" name="lastName"><br /><br /> 
    <input type="submit"> 
</form> 
<br /> 

    Welcome, 

    <?php 
    if (isset($_POST['firstName']) && $_POST['lastName']) 
    { 
    echo $_POST['firstName']; 
    echo " "; 
    echo $_POST['lastName']; 
    } 
    ?> 

    ! 
    <hr> 


<h2>POST Form</h2> 

<h3>Would you like to volunteer for our program?</h3> 

    <form action="" method="post"> 
    Name: <input type="text" name="postName"> 
    Age: <input type="text" name="age"><br /><br /> 
    <input type="submit"> 
    </form> 
    <br /> 


    Hello, 

    <?php 
    if (isset($_POST['postName'])) 
    { 
    echo $_POST['postName']; 
    } 
    ?> 

    ! 
    <br> 


    <?php 
if ($_SERVER['REQUEST_METHOD'] == "POST") 
{ 

if (isset($_POST['age'])) 
{ 
    $age = $_POST['age']; 

    if ($age >= 16) 
    { 

     echo "You are old enough to volunteer for our program!"; 
    } 
    else 
    { 
     echo "Sorry, try again when you're 16 or older."; 
    } 
    } 
} 
?> 

<hr> 

    <h2>GET Form</h2> 

    <h3>Would you like to volunteer for our program?</h3> 

    <form method="get" action="<?php echo   htmlspecialchars($_SERVER["REQUEST_URI"]); ?>"> 
<input type="hidden" name="p" value="includes/forms.php"> 
Name: <input type="text" name="getName"> 
Age: <input type="text" name="age"><br /><br /> 
<input type="submit"> 
</form> 
<br /> 

Hello, 

<?php 
if (isset($_GET['getName'])) 
{ 
echo $_GET['getName']; 
} 
?> 

! 
<br> 


<?php 
if ($_SERVER['REQUEST_METHOD'] == "GET") 
{ 


if (isset($_GET['age'])) 
{ 
    $age = $_GET ['age']; 



    if ($age >= 16) 
    { 

     echo "You are old enough to volunteer for our program!"; 
    } 
    else 
    { 
     echo "Sorry, try again when you're 16 or older."; 
    } 
} 
} 
?> 
0

請試試這個。我希望這會有所幫助。

替換

if ($_SERVER['REQUEST_METHOD'] == "POST") { 

if (isset($_POST['age'])) { 

類似地,替換

if ($_SERVER['REQUEST_METHOD'] == "GET") { 

if (isset($_GET['age'])) { 
0

當您第一頁上輸入,默認REQUEST_METHOD是GET,所以你應該檢查是否isset($_GET['age']) { and here check if it is more than 16 } 你也應該檢查這一項 echo $_GET['getName'];
和改變這個
echo isset($_GET['getName']) ? $_GET['name'] : "";
您也應該檢查$ _ POST請求,這樣,你的程序將正常工作。