สอบถาม เขียน code check-login อีกรอบค่ะ

เริ่มโดย pum_pam, 17 กรกฎาคม 2014, 14:01:49

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

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

pum_pam

เขียน 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">ชื่อผู้ใช้&nbsp;:&nbsp;</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">รหัสผ่าน&nbsp;:&nbsp;</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"]; ?>










tlecreate

ยัง งง นิดๆ SESSION ตัวไหนเก็บค่าว่างหรอครับ

xvlnw.com

ลอง echo $row[username] กับ echo $row[name] ก่อนเก็บค่าลง Session ดูครับ ดูว่ามันมีค่าหรือเปล่าครับ
[direct=https://cloudhost.in.th/wordpress-hosting]ツ ⓌⓄⓇⒹⓅⓇⒺⓈⓈ ⒽⓄⓈⓉⒾⓃⒼ [/direct] :wanwan014:  :D
[direct=https://cloudhost.in.th/cloudhosting.html]Cloud Hosting[/direct] [direct=https://cloudhost.in.th/cloudvps.html]Cloud Server[/direct] [direct=https://cloudhost.in.th/vpshosting.html]Cloud VPS Hosting[/direct] [direct=https://cloudhost.in.th/windowsvps.html]Cloud Windows[/direct] Tel: 080-348-0843 LINE: ixvlnw

pum_pam

อ้างถึงจาก: tlecreate ใน 17 กรกฎาคม 2014, 14:11:25
ยัง งง นิดๆ SESSION ตัวไหนเก็บค่าว่างหรอครับ


หน้า tes.php หาก login ผ่านแสดงชื่อ user ที่ login ค่ะ

<?
ob_start();
session_start();
?>

      <? echo $_SESSION["username"]; ?> 
 
   
      <? echo $_SESSION["name"]; ?>

pum_pam

อ้างถึงจาก: 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"]; ?>

siamjung

หน้า tes.php

ลองใส่โค๊ด print_r($_SESSION); ดูหน่อยครับ
งดรับงาน custom coding เตรียมพบบริการใหม่เร็วๆนี้

รับทำ PHP หรือปรับระบบระดับ bigbig เน้น cache คนเข้าแบบกระฉูดๆ <- สมัยก่อน

KendoUI,Ajax,Json,Custom Framework,JqueryUI,Adodb,Memcache,Smarty <- สมัยก่อน

[direct=https://www.youtube.com/watch?v=2LxLC93Q1rA]Indicator สัญญาณเทรดคมๆ[/direct]

[direct=https://play.google.com/store/apps/details?id=com.itwetrade.basictrade]App เรียนเทรดพื้นฐาน[/direct]

max30012540

<?Php
ob_start();
session_start();
?>

      <?Php echo $_SESSION["username"]; ?> 
 
   
      <?Php echo $_SESSION["name"]; ?>

<? ยกเลิกใช้ไปแล้วครับ แนะนำให้ใช้ <?Php แทนครับ

ส่วน print_r() แสดงได้แค่ Array แนะนำ var_dump() ที่แสดงชนิดตัวแปรออกมาด้วยครับ

pum_pam

อ้างถึงจาก: 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'] นิครับ

siamjung

สรุปประเด็นคือคุณไม่มีค่าการ 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
งดรับงาน custom coding เตรียมพบบริการใหม่เร็วๆนี้

รับทำ PHP หรือปรับระบบระดับ bigbig เน้น cache คนเข้าแบบกระฉูดๆ <- สมัยก่อน

KendoUI,Ajax,Json,Custom Framework,JqueryUI,Adodb,Memcache,Smarty <- สมัยก่อน

[direct=https://www.youtube.com/watch?v=2LxLC93Q1rA]Indicator สัญญาณเทรดคมๆ[/direct]

[direct=https://play.google.com/store/apps/details?id=com.itwetrade.basictrade]App เรียนเทรดพื้นฐาน[/direct]

jenovazac

#10
ลองแก้ตามนนี้ ครับ ไฟล์ 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();
?>

pum_pam

อ้างถึงจาก: 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

งงว่าในอาเรย์มัยไม่มีค่าไรออกมารีเฟสกี่รอบก็เป็นเหมือนเดิมค่ะ

mikeyx

เปลี่ยน _REQUEST เป็น _POST ด้วยครับ php version ใหม่ ๆ คำสั่ง _REQUEST รู้สึกจะไม่ค่อยสเถียร

pum_pam

อ้างถึงจาก: mikeyx ใน 28 กรกฎาคม 2014, 14:37:44
เปลี่ยน _REQUEST เป็น _POST ด้วยครับ php version ใหม่ ๆ คำสั่ง _REQUEST รู้สึกจะไม่ค่อยสเถียร
ใส่แล้วก็ไม่ได้เหมือนเดิมค่ะ

jenovazac

<?php
        session_start();
        print_r($_SESSION);
/*       
        if (!isset($_SESSION['count'])) {
    $_SESSION['count'] = 0;
        } else {
    $_SESSION['count']++;
        }
        echo "<br>". session_id();
        */
   
?>


code นี้ใช้ได้ไม่มีปัญหา ใดๆครับ ทดสอบให้แล้ว

jenovazac

ใช้ appserv  หรือ Xampp  เวอร์ชั่นไหนครับ

ผมทดสอบ กับ appserv  2.5.10   ไม่มีการปรับแต่งอะไร ใช้การตั้งค่าแบบเดิม  สคริปใช้ได้

pum_pam

อ้างถึงจาก: jenovazac ใน 28 กรกฎาคม 2014, 16:16:27
ใช้ appserv  หรือ Xampp  เวอร์ชั่นไหนครับ

ผมทดสอบ กับ appserv  2.5.10   ไม่มีการปรับแต่งอะไร ใช้การตั้งค่าแบบเดิม  สคริปใช้ได้

เด่วเช็คให้อีกทีนะคะตอนนี้ โฮสตล่มอยู่ค่ะเช็คยังไม่ได้ค่ะแต่ก่อนหน้านี้code ก็เคยใช้งานได้ค่ะตอนที่ใช้งานได้ก็ไม่ได้สังเกตว่าเวอร์ชั่นไหนค่ะ

jenovazac

 ถ้ารันบนโฮส ให้ติดต่อเจ้าของโฮสเลยครับ แจ้งปัญหาให้โฮส แล้วส่ง code ให้เค้าเช็คให้เลยครับ

pum_pam

อ้างถึงจาก: jenovazac ใน 28 กรกฎาคม 2014, 16:16:27
ใช้ appserv  หรือ Xampp  เวอร์ชั่นไหนครับ

ผมทดสอบ กับ appserv  2.5.10   ไม่มีการปรับแต่งอะไร ใช้การตั้งค่าแบบเดิม  สคริปใช้ได้


ใช้ PHP Version 5.3.3  ค่ะ

dekdoo

ลองเอา session_start(); ขึ้นเป็นบรรทัดแรกสุด