【发布时间】:2014-04-17 04:22:38
【问题描述】:
我正在使用一个登录系统,如果你像这样登录,你会得到一个 cookie:
此代码在 login.php 中:
if ($_SESSION['admintype']=="Admin") {
setcookie(Adminingelogd, date("F jS - g:i a"), $seconds);
header("location:admin/E2/e2admin.php");
}
当你进入 e2admin.php 页面时,上面的代码如下:
if(!isset($_COOKIE['Admin'])) {
header("location:../../index.php");
}
因此,如果您没有 cookie,您将发送回索引页面。 在我的本地服务器上一切正常,但是当我上网并将其放在服务器上时出现错误:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at myURL/login.php:13) in myURL/login.php on line 14
还有:
Warning: Cannot modify header information - headers already sent by (output started at MyURL/login.php:13) in MyURL/login.php on line 42
这是我的整个 login.php 文件。
<?php
session_start();
include "connect.php";
$dbhandle = mysql_connect($hostname, $username, $password) or die("Kan niet inloggen");
$selected = mysql_select_db("alexander_voetbalstats", $dbhandle);
$myusername = $_POST['inlognaam'];
$mypassword = $_POST['wachtwoord'];
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$query = "SELECT * FROM users WHERE Username='$myusername' and Password='$mypassword'";
$result = mysql_query($query);
$count = mysql_num_rows($result);
//$resultt = mysql_query($sql);
mysql_close();
if($count==1){
$seconds = 9999 + time();
$row = mysql_fetch_array($result);
$_SESSION['admintype'] = $row['admintype'];
if ($_SESSION['admintype']=="Admin") {
//setcookie(E2ingelogd, date("F jS - g:i a"), $seconds);
header("location:admin/E2/e2admin.php");
}
else if ($_SESSION['admintype']=="Visitor") {
//setcookie(adminingelogd, date("F jS - g:i a"), $seconds);
header("location:nieuwegebruiker.php");
}
else {
header("location:index.php");
}
}else{
echo 'Incorrect Username or Password';
}
?>
我做错了什么?
【问题讨论】:
-
所以输出从第 13 行开始。原始脚本中的第 13 行是什么?我猜是一个警告,可能是关于已弃用的
mysql_*函数。你应该真正阅读 sql injection。并且永远不要存储纯文本密码,始终使用加盐哈希。 -
所以你之前有输出。删除 / 把它放在标题调用之后。
-
您的代码易受 SQL 注入攻击;你应该阅读how to prevent them in PHP。
标签: php mysql cookies login admin