热搜:NVER node 开发 php

登陆问题

2024-09-14 13:40:02
登陆问题

登录的时候报错
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 "";
exit();
}

function _location($_info,$_url) {
if (!empty($_info)) {
echo "";
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 $_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 $_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 $_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 $_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);
}












?>


回复讨论(解决方案)

output started at D:\wamp\www\bbb\login.php:2
是说在 D:\wamp\www\bbb\login.php 第2行发现有输出

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');
}
}
?>
nbsp;html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">



多用户留言系统--登录
<?php
require ROOT_PATH.'includes/title.inc.php';
?>




<?php
require ROOT_PATH.'includes/header.inc.php';
?>


登录





用 户 名:

密  码:

保  留: 不保留  一天  一周  一月

验 证 码: 

 





<?php
require ROOT_PATH.'includes/footer.inc.php';
?>



你先看看 login.php 第 2 行是什么?是否有 BOM 头

没有啊  上边就是那个代码

谁来教教我~谢谢

多数是有utf-8 bom了

多数是有utf-8 bom了
这个应该怎么改?

用编辑器打开,另存,保存时选择 无bom utf-8,有些编辑器是 无签名utf-8,意思一样

求着急啊新手

搞定啦  我php.ini的output_buffering是off  改成on就行了