รบกวนช่วยทีครับ ไม่ทราบว่าเกิดไรขึ้นกับการทำงานของ SESSION

เริ่มโดย $100perday, 20 มกราคม 2013, 21:39:23

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

$100perday

@session_start();
ob_start();
$useradmin = $_SESSION["useradmin"];
if(empty($useradmin))
{
echo "<script>alert('หน้านี้จำกัดเฉพาะ Admin เท่านั้น');history.back();</script>";
exit();
}


ตาม code ด้านบนครับ ตรวจสอบมาจากตาราง ซึ่ง username , password ถูกต้องหมดครับ
แต่ก็ขึ้นหน้าแสดงข้อความว่า หน้านี้จำกัดเฉพาะ Admin เท่านั้น

เคยเขียนมาอย่างนี้ตลอด แต่ไม่รู้ว่าทำไมใช้งานไม่ได้

ปล.ตัวนี้ลองกะ host นอกครับ
ส่วน host ไทยปกติครับ

รบกวนผู้ชี้ทางทีครับ  :wanwan017:
เหนื่อย..

$100perday

เหนื่อย..

manchy


ลอง Debug ดูครับว่ามีค่าไหม  :wanwan020:

แล้วลองไล่ต่อ

$100perday

อ้างถึงจาก: manchy ใน 20 มกราคม 2013, 21:54:21

ลอง Debug ดูครับว่ามีค่าไหม  :wanwan020:

แล้วลองไล่ต่อ

ยังไงเหรอครับ  :wanwan017:
เหนื่อย..

gubaaball

ob_start(); ต้องอยู่บรรทัดแรกนิครับ แล้วตามด้วย @session_start();

ที่มันไม่แจ้ง error ก็เพราะมี @ นำหน้าครับ ลองสลับกันดู ผิดถูกขออภัยด้วยครับ  :P

$100perday

อ้างถึงจาก: gubaaball ใน 20 มกราคม 2013, 21:56:27
ob_start(); ต้องอยู่บรรทัดแรกนิครับ แล้วตามด้วย @session_start();

ที่มันไม่แจ้ง error ก็เพราะมี @ นำหน้าครับ ลองสลับกันดู ผิดถูกขออภัยด้วยครับ  :P


ลองสลับแล้วครับ อาการเดิม ๆ เลย
ยังไงรบกวนท่านที่พอแก้ให้ทีนะครับ งงเลย  :wanwan004: :wanwan017:
เหนื่อย..

gubaaball

อ้างถึงจาก: $100perday ใน 20 มกราคม 2013, 21:59:27
อ้างถึงจาก: gubaaball ใน 20 มกราคม 2013, 21:56:27
ob_start(); ต้องอยู่บรรทัดแรกนิครับ แล้วตามด้วย @session_start();

ที่มันไม่แจ้ง error ก็เพราะมี @ นำหน้าครับ ลองสลับกันดู ผิดถูกขออภัยด้วยครับ  :P


ลองสลับแล้วครับ อาการเดิม ๆ เลย
ยังไงรบกวนท่านที่พอแก้ให้ทีนะครับ งงเลย  :wanwan004: :wanwan017:

มันเป็นยังไงครับที่ว่าใช้ไม่ได้ มี error อะไรโผล่มาไหมครับ

$100perday

อ้างถึงจาก: gubaaball ใน 20 มกราคม 2013, 22:00:41
อ้างถึงจาก: $100perday ใน 20 มกราคม 2013, 21:59:27
อ้างถึงจาก: gubaaball ใน 20 มกราคม 2013, 21:56:27
ob_start(); ต้องอยู่บรรทัดแรกนิครับ แล้วตามด้วย @session_start();

ที่มันไม่แจ้ง error ก็เพราะมี @ นำหน้าครับ ลองสลับกันดู ผิดถูกขออภัยด้วยครับ  :P


ลองสลับแล้วครับ อาการเดิม ๆ เลย
ยังไงรบกวนท่านที่พอแก้ให้ทีนะครับ งงเลย  :wanwan004: :wanwan017:

มันเป็นยังไงครับที่ว่าใช้ไม่ได้ มี error อะไรโผล่มาไหมครับ

ไม่มีเลยครับท่าน มันขึ้นตรงที่ผมดัก
if(empty($useradmin))
{
echo "<meta http-equiv=Content-Type content=text/html; charset=utf-8>";
echo "<script>alert('หน้านี้จำกัดเฉพาะ Admin เท่านั้น');history.back();</script>";
exit();
}

นั่นก็คงหมายถึง มันไม่จำค่า useradmin ให้อ่ะครับ
เหนื่อย..

manchy

echo ค่าทีมีทั้งหมด หรือ print array ดูว่ามีค่าอะไรบ้าง แล้วค่าที่คิดว่าจะมีนั้นมีจริงหรือเปล่า

print_r ();

http://php.net/manual/en/function.print-r.php


$100perday

คือผมทำงานกับ host ไทย ไม่มีปัญหานะครับ
host นอกต้อตั้งค่าหรือเขียนให้ต่างกันมากแค่ไหนอ่ะครับ
เหนื่อย..

gubaaball

มั่นใจน่ะครับว่าค่า $useradmin = $_SESSION["useradmin"]; มันมีการประกาศเซสชั่น useradmin มาแล้ว เห็นบอกว่า "ตรวจสอบมาจากตาราง ซึ่ง username , password ถูกต้องหมดครับ
"

หรือไม่ก็ลองเอา @ ออกดูครับเผื่อช่วยไรได้ ไม่งั้นก็คงเป็นทีเวอร์ชั่น php หรือไม่ก็ลองนอนสักตื่นค่อยกลับมาทำต่อครับ  :wanwan004:

$100perday

เอาตรงนี้เลยดีกว่าครับ อิอิ
ตารางผมชื่อ admin

หน้า admin หรอกช่องสองค่าคือ useradmin และ passadmin

จากนั้นไปที่หน้า adminsignin.php ดังนี้ครับ

<?php
@session_start();
ob_start();
require_once 
"connectdb.php";
$sql "select * from admin where useradmin = '$_POST[useradmin]' and passadmin = '$_POST[passadmin]'";
$dbquery mysql_db_query($db$sql); 
$num_rows mysql_num_rows($dbquery);
$rowLogin mysql_fetch_array($dbquery);
if($num_rows == 1){ 

$_SESSION['useradmin'] = $rowLogin['useradmin'];
echo "<meta http-equiv='refresh' content='0;URL=adminhome.php'>";
}else{ 
echo "<meta http-equiv='Content-Type' content='text/html; charset=tis-620' />";
echo "<script language='javascript'>alert('invalid username & password');</script>";
echo "<meta http-equiv='refresh' content='0;URL=admin.php'>";
}

?>


มันหุดหน้านี้ไปที่ adminhome.php อ่ะครับ ถ้าใส่ useradmin และ passadmin ถูก
<?
@session_start();
ob_start();
$useradmin = $_SESSION["useradmin"];
if(empty($useradmin))
{
echo "<meta http-equiv=Content-Type content=text/html; charset=utf-8>";
echo "<script>alert('หน้านี้จำกัดเฉพาะ Admin เท่านั้น');history.back();</script>";
exit();
} ?>


ใส่ถูกหมดครับ
แต่ขึ้น หน้านี้จำกัดเฉพาะ Admin เท่านั้น ตลอดเลยครับ
เหนื่อย..

gubaaball

อ้างถึงจาก: $100perday ใน 20 มกราคม 2013, 22:12:57
เอาตรงนี้เลยดีกว่าครับ อิอิ
ตารางผมชื่อ admin

หน้า admin หรอกช่องสองค่าคือ useradmin และ passadmin

จากนั้นไปที่หน้า adminsignin.php ดังนี้ครับ

<?php
@session_start();
ob_start();
require_once 
"connectdb.php";
$sql "select * from admin where useradmin = '$_POST[useradmin]' and passadmin = '$_POST[passadmin]'";
$dbquery mysql_db_query($db$sql); 
$num_rows mysql_num_rows($dbquery);
$rowLogin mysql_fetch_array($dbquery);
if($num_rows == 1){ 

$_SESSION['useradmin'] = $rowLogin['useradmin'];
echo "<meta http-equiv='refresh' content='0;URL=adminhome.php'>";
}else{ 
echo "<meta http-equiv='Content-Type' content='text/html; charset=tis-620' />";
echo "<script language='javascript'>alert('invalid username & password');</script>";
echo "<meta http-equiv='refresh' content='0;URL=admin.php'>";
}

?>


มันหุดหน้านี้ไปที่ adminhome.php อ่ะครับ ถ้าใส่ useradmin และ passadmin ถูก
<?
@session_start();
ob_start();
$useradmin = $_SESSION["useradmin"];
if(empty($useradmin))
{
echo "<meta http-equiv=Content-Type content=text/html; charset=utf-8>";
echo "<script>alert('หน้านี้จำกัดเฉพาะ Admin เท่านั้น');history.back();</script>";
exit();
} ?>


ใส่ถูกหมดครับ
แต่ขึ้น หน้านี้จำกัดเฉพาะ Admin เท่านั้น ตลอดเลยครับ


งั้นก็คงเป็น SESSION ไม่ทำงานครับ คงอาจเป็นเพราะเวอร์ชั่น php หรือค่าอะไรสักอย่างบน Host ไม่ลองเช็คอย่างนี้ดูครับ ใส่เฉพาะ session เพรียวๆ เลยโดยไม่เอา ob_start แล้วก็เอา @ ที่หน้า session ออกดูครับ ถ้ายังไม่ได้ก็ลองอย่างนี้เลยครับ เพื่อเช็คว่า session ทำงานได้ไหม  :P

<?php session_start();
$_SESSION['testSession'] = 'ทดสอบตัวแปร';
echo $_SESSION['testSession'];
?>

ICheer_No0M

ไม่รู้ว่าเกี่ยวหรือไม่ ลอง encode ไฟล์ php เป็น utf8 without bom ด้วย notepad++ ดูครับ

dekmv


$100perday

เบื้องต้นผมว่าน่าจะเกี่ยวกับ host ด้วยแหละครับ
ทดสอบกับของไทย ปกติสุขดี แต่ host นอกมีปัญหา
เดี๋ยวลองแก้ก่อนครับ ได้แล้วจะนำมาบอกกล่าวให้ทราบครับ
:wanwan017:
เหนื่อย..

dragons_first

นั่งยันนอนยันว่าเป็นที่โฮสต่างประเทศนะครับ วิธีแก้ ต้องทำ 2 วิธี
1.เอา @ ตรง session_start(); ออกครับ เพื่อดู error
2.encode เป็น windows-874 (กรณีที่ไม่สามารถใช้งาน เซสชั่นได้)

ผมเดาว่า session ไม่ทำงานนะครับ
รับทำเว็บไซต์ ตามขอบเขตของลูกค้าราคาเบาๆ

รับแก้สคริปท์ เพิ่มระบบ เปลี่ยนแปลงเลเอาท์เว็บไซต์ จัด cssใหม่ แก้การแสดงผลผิดเพี้ยน
ท่านจะได้รับการบริการที่เป็นกันเอง ราคาไม่แพง ต่อรองได้(แต่ไม่น่าเกลียด) คุยกันฉันมิตร นะฮ๊าฟฟฟฟฟ

marus

if($useradmin == null) ไม่ก็ if($useradmin == '') ลองดู
ถ้าไม่ได้ให้
print_r($_SESSION) check ค่า ใน session
ถ้าไม่มีค่าให้ set session_set_cookie_params ลองค่าดู

$100perday

อ้างถึงจาก: dragons_first ใน 21 มกราคม 2013, 08:51:34
นั่งยันนอนยันว่าเป็นที่โฮสต่างประเทศนะครับ วิธีแก้ ต้องทำ 2 วิธี
1.เอา @ ตรง session_start(); ออกครับ เพื่อดู error
2.encode เป็น windows-874 (กรณีที่ไม่สามารถใช้งาน เซสชั่นได้)

ผมเดาว่า session ไม่ทำงานนะครับ
ขอบคุณทุกท่านที่ตอบครับ
และท่านนี้ด้วยครับ รอท่านมาตอบอ่ะครับ เพราะท่านเคยช่วยผมในส่วนนี้
แต่ก็ไม่ได้สังเกตุว่าเพราะอะไร ขอบคุณมาก ๆครับ
เหนื่อย..