之前遇到过一次然后过两天故障又消失了就没去管~~
这次要深究。
求原因求解决方法PS:租用的空间,所以无法修改php.ini本地调试正常,登陆正常,SESSION正常上传到虚拟空间之后,登陆正常,SESSION失效
echo phpinfo()部分如下config.phprequire('./libs/Smarty.class.php');
$smarty = new Smarty;
//$smarty->force_compile = true;
$smarty->debugging = false;
$smarty->caching = false;
$smarty->cache_lifetime = 120;
login.php<?php
require('config.php');
$return=$_GET['return'];
$smarty->assign("maintitle","登陆界面",true);
$smarty->assign('return_url',$return);
$smarty->display('login.html');
?>login_check.php<?php
require('conn.php');
require('config.php');
session_start();
//取数据,省略
if(mysql_num_rows($query)==1)
{
if(密码正确)
{
$userid=$result['user_id'];
$_SESSION['userid']=$userid;
if($return=="")
{
$response="<script>alert('成功登陆');</script>
<meta http-equiv=refresh content='0; url=index.php'>";
}
else
{
$response="<script>alert('成功登陆');</script>
<meta http-equiv=refresh content='0; url=$return'>";
}
}
else
{
$response="<script>alert('密码错误');</script>
<meta http-equiv=refresh content='0; url=login.php'>";
}
}
else
{
$response="<script>alert('用户名错误');</script>
<meta http-equiv=refresh content='0; url=login.php'>";
}
$smarty->assign('status',$response,true);
$smarty->display('login_check.html');
?>
index.php<?php
require('config.php');
require('conn.php');
if(!$_SESSION['userid'])
{
$smarty->assign("action","<a href=\"login.php\">登陆</a> <a href=\"reg.php\">注册</a>");
}
else
{
$smarty->assign("action","{$userid}<a href=\"logout.php\">注销</a>");
}
//省略$smarty->assign('kind',$tree);
$smarty->assign("welcome","欢迎");
$smarty->assign("userid",$_SESSION['userid']);
$smarty->display('index.html');
?>
这次要深究。
求原因求解决方法PS:租用的空间,所以无法修改php.ini本地调试正常,登陆正常,SESSION正常上传到虚拟空间之后,登陆正常,SESSION失效
echo phpinfo()部分如下config.phprequire('./libs/Smarty.class.php');
$smarty = new Smarty;
//$smarty->force_compile = true;
$smarty->debugging = false;
$smarty->caching = false;
$smarty->cache_lifetime = 120;
login.php<?php
require('config.php');
$return=$_GET['return'];
$smarty->assign("maintitle","登陆界面",true);
$smarty->assign('return_url',$return);
$smarty->display('login.html');
?>login_check.php<?php
require('conn.php');
require('config.php');
session_start();
//取数据,省略
if(mysql_num_rows($query)==1)
{
if(密码正确)
{
$userid=$result['user_id'];
$_SESSION['userid']=$userid;
if($return=="")
{
$response="<script>alert('成功登陆');</script>
<meta http-equiv=refresh content='0; url=index.php'>";
}
else
{
$response="<script>alert('成功登陆');</script>
<meta http-equiv=refresh content='0; url=$return'>";
}
}
else
{
$response="<script>alert('密码错误');</script>
<meta http-equiv=refresh content='0; url=login.php'>";
}
}
else
{
$response="<script>alert('用户名错误');</script>
<meta http-equiv=refresh content='0; url=login.php'>";
}
$smarty->assign('status',$response,true);
$smarty->display('login_check.html');
?>
index.php<?php
require('config.php');
require('conn.php');
if(!$_SESSION['userid'])
{
$smarty->assign("action","<a href=\"login.php\">登陆</a> <a href=\"reg.php\">注册</a>");
}
else
{
$smarty->assign("action","{$userid}<a href=\"logout.php\">注销</a>");
}
//省略$smarty->assign('kind',$tree);
$smarty->assign("welcome","欢迎");
$smarty->assign("userid",$_SESSION['userid']);
$smarty->display('index.html');
?>
虚拟空间上报错如下Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at 、、/login_check.php on line 2Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /、、login_check.php on line 2
<?php
session_start();
require('config.php');
require('conn.php');
如果有BOM头,还请删去
你可以试一试把所有的php脚本中?>都给删除掉试一试(或者所有的PHP脚本文件?>结束符之后不要留任何空白符号)。
试一试!
用的是smarty~~用工具检测了一下~脚本都没有bom头~~模板页存在~~
然后清除了模板页的bom头之后~~
再打开页面~~login_check.php不报错了~~但是session也没有生效~~而且页面变成乱码了~~
如果代码没有错,那就是有BOM头,也有可能是php文件的BOM头
请看#6....已经删除bom头~~文件编码都一致~~是UTF8能否抽空加小弟QQ交流一下?503959718
可以在页面的最前面加入 @session_start();
测试账号密码都是pingtai
服务器空间上的session.auto_star=OFF
而我本机localhost的是开着的~~然后~~我的登陆界面还引入有一个incode.php~是用来显示验证码的,里面有一句是session的
$_SESSION['adminrand']=strtolower($randval);
然后login_check.php会使用这个session值来检查验证码输入是否正确~~
问题会不会是在这里?具体如下
模板页面login.html<form action="login_check.php" method="post">
<p align="center">{$maintitle}</p>
<p align="center">账户
<input name="user" type="text" />
</p>
<p align="center">密码
<input name="pwd" type="password" />
</p>
<p align="center">验证码<img src="./incode.php" alt="点击刷新验证码" onclick="javascript:this.src='./incode.php?id='+Math.random()" />
<input name="incode" type="text" id="incode" size="6" />
</p>
<p align="center">
<input type="submit" name="submit" id="submit" value="提交">
</p>
</form>
验证码文件incode.php<?php
$width=50;
$height=20;
ob_start("Content-type:image/gif");
$randval=randstr(4);
$im=imagecreatetruecolor($width, $height);
$r=array(255,215,235,195,175);
$g=array(255,215,235,195,175);
$b=array(255,215,235,195,175);
$key=rand(0,4);
$backcolor=imagecolorallocate($im, $r[$key], $g[$key], $b[$key]);$pointcolor=imagecolorallocate($im,255,170,255);
imagefill($im,0,0,$backcolor);
$stringcolor=imagecolorallocate($im,0,0,0);
for ($i=0;$i<=100;$i++)
{
$pointx=rand(2,$width-2);
$pointy=rand(2,$height-2);
imagesetpixel($im, $pointx, $pointy, $pointcolor);
}
imagestring($im,3,5,1,$randval,$stringcolor);
$imagefun='Imagegif';
$imagefun($im);
imagedestroy($im);
function randstr($len=10)
{
$chars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
$string="";
while(strlen($string)<$len)
{
$string.=substr($chars,(rand()%strlen($chars)),1);
}
return $string;
}
$_SESSION['adminrand']=strtolower($randval);
?>