设置cookie,同时处理表单信息

时间:2014-10-15 23:43:06

标签: php forms cookies

我试图找出为什么我的cookie没有被设置。我试图在处理表单信息的同一文件中设置它。这是我的设置:

  1. 页面包含表单
  2. 提交后,所有信息都会发送至:表单操作=" ../../_ includes / achieve-more-form-handler.php"
  3. 在此表单处理程序中是set cookie脚本
  4. 然后将用户提交回同一页面(因为如果设置了cookie,页面将会更改。)
  5. 现在,我发现它没有特别设置的方式是,如果您在存储cookie时回到它,表单不应出现在步骤1中。但简单地说,没有存储cookie。

    每次填写表单时我都会收到一封电子邮件,并且每次我都会收到电子邮件,因此所有关于表单信息的信息都会按照原样进行处理。

    用户页面

    <?php
    
    if (isset($_COOKIE['achieve-more-cookie'])) {
        include(DOCUMENT_ROOT.'_includes/collapse-content.php');
    } else {  ?>
    
    <div id="step1">
    
        <div id="step1-formcontainer" class="ppc-forms">
    
        <h3>Example Heading #1</h3>
    
        <form action="../../_includes/achieve-more-form-handler.php" method="POST">
            <label>Name:</label>
            <input type="text" name="name" id="name"<?php echo(isset($name)?' value="'.$name.'"':''); ?> required /><br />
            <label>Email:</label>
            <input type="email" name="email" id="email"<?php echo(isset($email)?' value="'.$email.'"':''); ?> required /><br />
            <input type="submit" name="submit" value="Submit" />
        </form>
    
        </div>
    
    </div>
    
    <?php } ?>
    

    FORM-HANDLER

    <?php
    
    if(!empty($_POST)) {
    
    //set cookie
        $time = time() + 60;
        setcookie('achieve-more-cookie',$time);
        $cookie = $_COOKIE['achieve-more-cookie'];
    
    .... the rest of this page is simply the form fields being processed etc.
    

1 个答案:

答案 0 :(得分:1)

您的Cookie已设置,但其路径设置为/ _includes /目录。这意味着您的表单页面无法读取cookie。

Name    achieve-more-cookie
Value   test
Host    dev.performancepartnership.com
* Path  /_includes/
Expires Thu, 16 Oct 2014 01:38:29 GMT
Secure  No
HttpOnly    No

http://en.wikipedia.org/wiki/HTTP_cookie#Domain_and_Path。可以使用setcookie()(http://php.net/manual/en/function.setcookie.php)配置单独的路径。

setcookie('achieve-more-cookie','cookievalue',time()+60,'/');