Re: [請益] php後台登入問題

看板PHP作者 (...)時間12年前 (2013/07/31 23:12), 編輯推噓4(405)
留言9則, 6人參與, 最新討論串2/2 (看更多)
※ 引述《tingjk (此為必填欄位)》之銘言: : 至於大家說的header()前面不能有東西這個事情我很苦惱,因為前面就是判斷帳號密碼 : 的程式碼,把header上面訊息所說的38行移到前面也沒用(而且邏輯好像也怪怪的) 哪裡邏輯怪? 判斷帳號密碼或是去資料庫撈資料的 php 程式碼, 寫在最開始的地方很常見。 像你 admin.php 那個 已經先出現 DOCTYPE, html, head, 然後才開始 php 程式碼 <?php session_start(); if(!isset($_SESSION['U_NAME'])){ header("Location:index.html"); } ?> 其實這一段應該要放在最前面才對。 一開始判斷沒有U_NAME就應該重新導向了。 前面輸出的那些 html 碼都是多餘的。 echo_login.php 這支檔案也是一樣。 都已輸出 DOCTYPE, html, head, body 才開始判斷帳號密碼,然後才送出 header。 這是錯的。 大家說的沒錯,header之前不能送出其它資訊。 準備好要停留在某一頁了,不轉址了,開始要送出資訊了, 再給它 DOCTYPE, html, head, body。 PHP是伺服器端語言,HTML, Javascript 是客戶端語言。 PHP在網頁走出伺服器大門之前,要先把資料準備好,然後送出。 接下來才是 HTML, Javascript 接手。 所以如果一開始帳號密判斷有問題,PHP 就會直接發出轉址的要求。 但是你卻先送出 DOCTYPE, html, head, body, 你先宣告某一頁要開始了,然後才做帳號密碼的判斷, 然後又要用 PHP 的 header 轉址。這樣的流程才是有問題。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.34.214.220

08/01 12:41, , 1F
推PHP Code 放前面,HTML放後面
08/01 12:41, 1F

08/02 01:09, , 2F
我比較想推直接切開,不用codeigniter用smarty也好
08/02 01:09, 2F

08/02 10:31, , 3F
smarty +1 ..
08/02 10:31, 3F

08/04 12:03, , 4F
session_start也是得放最前面喔
08/04 12:03, 4F

08/07 20:40, , 5F
因為我不太懂php,但還是謝謝各位的解釋>< 有好心人拯救我
08/07 20:40, 5F

08/07 20:40, , 6F
了,所以現在問題從無法登入變成資料庫連線錯誤了ˊ>ˋ
08/07 20:40, 6F

08/07 20:41, , 7F
謝謝an大的解釋!我學了很多~
08/07 20:41, 7F

08/10 03:44, , 8F
補推一個 =)
08/10 03:44, 8F
※ 編輯: anawak 來自: 114.45.88.249 (08/16 00:59)

07/08 22:13, , 9F
推一個
07/08 22:13, 9F
文章代碼(AID): #1H-IbvCA (PHP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1H-IbvCA (PHP)