请查看附件中我的代码:
<?PHP
session_start();
if (isset($_POST["usernameform"])){
$username = $_POST['usernameform'];
$password1 = $_POST['passwordform'];
$user_name = "XXXX";
$password = "XXXXX";
$database = "XXX";
$server = "XXXX";
$db_handle = mysql_connect($server, $user_name, $password);
$db_found = mysql_select_db($database, $db_handle);
$SQL = "SELECT * FROM login WHERE Username = '$username' AND Password = '$password1' "; //grab all the records from table
$result = mysql_query($SQL)
or die("Error:" . mysql_error());
if (mysql_num_rows($result) > 0){ //if username and password match return number of rows is always 1
$_SESSION['login'] = $username; //by placing this in session it will remember this variable on the page it directs too
while ( $row = mysql_fetch_assoc($result) ){ //lays out array in $result
$_SESSION['ID'] = $row['ID']; //selects from list of array ID
$_SESSION['firstname'] = $row['First_Name'];
echo'<script> window.location="page1.php"; </script> ';
}
} else {
$_SESSION['login'] = '';
print('
<script type="text/javascript"> //place html script for alert. Use single comma for print command here.
alert("Sorry, your username or password could not be recognized")
</script>
');
session_destroy();
}
}
?>
尽管代码在我的本地主机 (wampserver) 上运行良好,但它在我的主机上不起作用并且出现错误:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /.../vhindex.php:1) in /.../vhindex.php on line 2
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /.../vhindex.php:1) in /.../vhindex.php on line 2
session_start();
代码已放在 PHP block 的顶部,并且在生成任何 HTML 输出之前,我完全被难住了。
有什么想法吗?
最佳答案
- 下载Notepad++并在那里打开文件,删除
<?PHP
之前的所有花哨字符 - 确保在
<?PHP
之前没有空格字符,如 ""、制表符或换行符.- 在 Notepad++ 中点击
Encoding
然后UTF-8 without BOM
将文件转换为不带 BOM 的 UTF-8,然后保存。
- 在 Notepad++ 中点击
- 同时添加
ob_start();
之前session_start();
为了安全。
关于PHP 问题 "Cannot send session cookie",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15367131/