为什么在textarea中产生以下通知?

时间:2017-02-21 10:35:47

标签: php html

为什么在文本区域中生成以下通知?在本地计算机上运行php文件后。

这是截图的通知:                schema

图片中的注意事项:

  

注意:未定义的变量: C:\ xampp \ htdocs \ PhpProject1 \ index.php 15 的用户输入

这是我的代码,我在netbeans中写道:

<?php
   $find= array('alex','billy','dale');
   $replace=array('a**x','b***y','d**e');
   if(isset($_POST['user_input'])&&!empty($_POST['user_input'])){
      $user_input = $_POST['user_input'];
      $user_input_new= str_ireplace($find, $replace, $user_input);
      echo $user_input_new;
   }
?>
<hr>
<form action="index.php" method="POST">
   <textarea name="user_input" rows="6" cols="30">
     <?php
       echo $user_input;
     ?>
  </textarea><br><br>
  <input type="submit" value="submit">
</form>

7 个答案:

答案 0 :(得分:5)

您收到通知,因为$user_input;未定义,因为POST['user_input']未设置。为避免通知仅在已定义

时打印$user_input;
echo isset($user_input) ? $user_input : '';

由于您要在$user_input内打印textarea,因此会在那里打印错误

答案 1 :(得分:1)

试试这个:

<?php
$find = array('alex', 'billy', 'dale');
$replace = array('a**x', 'b***y', 'd**e');
if (isset($_POST['user_input']) && !empty($_POST['user_input'])) {
    $user_input = $_POST['user_input'];
    $user_input_new = str_ireplace($find, $replace, $user_input);
    echo $user_input_new;
}
?>
<hr>

<form action="index.php" method="POST">
    <textarea name="user_input" rows="6" cols="30">
        <?php
        if (isset($user_input)) {
            echo $user_input;
        }
        ?>
    </textarea><br><br>
    <input type="submit" value="submit">
</form>

答案 2 :(得分:1)

isset()条件置于$user_input之前,然后在textarea中使用它:

<textarea name="user_input" rows="6" cols="30">
      <?php
      if(isset($user_input)){
        echo $user_input;
      }
      ?>
</textarea><br><br>

或者你可以这样做

<textarea name="user_input" rows="6" cols="30">
      <?=isset($user_input) ? $user_input : "" ?>
</textarea>

答案 3 :(得分:1)

只需在if语句

之前设置$user_input
$find= array('alex','billy','dale');
$replace=array('a**x','b***y','d**e');
$user_input = '';
if(isset($_POST['user_input'])&&!empty($_POST['user_input'])){
    $user_input = $_POST['user_input'];
    $user_input_new= str_ireplace($find, $replace, $user_input);
    echo $user_input_new;
}

// ...

答案 4 :(得分:1)

这是因为$ _POST值未设置。如果形式从未被提交过,那就不可能了。 将您的条件更改为:

<input type="text" ng-model="modelText1" ng-change="updateModal(modelText1)">

或直接在ternary operator

的表单中进行
var modelText1 = $scope.modelText1.toLowerCase();

    $scope.updateModal = function(){
        $scope.modelText2 = '';
        if(modelText1.indexOf('https')!=-1){
              $scope.modelText2 = modelText1;
        }
    }

编辑 Pankaj Makwana (已更正):
或者 Pankaj Makwana 编辑我的答案(不是关于三元运算符而是short open tags)。

# checks if the form as been submitted, with the submit input's name
if (isset($_POST['submit']) {
    $user_input = $_POST['user_input'];
} else {
    # If not, it will write nothing
    $user_input = "";
}

编辑:PHP7&#39; null coalescing operator 方式:
使用 Pankaj Makwana 编辑我的答案。

<textarea name="user_input" rows="6" cols="30">
  <?php
     echo isset($_POST['submit']) ? $_POST['user_input'] : "";
  ?>
</textarea><br><br>

答案 5 :(得分:0)

这是因为$user_input没有价值。在这种情况下,使用isset()检查变量是否存在。

isset($user_input)
{
    // your code
}

答案 6 :(得分:0)

当您的POST操作发生时,您的变量将填充数据,因此您必须检查它是否为空或是否为isset!

if (isset($user_input) & !empty($user_input)) {
    echo $user_input;
}