سلام .
نحوه دریافت توکن از طریق HEADER(bearer) در php خام چطوری هستش؟
ورژن php 8.1 .
من واسه دیکود کردن توکن از روش زیر استفاده میکنم ولی خطا میده. نوع خطا ==> (Wrong number of segments)
require_once 'vendor\autoload.php';
use Firebase\JWT\JWT;
$data = json_decode(file_get_contents("php://input"));
$secret_key = "ELITE....";
$jwt=isset($data ->jwt) ? $data->jwt : "";
if($jwt){
try {
$decoded = JWT::decode($jwt, $secret_key, array('HS384'));
echo json_encode(array(
"message" => "Access granted: ".$jwt,
"error" => $e->getMessage()
));
}catch (Exception $e){
http_response_code(۴۰۱);
echo json_encode(array(
"message" => "Access denied.",
"error" => $e->getMessage()
));
}
}
ولی به صورت دستی توکن وارد میکنم انجام میشه مثل کد پایین:
require_once 'vendor\autoload.php';
use Firebase\JWT\JWT;
use Firebase\JWT\key;
try {
$jwt = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzM4NCJ9.eyJpc3MiOiJodHRw";
$secret_key = "ELITE_";
$json_data = JWT::decode($jwt,new key($secret_key,"HS384"));
$json_data = (array) $json_data;
$json_data['data'] = (array) $json_data['data'];
$stmt = $db->prepare("SELECT * FROM user WHERE id_phone = :userId");
$stmt->bindParam(":userId", $json_data['data']['userId']);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($result , JSON_HEX_TAG | JSON_HEX_QUOT | JSON_HEX_APOS | JSON_HEX_AMP);
} catch (Exception $e) {
echo $e->getMessage();
}
از کتابخانه composer require guzzlehttp/guzzle:^7.0 که استفاده میکنم خطا میده ورژن 8.1 php قبول نمیکنه.
سلام.
@ehsndvr
اصلا توکن نمیتونم دریافت کنم null میشه.
این خطا بالا هم مربوط به عدم دریافت توکن هستش.
ولی به صورت دستی توکن وارد میکنم درسته .
شاید پاسخ شما همینجا باشد
احتمالا مشکل شما عدم ارسال درست داده به سروره
میتونید AnyDesk بدید بنده روی سیستمتون بررسی کنم ؟
اگر میتونید تشریف بیارید تلگرام : @ehsndvr
@ehsndvr
مشکل حل شد.
@m.r.dude.body لطفا روش حلتون رو بنویسید که بقیه عزیزانی که به این مشکل میخورن بدونن باید چیکار بکنن.