亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 4632 | 回復(fù): 7
打印 上一主題 下一主題

Session_start必須寫在前面的苦惱 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2008-03-06 22:00 |只看該作者 |倒序瀏覽
PHP手冊中說,Session_start()之前應(yīng)沒有任何輸出,否則就出錯。那么我現(xiàn)在想做一個用戶登錄的類,這個類中有很多函數(shù)涉及Session_start(),如:初始化用戶登錄函數(shù),判斷是否已經(jīng)登錄函數(shù)。那么我怎么寫這個Session_start()它才能不報錯呢?

有個現(xiàn)成的class可以看一下效果:

<?php

class operateLogin
{
                var $username; //用戶名
                var $userpass; //密碼
                var $userid; //用戶id
                var $userlevel; //用戶級別

                var $authtable="account"; //驗證用數(shù)據(jù)表

                var $usecookie=true; //使用cookie保存sessionid
                var $cookiepath='/'; //cookie路徑
                var $cookietime=3600*24*365; //cookie有效時間

                var $err_mysql="MySQL錯誤"; //mysql出錯提示
                var $err_username="無效用戶名"; //用戶名無效提示
                var $err_user="無效用戶"; //用戶無效提示(被封禁)
                var $err_password="密碼錯誤"; //密碼錯誤提示

                var $err; //出錯提示
                var $errorreport=false; //顯示錯誤

                function Login($dbserv,$dbport,$dbuser,$dbpass,$dbname) { //構(gòu)造函數(shù),連接數(shù)據(jù)庫
                                if(@mysql_pconnect($dbserv.":".$dbport,$dbuser,$dbpass)) {
                                                mysql_select_db($dbname);
                                } else {
                                                $this->errReport($this->err_mysql);
                                                $this->err=$this->err_mysql;
                                }
                }

                function isLoggedin() { //判斷是否登錄
                                if(isset($_COOKIE['sid'])) { //如果cookie中保存有sid
                                        session_start();
                                        session_id($_COOKIE['sid']);
                                        $this->username=$_SESSION['username'];
                                        $this->userid=$_SESSION['userid'];
                                        $this->userlevel=$_SESSION['userlevel'];
                                        return true;
                                } else { //如果cookie中未保存sid,則直接檢查session
                                                session_start();
                                                if(isset($_SESSION['username'])) return true;
                                }
                                return false;
                }

                function userAuth($username,$userpass) {//用戶認證
                                $this->username=$username;
                                $this->userpass=$userpass;
                                $query="select * from `".$this->authtable."` where `username`='$username';";
                                $result=mysql_query($query);
                                if(mysql_num_rows($result)!=0) { //找到此用戶
                                                $row=mysql_fetch_array($result);
                                                if($row['bannd']==1) { //此用戶被封禁
                                                                                $this->errReport($this->err_user);
                                                                                $this->err=$this->err_user;
                                                                                return false;
                                                } elseif(md5($userpass)==$row['userpass']){ //密碼匹配
                                                                        $this->userid=$row['id'];
                                                                        $this->userlevel=$row['userlevel'];
                                                                        return true;
                                                } else { //密碼不匹配
                                                                        $this->errReport($this->err_password);
                                                                        $this->err=$this->err_password;
                                                                        return false;
                                                }
                                } else { //沒有找到此用戶
                                                $this->errReport($this->err_username);
                                                $this->err=$this->err_username;
                                                return false;
                                }
                }

                function setSession() { //置session
                                $sid=uniqid('sid'); //生成sid
                                session_id($sid);
                                session_start();
                                $_SESSION['username']=$this->username; //給session變量賦值
                                $_SESSION['userid']=$this->userid; //..
                                $_SESSION['userlevel']=$this->userlevel; //..
                                if($this->use_cookie) { //如果使用cookie保存sid
                                        if(!setcookie('sid',$sid,time()+$this->cookietime,$this->cookiepath))
                                        $this->errReport("set cookie failed");
                                } else {
                                                setcookie('sid','',time()-3600*24*365); //清除cookie中的sid
                                }
                }

                function userLogout() { //用戶注銷
                                session_start();
                                unset($_SESSION['username']); //清除session中的username
                                if(setcookie('sid','',time()-3600*24*365)) //清除cookie中的sid
                                return true;
                                else
                                return false;
                }

                function errReport($str) { //報錯
                                if($this->error_report)
                                echo "ERROR: $str";
                }
}

?>

[ 本帖最后由 fisherjams 于 2008-3-6 22:12 編輯 ]

論壇徽章:
1
技術(shù)圖書徽章
日期:2013-12-05 23:25:45
2 [報告]
發(fā)表于 2008-03-06 22:41 |只看該作者
session.auto_start boolean
session.auto_start 指定會話模塊是否在請求開始時自動啟動一個會話。默認為 0(不啟動)。

論壇徽章:
0
3 [報告]
發(fā)表于 2008-03-06 23:44 |只看該作者
謝謝了。
我測試下,回頭貼結(jié)果。

論壇徽章:
0
4 [報告]
發(fā)表于 2008-03-07 12:08 |只看該作者
我用的Xampp,更改了 \$XAMPP$\PHP\php.ini中session.auto_start為1,結(jié)果重啟Xampp的apache還是不行,phpinfo.php中一直顯示這個值為off.

上網(wǎng)查了也一頭霧水。有人能幫我嗎?

論壇徽章:
0
5 [報告]
發(fā)表于 2008-03-07 13:39 |只看該作者
在文件最開頭寫上就可以了

論壇徽章:
0
6 [報告]
發(fā)表于 2008-03-07 14:40 |只看該作者
是在這個php文件的開頭寫session_start();然后下面的$_SESSION[]之前都不要寫嗎?我這樣測試過,PHP5環(huán)境,報錯了。

論壇徽章:
0
7 [報告]
發(fā)表于 2008-03-07 16:29 |只看該作者
每個文件上面都寫唄...

論壇徽章:
0
8 [報告]
發(fā)表于 2008-03-07 21:14 |只看該作者
問題解決了,確實寫在類里面是可以的,是因為引用的時候,在session_start()之前有輸出,所以報錯了。謝謝樓上幾位熱心腸子。。。。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP