2016-12-17 67 views
0

這裏是我做了一個代碼:PHP:爲什麼變量在提交後沒有被重載?

<form method="post" action="test.php"> 
<input type="text" name="name" placeholder="name"/><br /> 
<input type="submit" value="Validate" /> 
</form> 
<?php 
$sum=0; 
if(isset($_POST['name'])){ 
    $sum+=1; 
} 
echo "sum = $sum"; 
?> 

當我在表單中輸入一些文字,然後點擊驗證,頁面顯示sum=1,但在此之後,當我在表單中輸入什麼和單擊驗證,頁面STILL顯示sum=1

爲什麼變量$ sum不會在兩個Validate之間重新加載?有沒有辦法逃避它?

感謝

+1

因爲您很難將它設置爲0之前的幾行。該腳本總是執行完成,而不是從你的if語句開始 – frlan

回答

0

另一種方式是檢查您的客戶端已經在網頁上提出的要求。因此,如果它是一個簡單的刷新(不包括表單刷新),那麼它就是一個GET請求,所以變量不應該增加,如果表單已經發送,那麼你可以做任何你想做的事情,比如增加數據。

因此,如果客戶端發送填充輸入文本的表單,則可以遞增該值。在全部其他情況下,值應保持爲零。

<form method="post" action="test.php"> 

    <input type="text" name="name" placeholder="name"/><br /> 
    <input type="submit" value="Validate" /> 

</form> 

<?php 

    $sum=0; 

    if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['name']) && !empty($_POST['name'])) 
    { 
     $sum++; /* strictly equivalent to: $sum += 1; */ 
    } 

?> 

<samp>sum = <?php echo $sum; ?></samp> 
1

這將解決這一問題

<?php 
$sum=0; 
if(isset($_POST['name']) && $_POST['name'] != ''){ 
    $sum+=1; 
} 
echo "sum = $sum"; 
?> 
+0

我認爲它不會。 – frlan

+0

我可以知道投票的理由嗎? – Akshay

+0

我必須恢復自己。理解錯誤的問題 – frlan

0

試試這個

<form method="post" action="test.php"> 
<input type="text" name="name" placeholder="name"/><br /> 
<input type="submit" name="submit" value="Validate" /> 
</form> 
<?php 
$sum=0; 
if(isset($_POST['submit'])){ 
    $sum+=1; 
} 
echo "sum = $sum"; 
?> 
1

這是因爲isset()將檢查$ _POST變量的存在。在你的情況下,$ _POST變量存在並且有一個空的字符串值。

如果您將isset()更改爲!empty(),您的代碼將可以正常工作;

<form method="post" action="test.php"> 

<input type="text" name="name" placeholder="name"/><br /> 


<input type="submit" value="Validate" /> 
</form> 


<?php 

$sum=0; 

if(!empty($_POST['name'])){ 
    $sum+=1; 
} 

echo "sum = $sum"; 

?> 

更多關於empty()功能here

0

你可以試試下面:

if(isset($_POST['name']) && strlen($_POST['name'])>0){ 
$sum+=1; 
0

你的代碼追加1至變量$總和 但你的if語句是基於名稱字段傳遞。 如果名稱字段中包含任何數據,則不適用。 因此......只要名稱域通過,您已將您的代碼添加爲1,無論是否有文本輸入, 。

此外,您應該重新分配該變量以重置它。 + =應該只是=

 <form method="post" action="test.php"> 


    //----------------------------- add empty value to input ------------ 
    <input type="text" name="name" value="" placeholder="name"/><br /> 


    <input type="submit" value="Validate" /> 
    </form> 


    <?php 

    $sum=0; 

    if(isset($_POST['name'])){ 
     $sum=1; 
    } 

    echo "sum = $sum"; 

    ?> 
相關問題