Czy można odczytać wartość sesji za pomocą JavaScript?Odczytaj wartość sesji z Javascriptem
Na przykład, jeśli przypisano wartość w sesji w PHP:
$_SESSION['msg'] = "ABC Message";
jest to możliwe do odczytania $_SESSION['msg']
z JavaScript?
Czy można odczytać wartość sesji za pomocą JavaScript?Odczytaj wartość sesji z Javascriptem
Na przykład, jeśli przypisano wartość w sesji w PHP:
$_SESSION['msg'] = "ABC Message";
jest to możliwe do odczytania $_SESSION['msg']
z JavaScript?
$ _SESSION jest konstrukcją po stronie serwera. Będziesz musiał przechowywać tę zmienną w $ _COOKIE, aby móc uzyskać dostęp do strony klienta.
.. Albo można użyć ajax na sprowadzaniu twojej stronie wartość sesji serwera na ciebie po stronie klienta javascript.` (szybki, brudne i niesprawdzone przykład za pomocą jQuery)
Javascript niepożądane:
$.ajax({
url: "test.php",
cache: false,
success: function(html){
eval(html); /// UGLY NASTY YOU MUST VALIDATE YOUR INPUTS... JUST AN EXAMPLE
}
});
strona PHP test.php:
echo 'var myData = "'. $_SESSION['msg'].'"';
Bardzo prostym sposobem jest generowanie kodu JavaScript z kodem PHP:
<script type="text/javascript">
<?php echo 'var msg = "'.json_encode($_SESSION['msg']).'";';
</script>
Jeśli $ _SESSION ['msg'] przechowuje poufne informacje, wyjście na niezaszyfrowaną stronę jest zagrożeniem bezpieczeństwa i należy użyć HTTPS. –
można użyć json_encode(), aby poprawnie uciec przed nim –
@tomhaigh Dzięki, zaktualizowany odpowiednio – harto
<script type="text/javascript">
var foo="<?php echo $_SESSION['user_id']; ?>";
alert(foo);
</script>
Wierzę, że ten pomysł został już wyjaśniony przez harto. –
złożyć jeszcze łatwiejsze przykładem Luis Melgratti's odpowiedzieć można tylko zwrócić json zakodowany wartość z PHP i użytkowania jQuery go analizować, tak:
Javascript:
$("#some_button")
.click(function()
{
$.ajax(
{
url: "get_session.php",
cache: false
})
.done(function(result)
{
var session_credentials = $.parseJSON(result);
console.log(session_credentials);
});
});
PHP:
//get_session.php
<?php
session_start();
echo json_encode($_SESSION);
?>
Wierzę, że istnieją jeszcze więcej odpowiedzi na podobny SO-wątku tutaj: how-to-access-php-session-variables-from-jquery-function-in-a-js-file
Jeśli to pomoże ktoś te przykłady powrócił null
, więc po prostu stosować:
<?php session_start();
$msg = $_SESSION['msg'];
?>
<script>
<?php echo "var msg = '" .$msg . "'"; ?>
</script>
Naprawdę nie odpowiadając na pytanie – MaGnetas
Widzę, że mnie dałeś. Pytanie brzmi "Czy można przeczytać $ _SESSION ['msg'] przy pomocy Javascript?" Moja odpowiedź wykorzystuje javascript do uzyskiwania dostępu do zmiennej php, w przypadku, która pomogła każdemu. Twój komentarz jest taki, że moja odpowiedź nie rozwiązała problemu. Mylisz się. – user2954658
Przeczytaj ponownie odpowiedź. Pytanie brzmiało, czy można odczytać zmienne sesji. Odpowiedź brzmi "Nie", ale w niektórych sytuacjach pomocne jest obejście tego problemu. Nie oświadczyłeś tego. Również formatowanie kodu byłoby miłe. var msg = ' php echo $ msg; ?> "; wygląda o wiele lepiej niż dołączenie do całej linii javascript w php. Przykro mi, ale to nie wygląda na odpowiedź na zadane pytanie. Spróbuj ją poprawić. – MaGnetas
Może zadziałać:
function getCookie(name) {
var value = "; " + document.cookie;
var parts = value.split("; " + name + "=");
if (parts.length == 2) return parts.pop().split(";").shift();
}
getCookie('PHPSESSID');
Dlaczego to jest poddane pod głosowanie? Rozwiązanie firmy harto udowadnia, że to nieprawda. – da5id
Ponieważ pierwsza część odpowiedzi jest całkiem poprawna. – Kalium
Zgadzam się, ale nie odpowiada na pytanie i w rzeczywistości przedstawia wprowadzające w błąd informacje. – da5id