2016-12-17 47 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"; 

    ?> 
相关问题