登陆问题

u010083667 2013-06-05 09:42:58
登录的时候报错
Warning: Cannot modify header information - headers already sent by (output started at D:\wamp\www\bbb\login.php:2) in D:\wamp\www\bbb\includes\login.func.php on line 36

Warning: Cannot modify header information - headers already sent by (output started at D:\wamp\www\bbb\login.php:2) in D:\wamp\www\bbb\includes\login.func.php on line 37

Warning: Cannot modify header information - headers already sent by (output started at D:\wamp\www\bbb\login.php:2) in D:\wamp\www\bbb\includes\global.func.php on line 40



global.func.php代码如下:
<?php
/**
* TestGuest Version1.0
* ================================================
* Copy 2010-2012 yc60
* Web: http://www.yc60.com
* ================================================
* Author: Lee
* Date: 2010-8-11
*/



/**
*_runtime()是用来获取执行耗时
* @access public 表示函数对外公开
* @return float 表示返回出来的是一个浮点型数字
*/
function _runtime() {
$_mtime = explode(' ',microtime());
return $_mtime[1] + $_mtime[0];
}

/**
* _alert_back()表是JS弹窗
* @access public
* @param $_info
* @return void 弹窗
*/
function _alert_back($_info) {
echo "<script type='text/javascript'>alert('$_info');history.back();</script>";
exit();
}

function _location($_info,$_url) {
if (!empty($_info)) {
echo "<script type='text/javascript'>alert('$_info');location.href='$_url';</script>";
exit();
} else {
header('Location:'.$_url);
}
}

/**
* _login_state登录状态的判断
*/

function _login_state() {
if (isset($_COOKIE['username'])) {
_alert_back('登录状态无法进行本操作!');
}
}


/**
* _session_destroy删除session
*/

function _session_destroy() {
session_destroy();
}

/**
* 删除cookies _unsetcookies()
*/

function _unsetcookies() {
setcookie('username','',time()-1);
setcookie('uniqid','',time()-1);
_session_destroy();
_location(null,'index.php');
}


/**
*
*/

function _sha1_uniqid() {
return _mysql_string(sha1(uniqid(rand(),true)));
}

/**
* _mysql_string
* @param string $_string
* @return string $_string
*/

function _mysql_string($_string) {
//get_magic_quotes_gpc()如果开启状态,那么就不需要转义
if (!GPC) {
return mysql_real_escape_string($_string);
}
return $_string;
}


/**
* _check_code
* @param string $_first_code
* @param string $_end_code
* @return void 验证码比对
*/

function _check_code($_first_code,$_end_code) {
if ($_first_code != $_end_code) {
_alert_back('验证码不正确!');
}
}

/**
* _code()是验证码函数
* @access public
* @param int $_width 表示验证码的长度
* @param int $_height 表示验证码的高度
* @param int $_rnd_code 表示验证码的位数
* @param bool $_flag 表示验证码是否需要边框
* @return void 这个函数执行后产生一个验证码
*/
function _code($_width = 75,$_height = 25,$_rnd_code = 4,$_flag = false) {

//创建随机码
for ($i=0;$i<$_rnd_code;$i++) {
$_nmsg .= dechex(mt_rand(0,15));
}

//保存在session
$_SESSION['code'] = $_nmsg;

//创建一张图像
$_img = imagecreatetruecolor($_width,$_height);

//白色
$_white = imagecolorallocate($_img,255,255,255);

//填充
imagefill($_img,0,0,$_white);

if ($_flag) {
//黑色,边框
$_black = imagecolorallocate($_img,0,0,0);
imagerectangle($_img,0,0,$_width-1,$_height-1,$_black);
}

//随即画出6个线条
for ($i=0;$i<6;$i++) {
$_rnd_color = imagecolorallocate($_img,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));
imageline($_img,mt_rand(0,$_width),mt_rand(0,$_height),mt_rand(0,$_width),mt_rand(0,$_height),$_rnd_color);
}

//随即雪花
for ($i=0;$i<100;$i++) {
$_rnd_color = imagecolorallocate($_img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));
imagestring($_img,1,mt_rand(1,$_width),mt_rand(1,$_height),'*',$_rnd_color);
}

//输出验证码
for ($i=0;$i<strlen($_SESSION['code']);$i++) {
$_rnd_color = imagecolorallocate($_img,mt_rand(0,100),mt_rand(0,150),mt_rand(0,200));
imagestring($_img,5,$i*$_width/$_rnd_code+mt_rand(1,10),mt_rand(1,$_height/2),$_SESSION['code'][$i],$_rnd_color);
}

//输出图像
header('Content-Type: image/png');
imagepng($_img);

//销毁
imagedestroy($_img);
}












?>

...全文
107 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ImN1 2013-06-05
  • 打赏
  • 举报
回复
用编辑器打开,另存,保存时选择无bom utf-8,有些编辑器是无签名utf-8,意思一样
u010083667 2013-06-05
  • 打赏
  • 举报
回复
引用 6 楼 snmr_com 的回复:
多数是有utf-8 bom了
这个应该怎么改?
ImN1 2013-06-05
  • 打赏
  • 举报
回复
多数是有utf-8 bom了
u010083667 2013-06-05
  • 打赏
  • 举报
回复
谁来教教我~谢谢
u010083667 2013-06-05
  • 打赏
  • 举报
回复
没有啊 上边就是那个代码
xuzuning 2013-06-05
  • 打赏
  • 举报
回复
你先看看 login.php 第 2 行是什么?是否有 BOM 头
u010083667 2013-06-05
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
output started at D:\wamp\www\bbb\login.php:2 是说在 D:\wamp\www\bbb\login.php 第2行发现有输出
这是login.php的代码: <?php /** * TestGuest Version1.0 * ================================================ * Copy 2010-2012 yc60 * Web: http://www.yc60.com * ================================================ * Author: Lee * Date: 2010-8-21 */ session_start(); //定义个常量,用来授权调用includes里面的文件 define('IN_TG',true); //定义个常量,用来指定本页的内容 define('SCRIPT','login'); //引入公共文件 require dirname(__FILE__).'/includes/common.inc.php'; //登录状态 _login_state(); //开始处理登录状态 if ($_GET['action'] == 'login') { //为了防止恶意注册,跨站攻击 _check_code($_POST['code'],$_SESSION['code']); //引入验证文件 include ROOT_PATH.'includes/login.func.php'; //接受数据 $_clean = array(); $_clean['username'] = _check_username($_POST['username'],2,20); $_clean['password'] = _check_password($_POST['password'],6); $_clean['time'] = _check_time($_POST['time']); //到数据库去验证 if (!!$_rows = _fetch_array("SELECT tg_username,tg_uniqid FROM tg_user WHERE tg_username='{$_clean['username']}' AND tg_password='{$_clean['password']}' AND tg_active='' LIMIT 1")) { _close(); _session_destroy(); _setcookies($_rows['tg_username'],$_rows['tg_uniqid'],$_clean['time']); _location(null,'index.php'); } else { _close(); _session_destroy(); _location('用户名密码不正确或者该账户未被激活!','login.php'); } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>多用户留言系统--登录</title> <?php require ROOT_PATH.'includes/title.inc.php'; ?> <script type="text/javascript" src="js/code.js"></script> <script type="text/javascript" src="js/login.js"></script> </head> <body> <?php require ROOT_PATH.'includes/header.inc.php'; ?> <div id="login"> <h2>登录</h2> <form method="post" name="login" action="login.php?action=login"> <dl> <dt></dt> <dd>用 户 名:<input type="text" name="username" class="text" /></dd> <dd>密  码:<input type="password" name="password" class="text" /></dd> <dd>保  留:<input type="radio" name="time" value="0" checked="checked" /> 不保留 <input type="radio" name="time" value="1" /> 一天 <input type="radio" name="time" value="2" /> 一周 <input type="radio" name="time" value="3" /> 一月</dd> <dd>验 证 码:<input type="text" name="code" class="text code" /> <img src="code.php" id="code" /></dd> <dd><input type="submit" value="登录" class="button" /> <input type="button" value="注册" id="location" class="button location" /></dd> </dl> </form> </div> <?php require ROOT_PATH.'includes/footer.inc.php'; ?> </body> </html>
xuzuning 2013-06-05
  • 打赏
  • 举报
回复
output started at D:\wamp\www\bbb\login.php:2 是说在 D:\wamp\www\bbb\login.php 第2行发现有输出
u010083667 2013-06-05
  • 打赏
  • 举报
回复
搞定啦 我php.ini的output_buffering是off 改成on就行了
u010083667 2013-06-05
  • 打赏
  • 举报
回复
求着急啊新手

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧