0

我收到 $_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>

它在错误旁边显示文本字段和反转按钮。而且当我按下按钮时,什么也不会发生。

4

3 回答 3

6

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

您的if语句试图修剪不存在的数组索引,因此出现错误。您必须先检查您的索引是否存在。

如果有人想知道 - 我使用, 暗示(或至少,我从中推断)包含空字符串的正确集合是不可接受的,empty而不是isset作为 OP 。但是,这不会解决包含一堆空格的情况。trim$_POST['str']$_POST['str']

于 2012-11-08T15:55:41.870 回答
0

$str 不一定是数组。为了循环它,它需要是一个数组。它只是从 $_POST['str'] 复制该值,所以当您发布帖子时

确保它是一个数组

if (is_array($str))
于 2012-11-08T16:14:32.643 回答
0

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

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

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

...

</html>
于 2012-11-08T15:58:00.637 回答