未定义的变量:在表单提交的文本字段中保存用户输入的数据

时间:2014-04-30 11:35:51

标签: php html forms session variables

当error_reporting(E_ALL);打开我有以下通知示例

Notice:  Undefined variable: name in /home/user/public_html/directory/subdirectory/test.php on line 111
Notice:  Undefined variable: identity in /home/user/public_html/directory/subdirectory/test.php on line 116

在每个表单字段中,如果我想在用户提交表单后使用会话将用户输入的数据保存在文本字段中。

我当前代码的示例如下:

GetSQLValueString($_POST['name'], "text"),
GetSQLValueString($_POST['identity'], "text")

  <?php  $_SESSION['form'] = $_POST; ?>

  <form action="<?php echo $editFormAction; ?>" method="post" name="userform" id="userform">
  <input name="name" type="text" id="name" value="<php$_SESSION['form']['name'] = '';?><php $_SESSION['form']['name']; ?>" size="25" />
  <input name="identity" type="text" id="identity" value="<php$_SESSION['form']['identity'] = '';?><php $_SESSION['form']['identity']; ?>" size="25" />

and so on.............

我建议使用

消除未定义的索引
<php$_SESSION['form']['name'] = '';?>

作为文本字段的值,如

 <input name="name" type="text" id="name" value="<php$_SESSION['form']['name'] = '';?><php $_SESSION['form']['name']; ?>" size="25" />

上面的代码解析了未定义的索引通知,但产生了未定义的变量通知。

当错误报告关闭时,表单很有效。

任何想法,在这种情况下如何定义未定义的变量?

3 个答案:

答案 0 :(得分:2)

纠正它

<input name="name" type="text" id="name" value="<php$_SESSION['form']['name'] = '';?><php $_SESSION['form']['name']; ?>" size="25" />

<input name="name" type="text" id="name" value="<?php echo $_SESSION['form']['name']; ?>" size="25" />

答案 1 :(得分:2)

引发此通知是因为在发布表单之前,$_SESSION['form']中没有值,但您尝试显示它们。您可以通过检查帖子来解决此问题 如果没有,请用空数组填充$_SESSION['form']:     

if($_POST){
    $_SESSION['form'] = $_POST; 
}else{
    $_SESSION['form'] = array('name'=>'','identity'=>'' //etc);

}

?>


  <form action="<?php echo $editFormAction; ?>" method="post" name="userform" id="userform">
  <input name="name" type="text" id="name" value="<?php echo $_SESSION['form']['name'] ;?>" size="25" />
  <input name="identity" type="text" id="identity" value="<?php echo $_SESSION['form']['identity'];?>" size="25" />

或者,您可以在回显每个变量之前使用isset

另请注意,您必须使用echoprint来实际显示值。

答案 2 :(得分:0)

问题是因为没有定义变量所以一想到.....! 将您的会话数组定义为null

<?php  

$_SESSION['form'] = array(); //to define null

if(isset($_POST)){
  $_SESSION['form'] = $_POST; 
}

现在你的代码非常谨慎,如:_

<input name="name" value="<?php echo $_SESSION['form']['name']; ?>"  />