否则不在PHP中执行

时间:2017-02-28 18:44:44

标签: php if-statement

如果我将所有字段留空,则代码打击不显示else消息。

<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';     
    }
}

3 个答案:

答案 0 :(得分: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';       
  }
?>

答案 1 :(得分:0)

此声明是问题的根源

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

正确的是

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

答案 2 :(得分:0)

阿曼有一个很好的答案。您可能想要检查用户是否刚刚输入了空格。查找ctype_space($ str)。您还可以为此目的调整strlen并修剪以消除可能出现在输入开头或结尾的空格(或所有空格)...如果您希望代码结构看起来相同。

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