実現しよとうとしていること
自分のデベロッパーのアカウントが友達追加された時、そのユーザーの情報を「セッション」に保存して
後のhtml(phpのビューファイル)で表示させる。
問題
友達追加があった際にそのユーザーのIDを取得できていることは確認しました。
しかし、次の遷移先ではNULLになっています。この原因について教えていただけると幸いです。
友達追加や、メッセージの送信があった際に、飛んでくるPHPページです。
php
1<?php 2 3/** 4 * Copyright 2016 LINE Corporation 5 * 6 * LINE Corporation licenses this file to you under the Apache License, 7 * version 2.0 (the "License"); you may not use this file except in compliance 8 * with the License. You may obtain a copy of the License at: 9 * 10 * https://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, software 13 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 14 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 15 * License for the specific language governing permissions and limitations 16 * under the License. 17 */ 18 19require_once("./LINEBotTiny.php"); 20//セッション開始 21session_start(); 22 23$channelAccessToken = "My channelAccessToken "; 24$channelSecret = "My channelSecret"; 25 26$client = new LINEBotTiny($channelAccessToken, $channelSecret); 27foreach ($client->parseEvents() as $event) { 28 switch ($event["type"]) { 29 case "message": 30 $message = $event["message"]; 31 switch ($message["type"]) { 32 case "text": 33 $client->replyMessage([ 34 "replyToken" => $event["replyToken"], 35 "messages" => [ 36 [ 37 "type" => "text", 38 "text" => $message["text"] 39 ] 40 ] 41 ]); 42 break; 43 default: 44 error_log("Unsupported message type: " . $message["type"]); 45 break; 46 } 47 break; 48 case "follow": 49 // ユーザーIDを取得 50 $source = $event["source"]; 51 $line_user_id = $source["userId"]; 52 $_SESSION["line_user_id"] = $line_user_id; 53 $client->replyMessage([ 54 "replyToken" => $event["replyToken"], 55 "messages" => [ 56 [ 57 "type" => "text", 58 "text" => "友達追加ありがとうございます。あなたのLINEユーザーID(承認用)は" . $line_user_id . "です。以下のURLより社員確認をしてください。https://linebotsystem1011.herokuapp.com/verification_user.html" 59 ] 60 ] 61 ]); 62 break; 63 default: 64 error_log("Unsupported event type: " . $event["type"]); 65 break; 66 } 67};
この次にHTMLに飛び、そこで値を入力した後、コントローラーに遷移します。
そこのコントローラーで$_SESSION["line_user_id"]に値があるかないかで条件分岐しているのですが、NULLになっています。
コントローラー
php
1<?php 2 session_start(); 3 var_dump($_SESSION["line_user_id"]); 4 5 if ($_SERVER["REQUEST_METHOD"] === "POST") { 6 7 // すでに友達登録を済ませていれば 8 if ($_SESSION["line_user_id"] != null) { 9 if ($_POST["emp_no"] != "" && $_POST["emp_no"] == "1234") { 10 $_SESSION["emp_no"] = $_POST["emp_no"]; 11 } 12 13 if ($_POST["emp_pass"] != "" && $_POST["emp_pass"] == "password") { 14 $_SESSION["emp_pass"] = $_POST["emp_pass"]; 15 } 16 17 if ($_SESSION["emp_no"] != null && $_SESSION["emp_pass"] != null) { 18 header("Location: https://linebotsystem1011.herokuapp.com/verification_confirmation.php"); 19 exit; 20 } else { 21 header("Location: https://linebotsystem1011.herokuapp.com/lapse.html"); 22 exit; 23 } 24 }else{ 25 var_dump("line_user_id is empty"); 26 exit(); 27 } 28 }else{ 29 var_dump("It's not considered a post request"); 30 exit(); 31 } 32 33 exit();
追記⓵
1番初めの記載コードのsession_start()を先頭に書いても同じでした。
回答3件
あなたの回答
tips
プレビュー