เขียน Code login แบบนี้แต่ session ไม่เก็บค่าเป็นค่าว่าง ต้องแก้ที่อะไรค่ะ
หน้า กรอกแบบฟอร์ม
<?
session_start();
?>
<form id="form1" name="form1" method="post" action="check-login.php?Login=checklogin">
<td width="68" height="20" align="right" valign="middle">ชื่อผู้ใช้ : </td>
<td width="132" align="left" valign="middle"><input name="username" type="text" class="inputbox" id="username" /></td>
</tr>
<tr id="link14">
<td height="28" align="right" valign="middle">รหัสผ่าน : </td>
<td align="left" valign="middle"><input name="password" type="password" class="inputbox" id="password" /></td>
</tr>
<tr class="text12">
<td></td>
<td height="25" align="left" valign="middle"><input type="image" src="images/bg/Button-login.png" name="Submit"/></td>
หน้าเช็ค ข้อมูล check-login.php
<?
ob_start();
session_start();
include('connect.php');
header("content-type: text/html; charset=UTF-8");
$username=trim($_REQUEST[username]);
$password=md5(trim($_REQUEST[password]));
$sql=mysql_query("Select * From tb_member Where username='$username' && password='$password'");
if(mysql_num_rows($sql)>0){
$row=mysql_fetch_array($sql);
$_SESSION['id_mem']=$row[id_mem];
$_SESSION['username']=$row[username];
$_SESSION['name']=$row[name];
$_SESSION['province']=$row[province];
$_SESSION['status']=$row[status];
mysql_query("Update tb_member Set login=NOW() Where username=$row[username]");
echo"กำลังเข้าสู่ระบบ";
echo"<meta http-equiv='refresh' content='2;URL=tes.php'>";
}else{
echo"ไม่สามารถเข้าสู่ระบบได้";
echo"<meta http-equiv='refresh' content='2;URL=./.'>";
}
?>
หน้า tes.php หาก login ผ่านแสดงชื่อ user ที่ login
<?
ob_start();
session_start();
?>
<? echo $_SESSION["username"]; ?>
<? echo $_SESSION["name"]; ?>
ยัง งง นิดๆ SESSION ตัวไหนเก็บค่าว่างหรอครับ
ลอง echo $row[username] กับ echo $row[name] ก่อนเก็บค่าลง Session ดูครับ ดูว่ามันมีค่าหรือเปล่าครับ
อ้างถึงจาก: tlecreate ใน 17 กรกฎาคม 2014, 14:11:25
ยัง งง นิดๆ SESSION ตัวไหนเก็บค่าว่างหรอครับ
หน้า tes.php หาก login ผ่านแสดงชื่อ user ที่ login ค่ะ
<?
ob_start();
session_start();
?>
<? echo $_SESSION["username"]; ?>
<? echo $_SESSION["name"]; ?>
อ้างถึงจาก: xvlnw.com ใน 17 กรกฎาคม 2014, 14:12:20
ลอง echo $row[username] กับ echo $row[name] ก่อนเก็บค่าลง Session ดูครับ ดูว่ามันมีค่าหรือเปล่าครับ
มีค่ะแต่พอใช้คำสั่ง echo"<meta http-equiv='refresh' content='2;URL=tes.php'>"; เพื่อให้แสดงผล user ใน
หน้า tes.php หาก login ผ่านแสดงชื่อ user ที่ login มันไม่แสดงในหน้านี้ค่ะ tes.php
<?
ob_start();
session_start();
?>
<? echo $_SESSION["username"]; ?>
<? echo $_SESSION["name"]; ?>
หน้า tes.php
ลองใส่โค๊ด print_r($_SESSION); ดูหน่อยครับ
<?Php
ob_start();
session_start();
?>
<?Php echo $_SESSION["username"]; ?>
<?Php echo $_SESSION["name"]; ?>
<? ยกเลิกใช้ไปแล้วครับ แนะนำให้ใช้ <?Php แทนครับ
ส่วน print_r() แสดงได้แค่ Array แนะนำ var_dump() ที่แสดงชนิดตัวแปรออกมาด้วยครับ
อ้างถึงจาก: siamjung ใน 20 กรกฎาคม 2014, 20:09:39
หน้า tes.php
ลองใส่โค๊ด print_r($_SESSION); ดูหน่อยครับ
ลองทดสอบ session ใส่ code นี้เข้าไปแล้วลอง รีเฟชดู
<?PHP
session_start();
print_r($_SESSION);
if (!isset($_SESSION['count'])) {
$_SESSION['count'] = 0;
} else {
$_SESSION['count']++;
}
echo "<br>". session_id();
?>
ได้ค่านี้ออกมาค่ะ
Array ( )
udubk9tourlghoq8rp7ll9e2j3
แต่ถ้าทดสอบในจำลอง localhost จะได้ค่านี้ออกมาค่ะหากรีเฟชหลายรอบค่า count ก็จะเพิ่มขึ้นเรื่อยๆ ค่ะ
Array ( [count] => 18 )
80cae9d3bdf42a0b8b7cacd4a1578177
แบบนี้ต้องไปแก้ที่ตรงไหนค่ะ
อ้างถึงจาก: pum_pam ใน 26 กรกฎาคม 2014, 14:12:59
อ้างถึงจาก: siamjung ใน 20 กรกฎาคม 2014, 20:09:39
หน้า tes.php
ลองใส่โค๊ด print_r($_SESSION); ดูหน่อยครับ
ลองทดสอบ session ใส่ code นี้เข้าไปแล้วลอง รีเฟชดู
<?PHP
session_start();
print_r($_SESSION);
if (!isset($_SESSION['count'])) {
$_SESSION['count'] = 0;
} else {
$_SESSION['count']++;
}
echo "<br>". session_id();
?>
ได้ค่านี้ออกมาค่ะ
Array ( )
udubk9tourlghoq8rp7ll9e2j3
แต่ถ้าทดสอบในจำลอง localhost จะได้ค่านี้ออกมาค่ะหากรีเฟชหลายรอบค่า count ก็จะเพิ่มขึ้นเรื่อยๆ ค่ะ
Array ( [count] => 18 )
80cae9d3bdf42a0b8b7cacd4a1578177
แบบนี้ต้องไปแก้ที่ตรงไหนค่ะ
print_r คือการแสดงค่าใน array ออกมาครับที่มัน +1 ไปเรื่อยๆ ก็ถูกแล้วน่ะครับเพราะโค้ดมันสั่งให้บวกหนึ่งเมื่อมีค่าตัวแปร $_SESSION['count'] นิครับ
สรุปประเด็นคือคุณไม่มีค่าการ login อยู่ดีนะครับ
$_SESSION['id_mem']=$row[id_mem];
$_SESSION['username']=$row[username];
$_SESSION['name']=$row[name];
$_SESSION['province']=$row[province];
$_SESSION['status']=$row[status];
ผมว่าลองเช็ค check-login.php
echo $row['username'].'<br />'.$row['name'];
ค่าพวกนี้คุณออกหรือป่าวครับ ก่อนเก็บเข้า SESSION
ลองแก้ตามนนี้ ครับ ไฟล์ check-login.php
<?php
ob_start();
session_start();
include('connect.php');
header("content-type: text/html; charset=UTF-8");
$username=trim($_REQUEST[username]);
$password=md5(trim($_REQUEST[password]));
$sql=mysql_query("Select * From tb_member Where username='$username' && password='$password'");
if(mysql_num_rows($sql)>0){
while($row=mysql_fetch_array($sql)){
$_SESSION['id_mem']=$row['id_mem'];
$_SESSION['username']=$row['username'];
$_SESSION['name']=$row['name'];
$_SESSION['province']=$row['province'];
$_SESSION['status']=$row['status'];
mysql_query("Update tb_member Set login=NOW() Where username='$row[username]'");
}
echo"กำลังเข้าสู่ระบบ<br>";
print_r($_SESSION);
//echo"<meta http-equiv='refresh' content='2;URL=tes.php'>";
}else{
echo"ไม่สามารถเข้าสู่ระบบได้";
//echo"<meta http-equiv='refresh' content='2;URL=./.'>";
}
ob_end_flush();
?>
อ้างถึงจาก: jenovazac ใน 27 กรกฎาคม 2014, 21:51:09
ลองแก้ตามนนี้ ครับ ไฟล์ check-login.php
<?php
ob_start();
session_start();
include('connect.php');
header("content-type: text/html; charset=UTF-8");
$username=trim($_REQUEST[username]);
$password=md5(trim($_REQUEST[password]));
$sql=mysql_query("Select * From tb_member Where username='$username' && password='$password'");
if(mysql_num_rows($sql)>0){
while($row=mysql_fetch_array($sql)){
$_SESSION['id_mem']=$row['id_mem'];
$_SESSION['username']=$row['username'];
$_SESSION['name']=$row['name'];
$_SESSION['province']=$row['province'];
$_SESSION['status']=$row['status'];
mysql_query("Update tb_member Set login=NOW() Where username='$row[username]'");
}
echo"กำลังเข้าสู่ระบบ<br>";
print_r($_SESSION);
//echo"<meta http-equiv='refresh' content='2;URL=tes.php'>";
}else{
echo"ไม่สามารถเข้าสู่ระบบได้";
//echo"<meta http-equiv='refresh' content='2;URL=./.'>";
}
ob_end_flush();
?>
ลองเอาโค๊ตที่ให้มาข้างบนไปรันในหน้า check-login.php รันได้ตามปกติค่ะข้อมูลสมาชิกออกมาหมดแต่พอ refreshส่งไปหน้า tes.php กลับเป็นค่าว่างค่ะ รู้สึกว่าจะเป็นปัญหาเดียวกันกับlink นี้ค่ะ http://www.thaiadmin.org/board/index.php?topic=47775.0 แต่ลองconfig โฮสเหมือนเค้าแล้ว ก็ไม่หายค่ะรู้สึกว่าจะเป็นปัญหาหมดที่ใช้งานส่งค่า session ข้ามหน้า page หน้าสมัครสมาชิกก็เป็นค่ะ
<?PHP
session_start();
print_r($_SESSION);
if (!isset($_SESSION['count'])) {
$_SESSION['count'] = 0;
} else {
$_SESSION['count']++;
}
echo "<br>". session_id();
?>
ลองทดสอบ session ของโฮสต์ใส่ code ด้านล่างบนไปได้ค่านี้ออกมาค่ะ
Array ( )
ttjkmj0clser1d6a8jqqov5dm4
งงว่าในอาเรย์มัยไม่มีค่าไรออกมารีเฟสกี่รอบก็เป็นเหมือนเดิมค่ะ
เปลี่ยน _REQUEST เป็น _POST ด้วยครับ php version ใหม่ ๆ คำสั่ง _REQUEST รู้สึกจะไม่ค่อยสเถียร
อ้างถึงจาก: mikeyx ใน 28 กรกฎาคม 2014, 14:37:44
เปลี่ยน _REQUEST เป็น _POST ด้วยครับ php version ใหม่ ๆ คำสั่ง _REQUEST รู้สึกจะไม่ค่อยสเถียร
ใส่แล้วก็ไม่ได้เหมือนเดิมค่ะ
<?php
session_start();
print_r($_SESSION);
/*
if (!isset($_SESSION['count'])) {
$_SESSION['count'] = 0;
} else {
$_SESSION['count']++;
}
echo "<br>". session_id();
*/
?>
code นี้ใช้ได้ไม่มีปัญหา ใดๆครับ ทดสอบให้แล้ว
ใช้ appserv หรือ Xampp เวอร์ชั่นไหนครับ
ผมทดสอบ กับ appserv 2.5.10 ไม่มีการปรับแต่งอะไร ใช้การตั้งค่าแบบเดิม สคริปใช้ได้
อ้างถึงจาก: jenovazac ใน 28 กรกฎาคม 2014, 16:16:27
ใช้ appserv หรือ Xampp เวอร์ชั่นไหนครับ
ผมทดสอบ กับ appserv 2.5.10 ไม่มีการปรับแต่งอะไร ใช้การตั้งค่าแบบเดิม สคริปใช้ได้
เด่วเช็คให้อีกทีนะคะตอนนี้ โฮสตล่มอยู่ค่ะเช็คยังไม่ได้ค่ะแต่ก่อนหน้านี้code ก็เคยใช้งานได้ค่ะตอนที่ใช้งานได้ก็ไม่ได้สังเกตว่าเวอร์ชั่นไหนค่ะ
ถ้ารันบนโฮส ให้ติดต่อเจ้าของโฮสเลยครับ แจ้งปัญหาให้โฮส แล้วส่ง code ให้เค้าเช็คให้เลยครับ
อ้างถึงจาก: jenovazac ใน 28 กรกฎาคม 2014, 16:16:27
ใช้ appserv หรือ Xampp เวอร์ชั่นไหนครับ
ผมทดสอบ กับ appserv 2.5.10 ไม่มีการปรับแต่งอะไร ใช้การตั้งค่าแบบเดิม สคริปใช้ได้
ใช้ PHP Version 5.3.3 ค่ะ
ลองเอา session_start(); ขึ้นเป็นบรรทัดแรกสุด
อ้างถึงจาก: dekdoo ใน 29 กรกฎาคม 2014, 10:52:04
ลองเอา session_start(); ขึ้นเป็นบรรทัดแรกสุด
เอาไว้ก็ไม่ได้เหมือนเดิมค่ะ
ที่หน้า check-login.php ก่อนจะ refresh ไปหน้า tes.php
ลองแบบนี้ดูว่ามี อะไรออกมาหรือเปล่า
echo $_SESSION["username"];
echo $_SESSION["name"];
ลองทดสอบบนเครื่องตัวเองก่อนนะครับ
หากเครื่องตัวเองไม่มีปัญหา ค่อยลองทดสอบบนเซิร์ฟเวอร์
อ้างถึงจาก: ttong ใน 29 กรกฎาคม 2014, 11:37:46
ที่หน้า check-login.php ก่อนจะ refresh ไปหน้า tes.php
ลองแบบนี้ดูว่ามี อะไรออกมาหรือเปล่า
echo $_SESSION["username"];
echo $_SESSION["name"];
ลองทดสอบบนเครื่องตัวเองก่อนนะครับ
หากเครื่องตัวเองไม่มีปัญหา ค่อยลองทดสอบบนเซิร์ฟเวอร์
ค่ะทดสอบแล้วค่ะใช้งานได้ปกติไม่มีปัญหาอะไรเลยข้อมูลออกมาหมดทุกขั้นตอน แต่พอขึ้นโฮสต์ หน้า tes.php มีปัญหาค่ะ
อ้างถึงจาก: pum_pam ใน 29 กรกฎาคม 2014, 11:52:19
อ้างถึงจาก: ttong ใน 29 กรกฎาคม 2014, 11:37:46
ที่หน้า check-login.php ก่อนจะ refresh ไปหน้า tes.php
ลองแบบนี้ดูว่ามี อะไรออกมาหรือเปล่า
echo $_SESSION["username"];
echo $_SESSION["name"];
ลองทดสอบบนเครื่องตัวเองก่อนนะครับ
หากเครื่องตัวเองไม่มีปัญหา ค่อยลองทดสอบบนเซิร์ฟเวอร์
ค่ะทดสอบแล้วค่ะใช้งานได้ปกติไม่มีปัญหาอะไรเลยข้อมูลออกมาหมดทุกขั้นตอน แต่พอขึ้นโฮสต์ หน้า tes.php มีปัญหาค่ะ
หากที่ Localhost ได้ปกติ แล้วพออัปขึ้นเซริฟ์เวอร์จริงแล้วมีปัญหา อันนี้ผมว่าน่าจะเกี่ยวกับเวอร์ชั่น PHP หรือการ Config ค่าของโฮสต์น่ะครับ ไม่ลองเอาโค้ดล่าสุดปัจจุบันที่ยังมีปัญหามาดูอ่ะครับ เผื่อแก้ไปหลายอย่างแล้วมันไปผิดตรงอื่นอีกครับ
ปล. โฮสต์ใช้ค่า Session ได้หรือเปล่าครับ ลองเอาเฉพาะโค้ดนี้แล้วลองไปรันบนโฮสต์ดู
<?php
session_start();
$_SESSION['test']='Session Ok';
echo $_SESSION['test'];
?>หากไม่มีค่า Session Ok ออกมาก็มุ่งไปที่โฮสต์เลยครับ เพราะนั่นคือ Session บนโฮสต์ไม่ทำงาน แต่หากมีค่าก็เอาโค้ดล่าสุดที่อัปบนโฮสต์แล้วไม่ได้มาดูครับ
อ้างถึงจาก: killerb ใน 29 กรกฎาคม 2014, 14:27:18
อ้างถึงจาก: pum_pam ใน 29 กรกฎาคม 2014, 11:52:19
อ้างถึงจาก: ttong ใน 29 กรกฎาคม 2014, 11:37:46
ที่หน้า check-login.php ก่อนจะ refresh ไปหน้า tes.php
ลองแบบนี้ดูว่ามี อะไรออกมาหรือเปล่า
echo $_SESSION["username"];
echo $_SESSION["name"];
ลองทดสอบบนเครื่องตัวเองก่อนนะครับ
หากเครื่องตัวเองไม่มีปัญหา ค่อยลองทดสอบบนเซิร์ฟเวอร์
ค่ะทดสอบแล้วค่ะใช้งานได้ปกติไม่มีปัญหาอะไรเลยข้อมูลออกมาหมดทุกขั้นตอน แต่พอขึ้นโฮสต์ หน้า tes.php มีปัญหาค่ะ
หากที่ Localhost ได้ปกติ แล้วพออัปขึ้นเซริฟ์เวอร์จริงแล้วมีปัญหา อันนี้ผมว่าน่าจะเกี่ยวกับเวอร์ชั่น PHP หรือการ Config ค่าของโฮสต์น่ะครับ ไม่ลองเอาโค้ดล่าสุดปัจจุบันที่ยังมีปัญหามาดูอ่ะครับ เผื่อแก้ไปหลายอย่างแล้วมันไปผิดตรงอื่นอีกครับ
ปล. โฮสต์ใช้ค่า Session ได้หรือเปล่าครับ ลองเอาเฉพาะโค้ดนี้แล้วลองไปรันบนโฮสต์ดู
<?php
session_start();
$_SESSION['test']='Session Ok';
echo $_SESSION['test'];
?>
หากไม่มีค่า Session Ok ออกมาก็มุ่งไปที่โฮสต์เลยครับ เพราะนั่นคือ Session บนโฮสต์ไม่ทำงาน แต่หากมีค่าก็เอาโค้ดล่าสุดที่อัปบนโฮสต์แล้วไม่ได้มาดูครับ
ค่า session ขึ้น ok ค่ะ
หน้า checklogin.php (ถ้ารันในหน้านี้เลยข้อมูลแสดงไม่มีปัญหาค่ะ)
<?php
ob_start();
session_start();
include('connect.php');
header("content-type: text/html; charset=UTF-8");
$username=trim($_REQUEST[username]);
$password=md5(trim($_REQUEST[password]));
$sql=mysql_query("Select * From tb_member Where username='$username' && password='$password'");
if(mysql_num_rows($sql)>0){
while($row=mysql_fetch_array($sql)){
$_SESSION['id_mem']=$row['id_mem'];
$_SESSION['username']=$row['username'];
$_SESSION['name']=$row['name'];
$_SESSION['province']=$row['province'];
$_SESSION['status']=$row['status'];
mysql_query("Update tb_member Set login=NOW() Where username='$row[username]'");
}
echo"กำลังเข้าสู่ระบบ<br>";
print_r($_SESSION);
//echo"<meta http-equiv='refresh' content='2;URL=tes.php'>";
}else{
echo"ไม่สามารถเข้าสู่ระบบได้";
//echo"<meta http-equiv='refresh' content='2;URL=./.'>";
}
ob_end_flush();
?>
หน้า tes.php (ไม่มีข้อมูลสมาชิกส่งไปค่ะเป็นค่าว่าง)
<?php
ob_start();
session_start();
header("content-type: text/html; charset=UTF-8");
?>
<?Php echo $_SESSION["username"]; ?>
<?Php echo $_SESSION["name"]; ?>
ดูที่ phpinfo ตอนนี้ ใช้ php ver 5.3.3 ค่ะ
register_globals = off
register_argc_argv = On
magic_quotes_gpc = On
output_buffering = 4096
session.cookie_path = "/"
Session Support enabled
ปิด ob_end_flush(); ที่หน้า tes.php ดูครับ
อ้างถึงจาก: killerb ใน 29 กรกฎาคม 2014, 16:07:14
ปิด ob_end_flush(); ที่หน้า tes.php ดูครับ
ลองปิดดูแล้วก็ไม่ได้ค่ะ
ผมว่าลองติดต่อกับทาง Hosting ดีกว่าครับ
ให้ทางนั้นเค้าตรวจสอบให้
อ้างถึงจาก: pum_pam ใน 29 กรกฎาคม 2014, 16:11:55
อ้างถึงจาก: killerb ใน 29 กรกฎาคม 2014, 16:07:14
ปิด ob_end_flush(); ที่หน้า tes.php ดูครับ
ลองปิดดูแล้วก็ไม่ได้ค่ะ
checklogin.php กับ tes.php นี่อยู่ใน directory เดียวกันหรือเปล่าครับ แล้วลองเอา copy โค้ดนี้ไปแทนที่ในหน้า tes.php ดูครับ
<?php
ob_start();
session_start();
header("content-type: text/html; charset=UTF-8");
echo 'username='.$_SESSION['username'];
echo 'username='.$_SESSION['name'];
ob_end_flush();
?>มันมีอะไรออกมาไหมครับ
อ้างถึงจาก: killerb ใน 29 กรกฎาคม 2014, 16:18:16
อ้างถึงจาก: pum_pam ใน 29 กรกฎาคม 2014, 16:11:55
อ้างถึงจาก: killerb ใน 29 กรกฎาคม 2014, 16:07:14
ปิด ob_end_flush(); ที่หน้า tes.php ดูครับ
ลองปิดดูแล้วก็ไม่ได้ค่ะ
checklogin.php กับ tes.php นี่อยู่ใน directory เดียวกันหรือเปล่าครับ แล้วลองเอา copy โค้ดนี้ไปแทนที่ในหน้า tes.php ดูครับ
<?php
ob_start();
session_start();
header("content-type: text/html; charset=UTF-8");
echo 'username='.$_SESSION['username'];
echo 'username='.$_SESSION['name'];
ob_end_flush();
?>
มันมีอะไรออกมาไหมครับ
ออกมาแค่นี้ค่ะ
username=
name=
อยู่ root นอกสุดเหมือนกันค่ะ
อ้างถึงจาก: pum_pam ใน 29 กรกฎาคม 2014, 16:35:04
อ้างถึงจาก: killerb ใน 29 กรกฎาคม 2014, 16:18:16
อ้างถึงจาก: pum_pam ใน 29 กรกฎาคม 2014, 16:11:55
อ้างถึงจาก: killerb ใน 29 กรกฎาคม 2014, 16:07:14
ปิด ob_end_flush(); ที่หน้า tes.php ดูครับ
ลองปิดดูแล้วก็ไม่ได้ค่ะ
checklogin.php กับ tes.php นี่อยู่ใน directory เดียวกันหรือเปล่าครับ แล้วลองเอา copy โค้ดนี้ไปแทนที่ในหน้า tes.php ดูครับ
<?php
ob_start();
session_start();
header("content-type: text/html; charset=UTF-8");
echo 'username='.$_SESSION['username'];
echo 'username='.$_SESSION['name'];
ob_end_flush();
?>
มันมีอะไรออกมาไหมครับ
ออกมาแค่นี้ค่ะ
username=
name=
อยู่ root นอกสุดเหมือนกันค่ะ
ที่เทสนี่เทสด้วยการ Login ใหม่เลยน่ะครับ แต่ถ้ายังไม่ได้แล้วคงต้องถามทาง HOst ดูครับ เพราะดูอาการแล้วก็ไม่น่าจะมีอะไรแล้ว
ไม่รู้เหมือนผมป่าว session_start(); เอาขึ้น host ใช้ไม่ได้เลย ขึ้น error ต้องสร้าง file ใหม่ที่เครื่อง server แล้วโหลดกลับมาแก้ แล้วอัพขึ้นไป ก็ใช้ได้ ของผมน่าจะเกี่ยวกับ charset ไฟล์มันเป็น ASCI หรือ UTF-8 ต้องอะไหนไม่รู้
แนะนำเพิ่มเติม หน้าก่อน login เก็บ $_SESSION['x'] = session_id(); เพิ่มไปด้วยครับ
หน้า check ให้ check $_POST['user'] == $row['user'] && $_SESSION['x'] == session_id(); ป้องกันการ ดักแล้วปลอม session ไปใช้อีกเครื่องครับ
อ้างถึงจาก: pum_pam ใน 29 กรกฎาคม 2014, 16:35:04
อ้างถึงจาก: killerb ใน 29 กรกฎาคม 2014, 16:18:16
อ้างถึงจาก: pum_pam ใน 29 กรกฎาคม 2014, 16:11:55
อ้างถึงจาก: killerb ใน 29 กรกฎาคม 2014, 16:07:14
ปิด ob_end_flush(); ที่หน้า tes.php ดูครับ
ลองปิดดูแล้วก็ไม่ได้ค่ะ
checklogin.php กับ tes.php นี่อยู่ใน directory เดียวกันหรือเปล่าครับ แล้วลองเอา copy โค้ดนี้ไปแทนที่ในหน้า tes.php ดูครับ
ค่ะทดสอบ login ใหม่เลยค่ะ
<?php
ob_start();
session_start();
header("content-type: text/html; charset=UTF-8");
echo 'username='.$_SESSION['username'];
echo 'username='.$_SESSION['name'];
ob_end_flush();
?>
มันมีอะไรออกมาไหมครับ
ออกมาแค่นี้ค่ะ
username=
name=
อยู่ root นอกสุดเหมือนกันค่ะ
อ้างถึงจาก: tlecreate ใน 29 กรกฎาคม 2014, 23:14:31
ไม่รู้เหมือนผมป่าว session_start(); เอาขึ้น host ใช้ไม่ได้เลย ขึ้น error ต้องสร้าง file ใหม่ที่เครื่อง server แล้วโหลดกลับมาแก้ แล้วอัพขึ้นไป ก็ใช้ได้ ของผมน่าจะเกี่ยวกับ charset ไฟล์มันเป็น ASCI หรือ UTF-8 ต้องอะไหนไม่รู้
แนะนำเพิ่มเติม หน้าก่อน login เก็บ $_SESSION['x'] = session_id(); เพิ่มไปด้วยครับ
หน้า check ให้ check $_POST['user'] == $row['user'] && $_SESSION['x'] == session_id(); ป้องกันการ ดักแล้วปลอม session ไปใช้อีกเครื่องครับ
ขอบคุณค่ะ แต่นี่ session ใช้งานได้ค่ะแต่ทำงานในหน้าเดียวกันข้ามหน้า page กลายเป็นค่าว่างค่ะ
ลองใส่ session_write_close() ก่อนเปลี่ยนไปหน้าอื่น
หรือไม่ก็ลองสร้าง folder ให้ cookie path แล้ว chmod ให้อ่านเขียนได้
ในฐานข้อมูลฟิลด์ username และ password ต้องไม่ใช่ค่าว่าง และ username ไม่ซ้ำกับแถวอื่น
ที่หน้า checklogin.php
จากตรงนี้
echo"กำลังเข้าสู่ระบบ<br>";
print_r($_SESSION);
//echo"<meta http-equiv='refresh' content='2;URL=tes.php'>";
ลองแก้เป็น
header('Location: tes.php');
exit();
ขอบคุณทุกคนนะคะที่พยายามแก้ปัญหาช่วย ตอนนี้ ระบบ session ใช้งานได้ตามปกติแล้วค่ะสรุปต้อง แก้ session.save_path ไปที่ /tmp ก็ใช้งานได้ปกติแล้วค่ะ ไม่มีปัญหาที่ code ค่ะ