PHP $ _POST错误

时间:2012-11-08 15:53:43

标签: php forms post undefined

我在$ _POST ['str']中遇到以下错误:

  

注意:未定义的索引:第12行的C:\ Program Files \ EasyPHP-5.3.8.0 \ www \ strrev.php中的str

我花了太多时间为此寻找答案,但没有运气! 请看一下代码,让我知道它有什么问题?

<html>
<head>
<title></title>
</head>
<body>
  <?php 
    if (trim($_POST['str'])) {
      $str = $_POST['str'];
  $len = strlen($str);
      for($i=($len-1); $i>=0;$i--) {
      echo $str[$i];
      } 
} else {
  ?>
<form method="post" action="">
    <input type="text" name="str" />
    <input type="button" name="submit" value="Reverse" />
    </form>
    <?php
  }
  ?>
</body>
</html>

它显示错误旁边的文本字段和反向按钮。 而当我按下按钮时也不会发生任何事情。

3 个答案:

答案 0 :(得分:6)

if (trim($_POST['str']))更改为if (!empty($_POST['str']))

您的if语句正在尝试修剪不存在的数组索引,从而导致错误。您必须先检查索引是否存在。

如果有人想知道 - 我使用empty代替isset作为OP,使用trim,暗示(或至少,我从此推断)正确设置包含空字符串的$_POST['str']是不可接受的。但是,这并不能解决$_POST['str']包含大量空格的情况。

答案 1 :(得分:0)

您没有检查POST是否确实发生过:

<html>
...
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
   if ($_POST yada yada yada) {
       ...
   }
}
?>

<form action="" method="POST">
...
</form>

...

</html>

答案 2 :(得分:0)

$ str不一定是数组。为了遍历它,它需要是一个数组。 它只是从$ _POST ['str']复制该值,所以当你做帖子时

确保它是带

的数组
if (is_array($str))