请查看附件中我的代码:
<?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)上工作得很好,但它在我的主机上不起作用,我得到了错误:
警告:session_start() [function。session-start]:不能发送会话Cookie -头已经发送(输出开始于/…/vhindex.php: 1)在第2行/…/vhindex.php
警告:session_start() [function。session-start]:不能发送会话缓存限制器-头已经发送(输出开始于/…/vhindex.php: 1)在第2行/…/vhindex.php
session_start();
代码被放置在PHP块的顶部,在任何HTML输出之前,我完全被难住了。
任何想法?
- 下载notepad++并打开文件,删除
<?PHP
前的所有花哨字符 - 确保在
<?PHP
之前没有像" "或制表符或换行符这样的空白字符。- 在notepad++中单击
Encoding
,然后单击UTF-8 without BOM
将文件转换为没有BOM的UTF-8,然后保存。
- 在notepad++中单击
- 在
session_start();
之前添加ob_start();
以确保安全。
如果从vhindex.php加载-.php文件。确保按正确的顺序进行。如。require_once 'handle-user-login.php ';
callToYourFunction ();如果你的会话已经被发送,你会得到这个警告。