Czy poniższy bit kodu jest prawidłowy?Niszczenie sesji PHP po kliknięciu łącza
<a href="#" onclick="<?php session_destroy();?>">Logout</a>
Czy poniższy bit kodu jest prawidłowy?Niszczenie sesji PHP po kliknięciu łącza
<a href="#" onclick="<?php session_destroy();?>">Logout</a>
Nie jest to nieważny kod. Zniszczy sesję w momencie ładowania strony php.
do niszczenia sesję kliknij należy napisać
<a href="logout.php" >Logout</a>
w logout.php
session_destroy();
Nie, to nie logiczne, aby wywołać funkcję po stronie serwera z po stronie klienta, onClick
to zdarzenie po stronie klienta, tak, to nie mogę zadzwonić session_destroy()
bo to po stronie serwera (php function), która nie jest dostępne po stronie klienta
Zły kod. możesz użyć tego kodu:
<?php if($_GET['logout']==1) session_destroy(); ?>
<a href="?logout=1">Logout</a>
zrobić stronę o nazwie logout.php
Logout.php_ _ ___
<?php
Session_start();
Session_destroy();
header('Location: ' . $_SERVER['HTTP_REFERER']);
?>
Twój page_ _ ____
<a href="Logout.php">Logout</a>
To jest właściwy sposób, aby to zrobić.Należy rozpocząć sesję przed jej zniszczeniem. – vasc0x
Ten kod będzie już zniszczyć sesję przed kliknięciem w link, należy zrobić to tak:
HTML strony:
<a href="sessiondestroy.php">Logout</a>
Sessiondestroy.php:
<?=session_start(); session_destroy(); ?>
Nie jest niepoprawny ... onclick jest zdarzeniem po stronie klienta. możesz to zrobić zamiast tego.
<a href="logout.php">logout</a>
i utworzyć plik o nazwie logout.php i dołączyć session_destroy(); oświadczenie
<?php
session_destroy();
//do other things... like redirect to a deafault/login page
?>
Jest to możliwe. Jeśli koncentrujesz się na działaniu onClick, możesz po prostu użyć AJAX. Po pierwsze trzeba by utworzyć ajax.php, która będzie wyglądać następująco:
<?php
//AJAX dynamic callback
if(isset($_GET['action'])){
if($_GET['action'] == 'logout'){
//destroy the session
session_destroy();
echo 'Logout success!';
//redirect the user to a default web page using header
header("location:http://example.com/");
}
}
?>
Wtedy chcesz utworzyć plik JavaScript, który powie ajax.php że chcesz się wylogować:
<script>
function logout()
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("Logoutbutton").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","ajax.php?action=logout",true);
xmlhttp.send();
}
</script>
w każdym razie, dzięki za korzystanie StackOverflox i proszę zgłoś się jak to działa, a jeśli potrzebna jest dodatkowa pomoc :)
TP
Najbardziej skomplikowane wylogowanie, jakie kiedykolwiek miałem, i mam na myśli kiedykolwiek widziałem. – user2067005
sesję należy rozpocząć przed użyciem session_destroy(). – vasc0x