|
|
|
รบกวนดูให้ทีค่ะ เกี่ยวกับการ Login ด้วย Facebook และ Login จากการสมัครเว็บ |
|
|
|
|
|
|
|
จากเว็บ www.post24hrs.com (เขียนเองค่ะ) อิอิ
ปัญหาคือ
ถ้า Login เข้าระบบจากเว็บหลังจากที่สมัครสมาชิกแล้ว
http://www.post24hrs.com/memberlogin.php
(กรอบบน)
User : test
Pass : test
จะเด้งมาหน้าแรก มุมขวาบน จะมีรูปและชื่อสมาชิก พร้อมคำว่า ออกระบบ
ซึ่งเข้าใช้ได้ปกติ จากนั้น ถ้ากดออกจากระบบแล้ว
มันก็จะออกจากระบบ และกลับมาหน้า index.php ปกติ
แต่ถ้าล๊อกอินผ่าน Facebook โดยการกดที่ปุ่ม Facebook (ใต้กรอบหน้า memberlogin.php)
า
เมื่อใส่ email และ Password แล้ว จะเด้งไปที่หน้าแรก แต่ มุมขวาบนจะไม่ขึ้นไรเลย
ทุกครั้งต้องเข้า facebook.com เพื่อไป Logout และ กลับเข้ามาอีกครั้ง
สรุปปัญหาคือ ถ้าเปิดเข้าเว็บ post24hrs.com แล้ว เข้าระบบด้วย facebook ก่อน จะได้ปกติ แต่ถ้าเข้า Login ผ่านเว็บก่อน จะไม่ได้
รบกวนพี่ ๆ ช่วยวิเคราะห์ให้ทีค่ะ
นี่คือ code ที่ process จากการ login จาก facebook ค่ะ
Code (PHP)
<?php
session_start(); // กำหนดไว้ กรณีอาจได้ใช้ตัวแปร session
//ob_start();
include("facebook.php"); // เรียกใช้งานไฟล์ php-sdk สำหรับ facebook
//
$facebook = new Facebook(array(
'appId' => '26019xxxxxxxx', // appid ที่ได้จาก facebook
'secret' => '1eaa8d6ffe8fe3xxxxxxxxc', // app secret ที่ได้จาก facebook
'fileUpload' => true, // เปิดใช้ในส่วนของการอัพโหลดรูปได้
'cookie' => true, // อนุญาตใช้งาน cookie
));
// สร้างฟังก์ชันไว้สำหรัดทดสอบ การแสดงผลการใช้งาน
function pre($varUse){
echo "<pre>";
print_r($varUse);
echo "</pre>";
}
// Get User ID
$fb_user = $facebook->getUser();
if($fb_user){
try{
// Proceed knowing you have a logged in user who's authenticated.
$fb_userData=$facebook->api('/me');
}catch(FacebookApiException $e) {
error_log($e);
$user=null;
}
}
if(isset($_GET['logout'])){ // ทำการ logout อย่างสมบูรณ์
$facebook->destroySession(null); // ล่างค่า session ของ facebook
//header("Location:index.php"); //ลิ้งค์ไปหน้าที่ต้องการเมื่อ logout เรียบร้อยแล้ว
echo "<meta http-equiv=refresh content=0;URL=index.php>";
}
// Login or logout url will be needed depending on current user state.
if($fb_user){
$logoutUrl = $facebook->getLogoutUrl(array(
"next"=>"http://www.post24hrs.com/index.php?logout"
));
} else{
$User = $_SESSION['$email'];
$loginUrl = $facebook->getLoginUrl(array(
"redirect_uri"=>"http://www.post24hrs.com/fb_checklogin.php",
"display"=>"popup",
"scope"=>"offline_access,publish_stream,email" // คั่นแต่ละค่าด้วย ,(comma
));
}
?>
Tag : PHP, MySQL, HTML/CSS, JavaScript
|
|
|
|
|
|
Date :
2014-07-11 10:05:21 |
By :
because |
View :
925 |
Reply :
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ต้องดูว่า เราตั้งค่า session ตัวเดียวกันกับตอน login ด้วย user ปกติหรือไม่น่ะครับ
ต้องให้เหมือนกันนะครับ ไม่งั้น มันก็จะเชคไม่เจอกัน เพราะ session ชื่อไม่เหมือนกัน
|
|
|
|
|
Date :
2014-07-11 10:52:52 |
By :
deawx |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คนละ Session ค่ะพี่เดี่ยว เพราะ ถ้า Login ผ่านเว็บจะเป็น User อีกตัว
ผ่านทาง Facebook เป็นอีกตัวค่ะ
|
|
|
|
|
Date :
2014-07-11 11:24:54 |
By :
because |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คือ ถ้า Login ผ่านจาก Facebook ค่า session ที่ส่งเข้ามา จะเช็คจาก email ค่ะ
แต่ถ้า login ด้วย user ค่า session จะได้ค่าเป็น username นั้น
โดยการตรวจสอบจะตรวจสอบคนละค่าค่ะ
ฉะนั้น ตอนที่เช็ค
ค่า session ถ้า login จาก user
จะเป็น
$usermember = $_SESSION["usermember"];
ถ้าจาก Face จะได้เป็น
$User = $_SESSION["User"];
เขียนตรวจสอบเป็น
Code (PHP)
if ($usermem)
{
echo "Name : $usermem <a href=logout.php>Lgout</a>";
}else if ($User)
{
echo "Name : $User <a href=$LogoutUrl>Lgout</a>";
}
ไฟล์ logout.php
Code (PHP)
<?php
session_start();
session_destroy();
header("Location: index.php");
?>
ถ้า logout จาก facebook จะเป็นโค๊ดที่โพสต์ตั้งไว้อ่ะค่ะ
|
|
|
|
|
Date :
2014-07-11 12:56:39 |
By :
because |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
session เก่ายังค้างอยู่หรือเปล่า
|
|
|
|
|
Date :
2014-07-11 14:41:51 |
By :
progamer2000 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตัวแปร $usermem มาจากหนายยยยย
จาก php เราใช้ตัวแปรชื่อ
$usermember = $_SESSION["usermember"];
ถ้าจาก Face เราใช้ตัวแปรชื่อนี้
$User = $_SESSION["User"];
พอมาเชค เรากลับใช้ตัวแปรชื่อ
$usermem
มานจะไปเชคตงใหนหว่า
เอางี้ครับ แก้แบบถึก ๆ มันเลย แก้จากตัวเฟส $User = $_SESSION["User"]; เป็นเหมือนตอนใช้ ปกติ
$usermember = $_SESSION["User"];
ตอนตรวจสอบ ก็ตัดทอนให้เหลือแค่
if ($usermem){
echo "Name : $usermem <a href=logout.php>Lgout</a>";
}
|
|
|
|
|
Date :
2014-07-11 15:14:46 |
By :
deawx |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ได้หรือยังครับ ..
|
|
|
|
|
Date :
2014-07-12 12:45:51 |
By :
deawx |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|