[公告] 痞客邦「應用市集」新 App 上架-iFontCloud Professional[公告] 痞客邦後台發表文章提供插入多張圖片新功能[公告]痞客邦新服務上線 部落客商店聚集就在《痞市集》[公告] 部落格「快捷功能BAR」改版介紹[公告] 痞客邦「快捷功能BAR」6月4日改版通知
公告版位

      因為全棋同學的系統需求,雖然會員機制並不難,他一定也很快就學會了,而我還是寫此教學來引導他,幫助他系統擴展的更快,相信他的系統在未來也一定會很有用的! 而這個教學主要是說明session應用在會員機制上,而教學的程式碼還是有些地方有沒有考慮的很周詳,安全上還是會有瑕疵,希望大家見諒。

以下為資料表的欄位資料:
member_table

以下為會員系統示意圖:
login示意圖

(1) 首頁 - 登入頁面 (index.php)
<!-- 設定網頁編碼為UTF-8 -->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<form name="form" method="post" action="connect.php">
帳號:<input type="text" name="id" /> <br>
密碼:<input type="password" name="pw" /> <br>
<input type="submit" name="button" value="登入" />&nbsp;&nbsp;
<a href="register.php">申請帳號</a>
</form>

(2) php連結MySQL資料庫語法(mysql_connect.inc.php)
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
//資料庫設定
//資料庫位置

$db_server = "localhost";
//資料庫名稱
$db_name = "mydb";
//資料庫管理者帳號
$db_user = "root";
//資料庫管理者密碼
$db_passwd = "1234";

//對資料庫連線
if(!@mysql_connect($db_server, $db_user, $db_passwd))
        die("無法對資料庫連線");

//資料庫連線採UTF8
mysql_query("SET NAMES utf8");

//選擇資料庫
if(!@mysql_select_db($db_name))
        die("無法使用資料庫");
?> 

(3) 會員ID、PW與MySQL資料庫作認證(connect.php)
<?php session_start(); ?>
<!--上方語法為啟用session,此語法要放在網頁最前方-->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
//連接資料庫
//只要此頁面上有用到連接MySQL就要include它

include("mysql_connect.inc.php");
$id = $_POST['id'];
$pw = $_POST['pw'];

//搜尋資料庫資料
$sql = "SELECT * FROM member_table where username = '$id'";
$result = mysql_query($sql);
$row = @mysql_fetch_row($result);

//判斷帳號與密碼是否為空白
//以及MySQL資料庫裡是否有這個會員
if($id != null && $pw != null && $row[1] == $id && $row[2] == $pw)
{
        //將帳號寫入session,方便驗證使用者身份
        $_SESSION['username'] = $id;
        echo '登入成功!';
        echo '<meta http-equiv=REFRESH CONTENT=1;url=member.php>';
}
else
{
        echo '登入失敗!';
        echo '<meta http-equiv=REFRESH CONTENT=1;url=index.php>';
}
?>

(4) 會員登入成功後 頁面 - 此頁面有「新增」、「修改」、「刪除」與「登出」的連結
      並且會顯示出所有會員資料(member.php)

<?php session_start(); ?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
include("mysql_connect.inc.php");
echo '<a href="logout.php">登出</a>  <br><br>';

//此判斷為判定觀看此頁有沒有權限
//說不定是路人或不相關的使用者
//因此要給予排除

if($_SESSION['username'] != null)
{
        echo '<a href="register.php">新增</a>    ';
        echo '<a href="update.php">修改</a>    ';
        echo '<a href="delete.php">刪除</a>  <br><br>';
    
        //將資料庫裡的所有會員資料顯示在畫面上
        $sql = "SELECT * FROM member_table";
        $result = mysql_query($sql);
        while($row = mysql_fetch_row($result))
        {
                 echo "$row[0] - 名字(帳號):$row[1], " . 
                
"電話:$row[3], 地址:$row[4], 備註:$row[5]<br>";
        }
}
else
{
        echo '您無權限觀看此頁面!';
        echo '<meta http-equiv=REFRESH CONTENT=2;url=index.php>';
}
?>

(5)  登出 - 洗掉登入使用者之session(logout.php)
<?php session_start(); ?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
//將session清空
unset($_SESSION['username']);
echo '登出中......';
echo '<meta http-equiv=REFRESH CONTENT=1;url=index.php>';
?>

(6) 加入(註冊)會員 - 「填寫」會員資料 (register.php)
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<form name="form" method="post" action="register_finish.php">
帳號:<input type="text" name="id" /> <br>
密碼:<input type="password" name="pw" /> <br>
再一次輸入密碼:<input type="password" name="pw2" /> <br>
電話:<input type="text" name="telephone" /> <br>
地址:<input type="text" name="address" /> <br>
備註:<textarea name="other" cols="45" rows="5"></textarea> <br>
<input type="submit" name="button" value="確定" />
</form>

(7) 加入(註冊)會員 - 「新增」會員資料進MySQL資料庫 (register_finish.php)
<?php session_start(); ?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
include("mysql_connect.inc.php");

$id = $_POST['id'];
$pw = $_POST['pw'];
$pw2 = $_POST['pw2'];
$telephone = $_POST['telephone'];
$address = $_POST['address'];
$other = $_POST['other'];

//判斷帳號密碼是否為空值
//確認密碼輸入的正確性

if($id != null && $pw != null && $pw2 != null && $pw == $pw2)
{
        //新增資料進資料庫語法
        $sql = "insert into member_table (username, password, telephone, address, other) values ('$id', '$pw', '$telephone', '$address', '$other')";
        if(mysql_query($sql))
        {
                echo '新增成功!';
                echo '<meta http-equiv=REFRESH CONTENT=2;url=index.php>';
        }
        else
        {
                echo '新增失敗!';
                echo '<meta http-equiv=REFRESH CONTENT=2;url=index.php>';
        }
}
else
{
        echo '您無權限觀看此頁面!';
        echo '<meta http-equiv=REFRESH CONTENT=2;url=index.php>';
}
?>

(8) 修改會員資料 - 「填寫」要修改之會員資料(update.php)
<?php session_start(); ?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
include("mysql_connect.inc.php");

if($_SESSION['username'] != null)
{
        //將$_SESSION['username']丟給$id
        //這樣在下SQL語法時才可以給搜尋的值

        $id = $_SESSION['username'];
        //若以下$id直接用$_SESSION['username']將無法使用
        $sql = "SELECT * FROM member_table where username='$id'";
        $result = mysql_query($sql);
        $row = mysql_fetch_row($result);
    
        echo "<form name=\"form\" method=\"post\" action=\"update_finish.php\">";
        echo "帳號:<input type=\"text\" name=\"id\" value=\"$row[1]\" />(此項目無法修改) <br>";
        echo "密碼:<input type=\"password\" name=\"pw\" value=\"$row[2]\" /> <br>";
        echo "再一次輸入密碼:<input type=\"password\" name=\"pw2\" value=\"$row[2]\" /> <br>";
        echo "電話:<input type=\"text\" name=\"telephone\" value=\"$row[3]\" /> <br>";
        echo "地址:<input type=\"text\" name=\"address\" value=\"$row[4]\" /> <br>";
        echo "備註:<textarea name=\"other\" cols=\"45\" rows=\"5\">$row[5]</textarea> <br>";
        echo "<input type=\"submit\" name=\"button\" value=\"確定\" />";
        echo "</form>";
}
else
{
        echo '您無權限觀看此頁面!';
        echo '<meta http-equiv=REFRESH CONTENT=2;url=index.php>';
}
?>

(9) 修改會員資料 - 「更新」要修改之會員資料進MySQL資料庫(update_finish.php)
<?php session_start(); ?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
include("mysql_connect.inc.php");

$id = $_POST['id'];
$pw = $_POST['pw'];
$pw2 = $_POST['pw2'];
$telephone = $_POST['telephone'];
$address = $_POST['address'];
$other = $_POST['other'];

//紅色字體為判斷密碼是否填寫正確
if($_SESSION['username'] != null && $pw != null && $pw2 != null && $pw == $pw2)
{
        $id = $_SESSION['username'];
    
        //更新資料庫資料語法
        $sql = "update member_table set password=$pw, telephone=$telephone, address=$address, other=$other where username='$id'";
        if(mysql_query($sql))
        {
                echo '修改成功!';
                echo '<meta http-equiv=REFRESH CONTENT=2;url=member.php>';
        }
        else
        {
                echo '修改失敗!';
                echo '<meta http-equiv=REFRESH CONTENT=2;url=member.php>';
        }
}
else
{
        echo '您無權限觀看此頁面!';
        echo '<meta http-equiv=REFRESH CONTENT=2;url=index.php>';
}
?>

(10) 刪除會員資料 - 「填寫」要刪除之會員帳號(delete.php)
<?php session_start(); ?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
if($_SESSION['username'] != null)
{
        echo "<form name=\"form\" method=\"post\" action=\"delete_finish.php\">";
        echo "要刪除的帳號:<input type=\"text\" name=\"id\" /> <br>";
        echo "<input type=\"submit\" name=\"button\" value=\"刪除\" />";
        echo "</form>";
}
else
{
        echo '您無權限觀看此頁面!';
        echo '<meta http-equiv=REFRESH CONTENT=2;url=index.php>';
}
?>

(11) 刪除會員資料 - 對MySQL資料庫進行「刪除」會員資料(delete_finish.php)
<?php session_start(); ?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
include("mysql_connect.inc.php");
$id = $_POST['id'];

if($_SESSION['username'] != null)
{
        //刪除資料庫資料語法
        $sql = "delete from member_table where username='$id'";
        if(mysql_query($sql))
        {
                echo '刪除成功!';
                echo '<meta http-equiv=REFRESH CONTENT=2;url=member.php>';
        }
        else
        {
                echo '刪除失敗!';
                echo '<meta http-equiv=REFRESH CONTENT=2;url=member.php>';
        }
}
else
{
        echo '您無權限觀看此頁面!';
        echo '<meta http-equiv=REFRESH CONTENT=2;url=index.php>';
}
?>

 

以上若有錯誤,也請各位告知或糾正,謝謝~~~!
本來程式碼要加上實際顯示出來的圖片作介紹的,但因為真的花太多時間了,只好作罷!!!

 

Posted by dreamtails at 痞客邦 PIXNET 留言(109) 引用(4) 人氣()


open trackbacks list Trackbacks (4)

  • composearticle.com

    [教學]PHP會員登入機制,session的使用,簡易型電話簿範例(對MySQL新增、修改、刪除)! @ 回憶......! :: 痞客邦 PIXNET ::
  • anchor

    [教學]PHP會員登入機制,session的使用,簡易型電話簿範例(對MySQL新增、修改、刪除)! @ 回憶......! :: 痞客邦 PIXNET ::
  • apply anxiety problems on this website

    [教學]PHP會員登入機制,session的使用,簡易型電話簿範例(對MySQL新增、修改、刪除)! @ 回憶......! :: 痞客邦 PIXNET ::
  • anchor

    [教學]PHP會員登入機制,session的使用,簡易型電話簿範例(對MySQL新增、修改、刪除)! @ 回憶......! :: 痞客邦 PIXNET ::

留言列表 (109)

Disable comments
  • kk
  • 您寫的可以註冊帳號
    輸入號密碼後
    但卻不能登入耶..

    板主知道什麼原因嗎
  • 您可以試著到資料庫裡看看帳號密碼是否一致,若還是不行,可能就要重新檢試程式碼了!!
    我也有一次是登不進去,結果是帳密不一致。

    謝謝您觀看這篇文章^^!!

    dreamtails replied in 2009/06/01 07:42

  • Angel
  • 謝謝版主分享
  • ^^!!

    dreamtails replied in 2009/06/06 16:28

  • FUJI
  • 很感謝這篇的說明~~~對我幫助很大
    至於未啥不能登入
    if($id != null && $pw != null && $row[1] == $id && $row[2] ==$pw
    我把row[1]-->row[0] row[2]-->row[1]
    就行了
  • 謝謝您^^!!

    可能是資料庫不同,所以用法也不同!!
    我的row[0]為no、row[1]為username、row[2]為password.
    所以才要用row[1]與row[2],但也謝謝您的告知^^!!

    dreamtails replied in 2009/07/05 07:40

  • sevalen1013
  • 感謝分享程式碼

    經過測試 登入以後沒問題
    可能我編碼問題吧 登出前面會出現 ?的符號

    update的部分沒辦法使用 改住址電話 甚至密碼 都出現更新失敗

    還有 如果用任何的帳號 都有權限 刪除某帳號的資訊....(驗證的部分可能要追加)

    不過很感謝熱心的大大提供

    最後再提供一個 就是寫入資料庫的欄位 原本第一張圖片是顯示要建置name

    不過 程式裡面對應的欄位應該是username才對~ (發現的一點 希望能夠幫助到)
  • 這個小範例提供給各位,而權限的部份就要自行去修改成自己所要的了!

    謝謝您^^!

    dreamtails replied in 2009/08/03 17:51

  • sevalen1013
  • 沒啦 是我打錯了 圖沒錯 是username
    XD
  • 呵呵^^!!

    dreamtails replied in 2009/08/03 17:49

  • qqjameqq
  • 不好意思 請問帳號部份能使用中文嘛@@
  • 這個我也沒有試過,您可能要自己試試看囉^^!!

    dreamtails replied in 2009/09/04 00:36

  • fsdf
  • 不好意思
    在undate的部份我怎麼試都無法成功
    一直更新失敗
    在這個部份能不能講解一下呢?
    還有很感謝你提供的這個範例
    對我的學習珍的很有幫助
  • 可以說一下無法update成功有沒有什麼訊息,或是提供的一些資訊,好讓我可以幫您解決^^!

    dreamtails replied in 2009/09/12 07:11

  •  fsdf
  • 我的update.php可以成功的讀出資料庫的資料
    但是當我修改完資料按下送出後
    在update_finish.php的判斷下都顯示修改失敗
    回資料庫檢查也發現資料沒有修改進去
    我的update.php與update_finish.php都照著你的範例去打的
    資料庫也跟範例設的一樣
    感謝你的幫助
  • 您可以檢視一下SQL語法有無錯誤,像是您database的Table名稱或是欄位有沒有和MySQL裡的相對應,因為您在下SQL語法入資料庫時出現沒有辦法更新^^!!

    dreamtails replied in 2009/09/13 01:32

  •   fsdf
  • 我已經再三檢查過了
    可是還是一樣
    甚至連整個程式碼都複製貼上還是沒辦法成功
    是不是還有其他可能呢??
  • 連資料庫的帳號密碼可以連接到資料庫嗎?
    還是資料庫的欄位@@!
    其實我也想不太到是什麼問題了 >"<

    真是有點抱歉......

    dreamtails replied in 2009/09/13 13:34

  • xop093
  • updata.php 的功能不能用...
    網主修一修吧....
    我想不是我的問題....
    我試了很多次....
    網主你自己試一試updata.php 可不可以運作.....
  • 有沒有可能資料庫裡有兩個同樣的username,因為我之前試是可以的 >"<

    現在比較沒有時間去試了,所以......很抱歉!
    還是可以提供一下您沒有辦法updata的情況...

    dreamtails replied in 2009/09/16 00:32

  • fsdf
  • 我把
    $id = $_POST['id'];
    $pw = $_POST['pw'];
    $pw2 = $_POST['pw2'];
    $telephone = $_POST['telephone'];
    $address = $_POST['address'];
    $other = $_POST['other'];這幾行刪掉
    再把更新資料庫語法的password=$pw改成password='{$_POST['pw']}'(以此類推)
    就可以用了
    我也不知道為什麼
  • 謝謝你!!!

    沒有幫助到你,我感到非常的抱歉 >"<

    dreamtails replied in 2009/09/16 19:23

  • moth
  • 第一個帳號創建之後可修改 刪除,
    並沒有像樓上所說的更改語法,
    因為理論上兩種都是一樣的,

    但我出現的問題是僅能註冊一次帳號,
    無論登入或登出都無法新增,
    真摸不著頭緒= =..
  • @@!!

    dreamtails replied in 2009/09/17 22:00

  • moth
  • 原來是NO欄位忘了換auto_increment
    換了之後全部正常執行
    程式無更動
  • 呵呵,其實這個是寫來教我朋友的,這個範例還有很多bug,或是不符合邏輯的,所以有問題的話,也請各位見諒了^^"

    dreamtails replied in 2009/09/17 22:01

  • mifouger
  • 登入問題

    可以登入!!
    但是在登入前的登入訊息前面多出一行--不知道下面這行是什麼原因??
    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\AppServ\www\LOG2.php:3) in C:\AppServ\www\LOG2.php on line 3
  • 沒遇過>"<

    我也不知道如何幫您解決,真是抱歉^^"

    dreamtails replied in 2009/10/28 18:24

  • kk
  • 老是無法對資料庫連線

    該怎麼解決
  • 您的資料庫也是架在localhost嗎!?
    或是您可以提供更多的資訊好讓我得知要如何解決^^!

    謝謝~~!

    dreamtails replied in 2009/11/04 07:46

  • ^^
  • 不好意思~請問一下喔!
    修改會員後我只想顯是那個會員的資料該怎麼做?
  • 下個判斷式就ok囉^^!

    dreamtails replied in 2009/12/12 14:15

  • DRack
  • 謝謝分享~

    最近正在研究會員系統的寫法~
    您分享的 流程 & 設計 很清楚~
    謝謝~

    ================================
    另外"無法對資料庫連線" 那位~
    可能是 localhost 的密碼設不一樣喔~
    檢查一下 mysql_connect.inc.php 那個檔案
    改成自己的密碼
  • ^^!! 有幫助到您真的很高興,謝謝!!

    就您說的沒有錯,mysql_connect.inc.php要改成自己的密碼!!

    dreamtails replied in 2009/12/14 21:53

  • DRack
  • 我剛剛看了一下更新那一頁

    你的這一段>>
    //更新資料庫資料語法
    $sql = "update member_table set password=$pw, telephone=$telephone, address=$address, other=$other where username='$id'";

    再更新 新變數 的時候 都沒有加單引號喔 ' $變數 '
    $sql = "update member_table set password='$pw', telephone='$telephone', address='$address', other='$other' where username='$id'";

    所以才會出錯喔
  • 謝謝您的糾正^^!

    可能要等一些時候再把文章給改正,現在都比較沒有空閒的時間去改它!!

    但真的很謝謝您!!!

    dreamtails replied in 2009/12/15 01:00

  • eric19740521
  • free

    東西寫的還不錯
    我拷貝一下就能用了

    但我要建議你~~~
    東西寫得太散了
    只要幾支程式就可以.不然你以後維護會很累~~~

    登入/登出一隻
    主功能選單一隻
    查詢/刪除會員一支
    修改/新增會員 一支

    像連結資料/跟資料存取的弄成一隻 .最好是class
    那麼你維護會很簡單的

    基本上.你已經很棒了~~~

    http://easysoft.twelife.com 速達軟件,免費會計,進銷存,POS,庫存系統軟體
  • 謝謝您,這是一個很棒的建議^^!!

    dreamtails replied in 2009/12/17 01:56

  • tony
  • 非常謝謝

    馬上就學
    馬上可以用
    非常謝謝

  • ^^

    dreamtails replied in 2010/01/07 16:00

  • kelvin
  • 無法便用,無法資料庫連線~~
  • 看一下ip,帳密有沒有一樣!!

    dreamtails replied in 2010/01/08 04:59

  • kelvin
  • Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at register_finish.php:1) in register_finish.php on line 1

    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at register_finish.php:1) in register_finish.php on line 1
    無法便用
  • 我沒有遇到過這個問題!! 所以也不敢亂回答您!
    還有,session_start()這個function要放在程式碼的最上方,要不然會出錯,不知道是不是這個問題,我也不清楚>"<

    Sorry,沒有幫助到您!

    dreamtails replied in 2010/01/09 21:26

  • Phillip
  • 謝謝

    謝謝教學, 成功制做了SESSION 的LOGIN,
    接下來很多東西都會順利制作了,

    支教發更多教學
  • 謝謝您^^!

    dreamtails replied in 2010/01/10 01:18

  • Phillip
  • 回22樓的

    你的是因為UTF8 的BOM,
    說明: 英文

    解決方法: 不要用記事本去寫UTF8 PHP, 改用其它如DREAMWEAVER 或NOTEPAD++ 等等就可以 ^^
  • 聽您這麼一說,我好像也曾經因為用不同的編輯器編完,就發生這種情形的,使用PSPad就不會了^^!!

    真是感謝您的解決方法了^^

    dreamtails replied in 2010/01/10 01:20

  • kelvin
  • 可以了
    MYSQL導入碼是什麼?
  • 不好意思,我也不知道什麼是MySQL導入碼......>"<

    可以詳述嗎? 謝謝您~!

    dreamtails replied in 2010/01/10 22:00

  • XJack
  • 老手有機會修改一下這個學習資料吧 !
    其實這篇進步空間還非常很大,
    只是本人不是老手,
    期盼老手釋出您的優秀源碼供大家參考 ...
  • 呵呵! 我也不是老手,希望有更棒更有效率的寫法^^!

    dreamtails replied in 2010/01/16 13:50

  • mygamer
  • 感謝樓主~!

    感謝樓主喔,
    我找了很久才找到這麼有用的會員系統,
    另外如果是使用big5連線的話,
    中文的帳號是可以註冊和登入的(已測試)
    如果是增加其他資料(例: 電郵)
    就先在MySQL增加資料表,
    再到註冊、資料修改等加入剛剛增加的資料填寫位&其他數值就可以了
  • 謝謝您的告知!!

    感謝您~~^^!

    dreamtails replied in 2010/01/26 00:24

  • 小茲茲
  • 登入失敗...

    <?php session_start(); ?>
    改成
    <?php @session_start(); ?>
    會比較好喔0.0
    因為妳是用UTF-8編碼(上網找到的)

    可是我現在不會出現 session_start(); 錯誤
    但是就是登不進去呢 PHP設定問題嗎?
  • 我的php沒有特別設定,我是使用Appserv的預設設定!!

    抱歉,沒有幫您解決到問題>"<

    dreamtails replied in 2010/01/31 15:33

  • janet1
  • `NO` 欄位要 AUTO_INCREMENT
  • 謝謝您的告知!!

    這樣才可以自動產生編號^^!

    dreamtails replied in 2010/02/11 15:02

  • crystal
  • update_finish:
    $sql = "update member set password='$pw', telephone='$telephone', address='$address', other='$other' where username='$id'";

    將$pw,$telephone…這些加上單引號'' 就可以更新成功了
  • 哇,我好像漏掉了這些單引號了,謝謝您的提醒~~!

    感恩^^!

    dreamtails replied in 2010/02/24 12:31

  • imfiba1991
  • 我希望樓主可以修改好才發帖,發現很多bug ,我還是用Dreamweaver 才好
    此外,session_start()是php 的其元件,<?php session_start(); ?>是要放在網頁的最上,請各位注意!
  • 關於「session_start()」我在註解方面有提及!
    這篇只是簡易的教學,讓入門的人可以了解如何去coding,但bug的確還很多,也謝謝您的建議!!

    dreamtails replied in 2010/03/12 16:06

  • 發財
  • 請問 該怎麼連MYSQL?
    設定好欄位之後?
  • 您指的連MySQL是用phpMyAdmin連,還是用php的語法連!?

    若是php語法連的話,在第一至第三步驟上的程式碼就有連結到MySQL並抓取資料了~~^^!

    dreamtails replied in 2010/03/17 06:25

  • Private Comment
  • Private Comment
  • Private Comment
  • Private Comment
  • flexman
  • 感謝你的範例教學, 很實用
  • 有幫助到您,我也很高興^^!

    謝謝~~

    dreamtails replied in 2010/04/04 23:25

  • JOHNNIE
  • 你好 我想請教個問題 我想做一個登入的功能
    我把上面的程式碼都放入以後測試登入結果出現 echo '登入失敗!'
    我在想是不是資料庫沒弄好? 請教一下資料庫的檔案應該存在哪一個地方呢?
  • 連結資料庫主要是以下這個檔案「mysql_connect.inc.php」!

    dreamtails replied in 2010/04/12 16:16

  • JOHNNIE
  • 哈囉 版主 可不可以留msn給我 有問題想請教..
  • 就我的電子信箱,在右邊側欄可以看到^^!

    dreamtails replied in 2010/04/12 19:44

  • ppo
  • 為什麼 index.php那個
    是亂碼 = = """
    �b���G
    �K�X�G
    �ӽбb��
    像這個!!
  • 您可能要看看是不是網頁的編碼問題!?
    這樣我也很難說是哪裡錯了!

    抱歉,沒辦法解決您的問題~

    dreamtails replied in 2010/04/13 12:23

  • simontan
  • 無法登入

    我沒辦法 登入, 我的 member.php 裡 $_SESSION['username'] 的值是空白
    ==> if ($_SESSION['username'] != null)

    請問我的問題出在哪裡 ?
  • 嗯............不好意思,我看不太出來您寫的意思是什麼!?

    有確定是空白的值嗎? 還資料庫沒有抓到資料!?!?

    dreamtails replied in 2010/04/21 00:29

  • Private Comment
  • Kenny
  • 回40樓
    可以參考24樓的解答
    用記事本編輯的話把 UTF-8 改成 Big5 也行
    <meta http-equiv="Content-Type" content="text/html; charset=big5" />
  • 謝謝您^^!

    dreamtails replied in 2010/05/06 23:20

  • wenjuin
  • 您好
    我帳號申請可以順利申請
    並且在登入時會順利出現登入成功
    可是當我登入成功後進入'member.php'
    卻一直無法順利擷取到username
    也就是"if ($_SESSION['username'] != null)"
    的結果一直為False

    想請問這問題可能出現在哪
  • 把$_SESSION['username']顯示出來看看是什麼東西,然後再找可能的問題吧^^!

    dreamtails replied in 2010/05/10 19:41

  • wenjuin
  • 我有嘗試用echo $_SESSION['username'];
    不過沒有出現任何訊息

    所以我才覺得是沒有抓擷取到資料
  • wenjuin
  • 回版主:
    我不知道做了什麼竟然可以順利登入了!!
    真是讓我好不解...

    不過我有一個小問題~~
    就是no設定成"auto_increment"
    它NO是不是只會一直增加
    不會去判斷NO是否有因為帳號被刪除而空出來的空缺

    如果想要做此判斷
    不知道要如何修改?

    不知道我的問題是否描述的清楚?
  • 先恭喜您可以登入了^^! 我也不知道原因...XD

    auto_increment不會自動判斷空出來的值,它只會累加,至於解決的方法......我也很想知道...XD

    很不好意思,好像都沒辦法解決您的問題......>"< 抱歉

    dreamtails replied in 2010/05/11 00:38

  • mankit
  • 無法註冊會員

    無法註冊會員, 已經確定數據庫已連接
    請問是什麼問題呢?
  • webpage有出現什麼訊息嗎?

    dreamtails replied in 2010/05/13 08:54

  • mankit
  • 回覆47

    出現"新增失敗!"的訊息
  • 您在新增資料的webpage顯示要寫入資料庫的資料看能不能顯示的出來,找出您的資料沒有錯,接著在找看看連MySQL的語言有沒有錯誤的試試!!

    dreamtails replied in 2010/05/13 14:03

  • yu
  • 註冊會員資料填寫完怎麼傳回資料庫的user欄位裡面(變新增)
  • 不太了解您的意思!?!?

    dreamtails replied in 2010/05/20 22:07

  • yu
  • 就是田完註冊會員的資料後那些檔案要怎麼傳回資料庫裡面
    資料庫裡原本有user資料表(有帳號.密碼...) 那是放會員的資料
    將新註冊的會員資料傳回去資料庫的user資料表裡
  • 文章教學在「(7) 加入(註冊)會員 - 「新增」會員資料進MySQL資料庫 (register_finish.php)」這裡就有新增進資料表了吧!
    不知道有沒有回答到您要的資訊>"<

    dreamtails replied in 2010/05/21 12:46

  • abc
  • 請問站長,我每次只要新註冊一個會員,在MySQL的database裏面就會出現兩筆新的資料,請問該怎麼解決?
  • 您要去看您的程式碼是否新增了兩次,因為您這麼說,我也不知道要怎麼解決XD

    dreamtails replied in 2010/05/22 15:49

  • abc
  • 以及在update_finish的php裏面
    if(mysql_query($sql)) 這邊老是判斷不過,請問問題大概是出在什麼地方?
  • 看sql語法有沒有錯誤!

    dreamtails replied in 2010/05/22 16:30

  • adam45549
  • 有錯誤訊息

    有錯誤訊息
    Notice: A session had already been started - ignoring session_start() in C:\Program Files\Apache Group\Apache2\htdocs\adam\register_finish.php on line 1
    新增失敗!
  • 您可能找一下session的問題,這樣我也沒辦法解決......XD
    是第一行就error了嗎!? 看一下是否出在session_start().

    dreamtails replied in 2010/05/26 01:13

  • cf1064
  • 你的更新會員資料存在bug,應該是說不夠人性化
    修改會員資料時,若會員其他都修改,只有電話不修改,但會員還是需要再次的輸入電話
    應該用幾個判斷來判斷會員是否有填值,若沒填值則就用原值才對
  • 謝謝您的指導,這個功能漏掉了XD

    dreamtails replied in 2010/05/28 10:07

  • cf1064
  • 不客氣,我也是參考你的在做自己需要的功能,你寫的很容易懂~~
  • 謝謝您^^!

    dreamtails replied in 2010/05/28 23:07

  • myphpproject
  • 想問一下 要如何將 帳號存入 session值 傳到每一頁去 讓每一個頁面可以 去判斷此人是否已經登入 不用再次登入?
  • 您說的這個方法以上的文章應該是都有的,您可能要再仔細看看!!

    dreamtails replied in 2010/05/30 23:54

  • 陳小銘
  • 如果重複新增帳號會怎麼樣-_-
  • 太久沒動了,我也不知道會怎麼樣!

    可以自行判斷,再改寫吧~~!

    dreamtails replied in 2010/06/07 21:44

  • jeffyu520
  • 寫的功能很完善…
    感謝分享~~
  • 謝謝您的支持^^!

    dreamtails replied in 2010/06/07 21:47

  • thanks
  • 請問一下

    版主請問一下這種寫法有辦法寫成pear的方式嗎?
  • XD

    我也不知道耶.........

    我懂的也不是很多,所以不好意思了>"<

    dreamtails replied in 2010/06/17 21:37

  • bb
  • 為什麼是亂碼??
  • 是編碼問題嗎!?

    dreamtails replied in 2010/06/18 18:14

  • bb
  • 請問你會陽春的公告系統嗎?
  • 沒寫過......XD

    dreamtails replied in 2010/06/19 13:42

  • ^^
  • 請問一下
    我申請帳號密碼那邊
    資料庫密碼的地方都是空白的
    其他帳號電話那些都有
    這是什麼問題?
  • 會是變數沒有傳進去嗎? 這只是猜測啦XD

    dreamtails replied in 2010/06/21 17:11

  • ^^
  • 好像是耶
    我不知道要怎麼解決....
  • 您先用echo把這個變數給顯示出來,先不要寫入資料庫,看看顯示出來的value是什麼!?
    若是空白的,再去看看程式碼裡面的步驟到底哪個部份出了問題^^!

    dreamtails replied in 2010/06/21 18:31

  • sky77930
  • 請問要怎樣才能註冊中文帳號啊
  • XD

    這個我也沒有研究耶......

    您可能要去找其他的資料了~

    dreamtails replied in 2010/06/29 12:54

  • 米蘇里
  • 妳的資料可以連線到我的網址嘛?可不可以嗎?
  • 我不太清楚您問我的意思是什麼!?

    dreamtails replied in 2010/07/07 13:07

  • DK
  • 不好意思 想請問一下

    我在本地主機測試可以註冊 註冊完也可以登入

    可是我把它複製到我們學校的FTP空間以後

    就沒辦法登入 註冊

    一直顯示

    Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /data/y96/s9611310/www/register_finish.php:4) in /data/y96/s9611310/www/register_finish.php on line 4

    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /data/y96/s9611310/www/register_finish.php:4) in /data/y96/s9611310/www/register_finish.php on line 4
    無法對資料庫連線

    是不是哪邊程式碼要修改

    確定帳號密碼都正確

    我找不到問題出在哪ˊˋ
  • session_start() <-- 前面有其他東西嗎? 而且這個Warning怎麼出現了兩次!

    以及您連的資料庫是哪裡的,有開放對外的ip連線嗎?

    dreamtails replied in 2010/07/08 13:29

  • DK
  • session_start() <-- 前面有其他東西嗎?

    是指程式碼裡面嗎? 好像沒有耶@@"

    就照著你的教學去操作

    在本地測試成功登入 但到FTP就不行了

    我連的資料庫是MyDB

    我把原本電腦裡的PHP檔全部複製到FTP空間

    是不是因為上傳到FTP所以哪邊要修改@@?

    請問對外的IP連線要怎麼設定

    剛開始接觸這個很多東西都還不太熟悉

    不過你的教學簡單明瞭

    謝謝你囉!!!對我這新手幫助很多^^
  • 您的php複製到FTP上,但程式碼裡所連線到的資料庫要設定您MySQL所在的電腦位址! 通常MySQL預設只能給localhost,也就是自己電腦連自己。您的php在您的電腦可以登入,是因為您的Apache與MySQL架在同一台電腦。若Apache(Web server)與您的MySQL為不同電腦,那MySQL就要設定可以給這台Apache的電腦ip位址連,http://dreamtails.pixnet.net/blog/post/22185485
    我這篇有寫如何允許其他的ip來連mysql,開啟dos,輸入mysql,接著在輸入您的管理者帳密,接著就下要開啟的ip指令!!

    希望有幫助到您!

    dreamtails replied in 2010/07/08 15:55

  • DK
  • 我輸入mysql後顯示

    'mysql' 不是內部或外部命令、可執行的程式或批次檔。

    怎麼會這樣0.0
  • 要不然就要至您MySQL的bin目錄下去下這個指令,也就是下'mysql'前面再加上mysql的所在位置,如:'C:\\MySQL\bin\mysql'

    dreamtails replied in 2010/07/09 06:26

  • oop
  • Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\wamp\www\login\connect.php:4) in C:\wamp\www\login\connect.php on line 4

    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\wamp\www\login\connect.php:4) in C:\wamp\www\login\connect.php on line 4
    登入成功!

    後自動跳到這邊

    Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\wamp\www\login\member.php:4) in C:\wamp\www\login\member.php on line 4

    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\wamp\www\login\member.php:4) in C:\wamp\www\login\member.php on line 4
    登出

    您無權限觀看此頁面!


    請問這樣算成功了嗎
  • 不算成功吧......XD

    dreamtails replied in 2010/07/13 14:19

  • yu
  • 用會員登入出現

    Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\AppServ\www\login.php:10) in C:\AppServ\www\login.php on line 10
    登入失敗

    然後就自己跳到登入失敗連結的頁面
  • <?php session_start(); ?>前不可以有任何字元出現!
    若是使用UTF-8的話,可以試試PSPad, UltraEdit, Notepad++......等軟體試試看<?php session_start(); ?>前面有沒有多餘的字元^^!

    祝您成功~~!

    dreamtails replied in 2010/07/15 21:19

  • yu
  • 一測試網頁的時候直接出現登入失敗 然後就跳到登入失敗連結ㄉ網頁ㄌ
  • 您要不要用echo顯示您的session值是什麼,這樣可以幫助您debug......因為這樣我也搞不清楚要如何處理^^"

    dreamtails replied in 2010/07/16 14:43

  • Private Comment
  • Private Comment
  • Private Comment
  • Cookies
  • 哈哈,書上的範例我弄好久弄不好,
    您的網頁一試就成功了XDD
    然後上面會出現 header already sent 的問題是因為 header 的重複送出,
    如果網頁最開頭不是 PHP 的話必須要加個 <?php ob_start ?>
    否則一旦轉頁的時候就會有兩個 header,就會錯誤~
    當然直接第一行寫 session_start(); 也是 OK 的~
  • ob_start();

    我沒有使用過耶,謝謝您又讓大家了解了更多的東西^^

    dreamtails replied in 2010/07/27 17:08

  • Cookies
  • 應該是 ob_start();
  • 謝謝^^!

    dreamtails replied in 2010/07/27 17:07

  • @@
  • 我也一直都登入失敗= =
    if($id != null && $pw != null && $row[1] == $id && $row[2] == $pw)

    這段我看不懂><
    請問前面id是一開始的登入帳號方塊?pw是一開始的登入密碼方塊?

    那後面的row[1]== $id . row[2]== $pw 這2個是什麼意思??

    $result = mysql_query($sql);
    $row = mysql _fetch_row($result);
    這2行又是什麼意思??

    請解說一下~謝謝

  • 用echo將$id, $pw, $row[2]就可以知道了!
    2是指database裡的table欄位三(column 3)


    $result = mysql_query($sql);
    $row = mysql _fetch_row($result);
    這兩列是對database取值!

    dreamtails replied in 2010/08/28 19:12

  • @@
  • 請問一下我剛剛用了您的php測試一下
    發現你的修改會員資料這項功能,修改之後按確定會修改失敗,不會成功@@
    請問是您的php語法有錯嗎@@?此外還有NO(自動排號)也沒有效果@@應該不會是我的問題吧@@?

    請幫解除疑惑一下~謝謝
  • XD

    太久沒動了,我也忘了為什麼會這樣了,抱歉......

    dreamtails replied in 2010/08/29 07:59

  • @@
  • 剛剛看到樓上大大回應說no的問題
    在MySQL 的no欄位 附加那邊 加個 auto_increment 好像是這回事

    可是當我附加之後按儲存會出現

    錯誤
    SQL 語法:

    ALTER TABLE `member_table` CHANGE `no` `no` INT( 6 ) NOT NULL AUTO_INCREMENT

    MySQL 傳回:

    #1075 - Incorrect table definition; there can be only one auto column and it must be defined as a key

    請問有解決的辦法嗎??
  • 您給no 一個初始值看是否可以!?

    dreamtails replied in 2010/08/29 08:00

  • @@
  • 你是說資料庫no欄位附加旁邊的預設值嗎??

    我設過了還是錯誤耶><

    請問有解決辦法嗎@@?
  • @@
  • 找到方法了

    原來要把no欄位設為主索引就可以使用了!!
  • 恭喜你^^

    dreamtails replied in 2010/08/29 22:55

  • jack
  • 這個好像會有重複登入的問題喔
  • Private Comment
  • 阿瑋
  • 請ㄋ幫助我 小弟期中考 要考 一個系統 跟這很類似 不過比這簡單很多 只需要 版面(帳號 密碼 登入 會員新增) 不必刪除 修改....
    程式只要 新增會員後 系統儲存 登入後 看到一張圖片 或文章 就好了
    幫助我 謝謝^^
  • Ghost
  • 請問第3點中
    $sql = "SELECT * FROM member_table where username = '$id'";
    "SELECT * FROM member_table where username = '$id"這個要怎麼改才能有效
    謝謝~
  • 天天快樂
  • 請問版主:我的問題根#47一樣 可以在解是明白一點嗎? 謝謝
  • JJ
  • 感謝版主提供這些入門基本程式, 超好用,
    功能小修改後, 測試都沒問題, 可以套用到我要的功能裡了...
    真是謝啦!

  • 阿憲
  • 很棒!! 你的東西
    找了很多的php書 很多到session就不講了
    不然就是交代得很模糊

    看了你的文章 又更有概念跟印象 謝謝你囉
  • 訪客
  • 如果想讓不同帳號登入不同的頁面 應該要怎樣做?
  • max
  • 請問我顯示登入成功以後
    卻會馬上跳出
    您無權限觀看此頁面!
    怎麼會這樣呢
  • allenmusic
  • 謝謝分享 很詳細
  • Alex
  • 很棒的東西!!!!!!

    成功登入, 但在 member page 例出了所有的 Member, 如何才可只例出當前用戶資料 ???

  • 訪客
  • 我猜很多人會登入失敗的原因出在這一行

    $row[1] == $id && $row[2] == $pw

    因為作者資料庫裡的username是第二個欄位所以用row[1]

    如果你建資料庫第一個是username第二個是password那就要把程式碼改成

    $row[0] == $id && $row[1] == $pw
  • 謝謝您的分享^^

    dreamtails replied in 2012/01/05 01:12

  • Joe
  • 我個個唔可以登入呀,註冊左話:成功,登入就:失敗 - -"
  • 小鴨
  • 推一個大讚
    很多人不願分享程式碼,就一直用嘴吧操作php,對剛入門的新生真的還是不知如何下手,感謝分享.我覺的大陸對岸這方面很願意分享,我有問題google時有用的詳細的資訊很多是對岸提供的,,熱情分享程式碼,學習才會快也知道自己問題是卡在哪個部分,才可以做修正.謝謝版主
  • 謝謝您^^

    dreamtails replied in 2012/01/05 01:11

  • Private Comment
  • lai
  • 謝謝版主的分享~讓我輕鬆完成了會員註冊的功能 :)
  • 林雋策
  • 專題需要做會員機制 因為板主熱心分享 我從晚上十點用到現在就架好一個站了
  • 有幫助到您就好囉^^

    dreamtails replied in 2012/01/05 01:05

  • 阿亨
  • 新增失敗! 請問哪出問題了
  • 是不是連線到MySQL那篇的語法出了什麼問題呢?

    dreamtails replied in 2012/01/05 01:05

  • 永康
  • 急問一下,是關於的登入的 我發現登入時如果帳號和密碼是用數字的話就可以登入,例如我用111作帳號,111作密碼就可以正常登入,但是若果用英文作帳號或密碼的話,例如以abc作帳號或密碼都不能正常登入,用英文和數字混合亦不能,不知哪出問題了,望有解答,謝謝
1 2

本文章不能留言