Как передать переменную javascript в переменную php с помощью файла cookie - PullRequest
0 голосов
/ 17 июня 2020

, когда я пытаюсь запустить этот код, чтобы переслать javascript значение (cookie_user) на PHP значение (имя пользователя).

вот мой код:

<script> 
// Creating a cookie after the document is ready 
$(document).ready(function () { 

	var cookies = document.cookie.split(";")
	var cookiePair = cookies[0].split("=");
	var cookie_user=cookiePair[1]);
    createCookie("username", cookie_user, "10"); 
}); 
   
// Function to create the cookie 
function createCookie(name, value, days) { 
    var expires; 

    if (days) { 
        var date = new Date(); 
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); 
        expires = "; expires=" + date.toGMTString(); 
    } 

    else { 
        expires = ""; 
    } 

    document.cookie = escape(name) + "=" +  
    escape(value) + expires + "; path=/"; 
} 
</script> 


<?php 
    $username= $_COOKIE["username"];  
?> 

при выполнении кода я получаю эту ошибку: «Неопределенный индекс: имя пользователя» часть PHP не работает. что мне делать, чтобы исправить?

Спасибо

1 Ответ

0 голосов
/ 17 июня 2020

У вас есть проблема в существующем коде JS с лишними скобками в строке 5 , а также вы не можете получить доступ к cook ie мгновенно из PHP после его включения javascript.

Итак, вы также должны изменить свою часть PHP, сначала проверьте, существует ли готовка ie с помощью isset()? когда вы перезагружаете свою страницу, будет установлено имя пользователя cook ie, которое будет доступно на вашем $_COOKIE['username'] позже.

ON JS,

$(document).ready(function () { 

    var cookies = document.cookie.split(";")
    var cookiePair = cookies[0].split("=");
    var cookie_user=cookiePair[1]; // remove ending parenthesis here  
    createCookie("username", cookie_user, "10"); 
}); 

// Function to create the cookie 
function createCookie(name, value, days) { 
    var expires; 

    if (days) { 
        var date = new Date(); 
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); 
        expires = "; expires=" + date.toGMTString(); 
    } 

    else { 
        expires = ""; 
    } 

    document.cookie = escape(name) + "=" +  
    escape(value) + expires + "; path=/"; 
} 

ВКЛ PHP,

<?php
$username = isset($_COOKIE['username'])? $_COOKIE['username']:'cookie not set';
echo $username;
?>

В качестве альтернативы вы можете использовать ajax для отправки данных со стороны клиента js на сторону сервера PHP

...