接收PHP变量

时间:2014-02-10 17:25:44

标签: php variables

接收变量时遇到问题,我收到的错误消息是

注意:未定义的索引:第7行的C:\ Users \ PC \ Documents \ XAMPP \ htdocs \ php \ addpost.php中的标题 注意:未定义的索引:第8行的C:\ Users \ PC \ Documents \ XAMPP \ htdocs \ php \ addpost.php中的文本

// HTML文档

<div id="postdialog" title="Add Post" action="php/addpost.php">
<p>Please Fill in out member information.</p>
<form name="insertmember" action="php/addpost.php" >
<label>Title<input type="text" name="title" id="title"/></label>
<label>Text<textarea name="text"></textarea></label>
<input name="submit" type="submit" value="Submit" id="submit" />  
</form>
</div>

// PHP文件

if ($_POST['submit'] = "submit") {

    $title = $_POST['title']; 
    $text  = $_POST['text']; 

    $errors = array();

    if (empty($_POST['title'])) {
        $errors[] = "Title is Missing";
}
else 
{
    $title = $_POST['title'] 
    if (strlen($fname) > 15 ) {
        $errors[] = "Title is too long";
    }
}

if (empty($_POST["text"])) {
    $errors[] = "Text is Missing";
}   
else 
{
    $text = $_POST['text'] 
    if (strlen($lname) > 30 ) {
        $errors[] = "Text is too long";
    }
}

if (!empty($errors)) {
    print_r ($errors);
}
else 
{
    //DO SOMETHING ELSE
}

5 个答案:

答案 0 :(得分:6)

您的表单中未指定method,因此默认为GET

您需要在表单标记中添加method="post"或在$_GET中搜索您的数据。

答案 1 :(得分:0)

单独注释...如果您使用$title = $_POST['title'];两次而第二个没有;

$text = $_POST['text'];

相同的事情

答案 2 :(得分:0)

迈克的回答是正确的。您也可以使用$_REQUEST来获取变量。它将获得所有内容并获得。

如果您想使用帖子,那么您的表单行应该是这样的:

<form name="insertmember" method="post" action="php/addpost.php" >

另外请注意,在将请求参数分配给变量之前,最好先进行检查。看看这个:)

if(isset($_POST['submit']) and $_POST['submit'] == "submit") {
    $errors = array();
    if(isset($_POST['title'])) {
       if (empty($_POST['title'])) {
         $errors[] = "Title is Missing";
       } else {
         $title = $_POST['title'];
         if(strlen($fname) > 15 ) {
            $errors[] = "Title is too long";
         }
       }
    }

    if(isset($_POST['text'])) {
       if (empty($_POST["text"])) {
          $errors[] = "Text is Missing";
       } else {
          $text = $_POST['text'];
          if(strlen($lname) > 30 ) {
            $errors[] = "Text is too long";
          }
       }
     }

     if(!empty($errors)) {
        print_r ($errors);
      } else {
        //DO SOMETHING ELSE
      }
} 

答案 3 :(得分:0)

给出的其他答案(herehere)已经包含了缺少的内容和应该添加的内容,包括语法错误,所以我不会在答案中重复。

将所有这些放在一起,已经开始分割这个工作副本,包括一些补充。

随附的已修改的HTML表单,如下所示。

<?php
if(isset($_POST['submit']) && $_POST['submit'] = "submit") {

// can also use this instead of above
// if(isset($_POST['submit'])) {

    $errors = array();
    if(isset($_POST['title'])) {
       if (empty($_POST['title'])) {
         $errors[] = "Title is Missing";
       } else {
         $title = $_POST['title'];
         if(strlen($title) > 15 ) {
            $errors[] = "Title is too long";
         }
       }
    }
    if(isset($_POST['text'])) {
       if (empty($_POST["text"])) {
          $errors[] = "Text is Missing";
       } else {
          $text = $_POST['text'];
          if(strlen($lname) > 30 ) {
            $errors[] = "Text is too long";
          }
        }
     }

     if(!empty($errors)) {
        print_r ($errors);
      } else {

echo "Success!"; // Added for testing purposes

        //DO SOMETHING ELSE
      }
}

else
{
// This message will appear if the code was accessed
// without the submit button being SET
echo "SORRY, you can't do that from here.";
}

HTML表格

这:(旁注)

<div id="postdialog" title="Add Post" action="php/addpost.php">

不应仅在action="php/addpost.php"代码中包含<form>

<div id="postdialog" title="Add Post">
<p>Please Fill in out member information.</p>
<form name="insertmember" action="php/addpost.php" method="post">
<label>Title<input type="text" name="title" id="title"/></label>
<label>Text<textarea name="text"></textarea></label>
<input name="submit" type="submit" value="Submit" id="submit" />  
</form>
</div>

答案 4 :(得分:-1)

我首先看到的是:

if($_POST['submit']= "submit") {

并且您应该==而不是=,因为您正在比较事物,而不是分配它们。