POST后设置cookie会发出“未定义索引”通知

时间:2013-03-20 08:13:41

标签: php jquery codeigniter cookies setcookie

我在php中有一个setcookie函数。 我有一个带有输入字段和提交按钮的jquery对话框。当我在输入字段中输入邮政编码并按下提交时,邮政编码将保存在php cookie中。

此cookie将显示在主页的输入字段中。

现在我的问题是,当我没有设置cookie时,例如我将输入字段留空并单击提交它会给我一个错误。但是在输入字段中。

我正在使用codeigniter,这可能是问题所在。

错误:

  

消息:未定义索引:名称文件名:views / navmenu.php行   数量:33

我的设置Cookie和表单代码:

<div id="dialog" class="hidden" title="Welkom bij OostWestRegioBest.nl">
Vul hier uw postcode in.
<form method="post" action"">
Postcode: <input type="text" name="name" size="25">
<input type="submit" value="Opslaan">
<input type="hidden" name="submitted" value="true">
</form>

<?php
// set the cookie with the submitted user data
setcookie('name', $_POST['name']);
?>

<?php
    if(isset($_POST['Submit']))
    {
    header("location: {$_SERVER['PHP_SELF']}");
    }
?>

</div>

我的输入字段,其中cookie将显示在。

<input type="text" value='<?php echo $_COOKIE['name'] ?>'>  

希望有人可以帮助我。

感谢。

2 个答案:

答案 0 :(得分:1)

仅当$ _POST包含索引名称的元素时才设置cookie。

你可以试试这个。

<?php
    // set the cookie with the submitted user data
    setcookie('name', isset($_POST['name']) ? $_POST['name'] : "");
?>

或者只在包含带索引名称的元素时才设置cookie。

<?php
    if (isset($_POST['name'])) {
       // set the cookie with the submitted user data
       setcookie('name', $_POST['name']);
    }
?>

根据您的要求选择任何一种。

答案 1 :(得分:1)

请在提交表单后设置Cookie

if(isset($_POST['Submit'])){
     setcookie('name', $_POST['name']);
}

您可以将输入字段更改为

<input type="text" value='<?php echo isset($_COOKIE['name']) ? $_COOKIE['name'] : '' ?>'>