第一次在PHP中使用$ _SESSION,我认为我做错了。我收到语法错误

时间:2010-02-24 03:08:16

标签: php session

这是 registerFormOne.php 的代码:

<html>
<head>
    <title>Registration Form - 1 of 2</title>
</head>

<body>
    <h1>Registration - Part 1 of 2</h1>
    <p>Please fill in all the required information before submitting the information.</p>
    <form action="registerFormTwo.php" method="post">
        First Name:<input type="text" name="firstName" /><br /><?php session_start(); $_SESSION['firstName'] = firstName; ?>
        Last Name:<input type="text" name="firstName" /><br /><?php session_start(); $_SESSION['firstName'] = firstName; ?>
        Age:<input type="text" name="firstName" /><br /><?php session_start(); $_SESSION['firstName'] = firstName; ?>
        Date of Birth:<input type="text" name="firstName" /><br /><?php session_start(); $_SESSION['firstName'] = firstName; ?>

        <input type="submit" />
    </form>
</body>

这是我得到的错误:

  

警告:session_start()[function.session-start]:无法发送会话cookie - 已在C:\ XAMPP \中发送(在C:\ XAMPP \ xampp \ htdocs \ registerFormOne.php:10处开始的输出)的标头第10行的xampp \ htdocs \ registerFormOne.php

可能是什么错误?另外,我不确定我应该将值保存到会话中。在ASP中,我会把它放在btn_Click方法中;但是在PHP中它是另一个世界。

谢谢一群人。 :)

4 个答案:

答案 0 :(得分:4)

首先,session_start()会将cookie发送到浏览器 - 需要在发送任何其他输出之前调用它。因为您在拨打电话之前输出HTML,所以您收到了错误。

其次,你只需要调用一次。

答案 1 :(得分:1)

您只需拨打一次session_start()即可。此外,您似乎混淆了客户端上发生的事情与服务器上发生的事情。如果您有表单元素,则需要在服务器上处理它们(通过$_GET$_POST,具体取决于您的表单类型),然后将它们分配给会话。

答案 2 :(得分:0)

导致此错误的原因是您在调用session_start()之前将文本输出发送到浏览器; ,session_start()需要在输出任何文本之前调用。

此外,您只需要调用session_start()一次即可使用会话

我认为你需要仔细研究会议的工作方式,这里有一个很好地解释基础知识的网站 - http://www.tizag.com/phpT/phpsessions.php

此外,您使用不需要使用会话的表单提交数据 - 您可以使用可以正常工作的发布数据。

答案 3 :(得分:0)

正如人们所说,在输出任何HTML之前应调用session_start()。

<?php session_start() ?>
<html>

etc...

更大的问题还在于你正在打电话

<?php $_SESSION['something'] ?>

绝对没有。

正确的用法是在php文件中创建你的表单,你的应用程序就是这样做的

<?php
    if($_SERVER['REQUEST_METHOD'] == "POST")
    {
         // Tell the server to start capturing session data.
         session_start();

         // set the hash key for first_name
         $_SESSION['first_name'] = $_POST['first_name'];

         // retrieves the first_name hash key for the session array.
         print $_SESSION['first_name'];
    }

在设置或访问$ _SESSION之前,您必须启动它,除非在服务器上设置了会话自动启动。