这是 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中它是另一个世界。
谢谢一群人。 :)
答案 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之前,您必须启动它,除非在服务器上设置了会话自动启动。