2017-02-28 51 views
1

如果我將所有字段留空,代碼打擊不會顯示else消息。否則不會在php中執行

<form action="index.php" method="POST"> 
    <textarea name="input_area" rows="6" cols="20"></textarea><br/><br/> 
    Search<input type="text" name="find"/><br/><br/> 
    Replace<input type="text" name="replace" /><br/><br/> 
    <input type="submit" value="Find and replace"/> 
</form> 

PHP

if(isset($_POST['input_area'])&&($_POST['find'])&&($_POST['replace'])) 
{ 
    $text=$_POST['input_area']; 
    $find=$_POST['find']; 
    $replace=$_POST['replace']; 

    if(!empty($text)&&!empty($find)&&!empty($replace)) 
    { 
     $new_str=str_replace($find,$replace,$text); 
     echo $new_str; 
    } 
    else 
    { 
     echo 'FILL ALL THE FIELDS';  
    } 
} 
+2

var_dump你的變量,看看他們實際上包含什麼。 – aynber

+1

正如@aynber所述。在代碼上方放置'var_dump($ _ POST)'並查看它顯示的內容。 – eeetee

+0

@aynber evrything工作正常,當我插入值,只有其他語句不工作 –

回答

1

的值將被設置在$ _ POST,但他們將是空白。像這樣的檢查將適用於所有情況,即使在某些情況下某人已經修改了您的html並嘗試了一些有趣的事情。

<?php 
    $text = isset($_POST['input_area']) ? $_POST['input_area'] : ""; 
    $find = isset($_POST['find']) ? $_POST['find'] : ""; 
    $replace = isset($_POST['replace']) ? $_POST['find'] : ""; 

    if($text != "" && $find != "" && $replace != ""){ 
    $new_str=str_replace($find,$replace,$text); 
    echo $new_str; 
    }else{ 
    echo 'FILL ALL THE FIELDS';  
    } 
?> 
+0

它仍然不工作! –

0

這種說法是問題的根源

if(isset($_POST['input_area'])&&($_POST['find'])&&($_POST['replace'])) 

正確的是

 if(isset($_POST['input_area'])&&isset($_POST['find'])&&isset($_POST['replace'])) 
0

阿曼有着相當不錯的答案。您可能想要檢查用戶是否剛輸入空格。查找ctype_space($ str)。您也可以爲此調整strlen,並修剪掉可能出現在輸入的開頭或結尾(或全部)的空白......如果您希望您的代碼結構看起來相同。

if ( strlen(trim($_POST['input_area']))>0 && etc.