调用javascript函数来运行php代码

Calling javascript function to run php code

本文关键字:php 代码 运行 javascript 函数 调用      更新时间:2023-09-26

我想做一个登录页面,当你点击注销它会注销你然后刷新页面,然而,每当JavaScript $。得到它,它只是不运行PHP代码,但它刷新页面。非常感谢你的帮助。

index . php

   <script type="text/javascript" src="js/jquery-1.8.3.js"></script>
   <script type="text/javascript">
    function logOut() {
            $.get("logout.php");
            location.Reload();
            return false;
        }
   </script>
   <a href="#" onclick="logOut();">Log Out</a>

logout.php

<?php
    setcookie('username', '', 0);
    setcookie('password', '', 0);
?>

您必须在成功时添加刷新,或者至少等待呼叫结束。

  <script type="text/javascript" src="js/jquery-1.8.3.js"></script>
   <script type="text/javascript">
    function logOut() {
            $.get("logout.php" , returndata , function() {
            location.Reload(); });
        }
   </script>
   <a href="#" onclick="logOut();">Log Out</a>

改变你的setcookie也被立即删除。常用的方法是输入过去的时间戳:

setcookie('cookiename',0,( time() - 3600 ));

为什么不使用javascript来删除cookie,而使用php来获取php cookie

根据setcookie

setcookie('username', '', 0);

在会话结束时过期

到期


cookie过期的时间。这是一个Unix时间戳,表示从epoch开始的秒数。换句话说,您很可能使用time()函数加上您希望它过期前的秒数来设置它。或者您可以使用mktime()。Time()+60*60*24*30将设置cookie在30天内过期。如果设置为0或省略,cookie将在会话结束时过期(当浏览器关闭时)。

如果您想删除cookie,您应该使用0以外的值

setcookie('username', '', 1);

首先,您的注销功能实现错误。如果您想删除所有cookie(假设您的系统不复杂,假设您不需要保留用户偏好,如主题、语言、UI参数)

logout.php应与

相似
<?php
//Will remove all cookies
if ( !empty($_COOKIE) ){
  foreach($_COOKIE as $key){
     //Set each key in past
     setcookie($key, null, time() - 84600);
  }
}
//Would destroy the session if it does exists
if ( !empty($_SESSION) ){
  session_destroy();
}
//Don't forget to redirect back to home page
header('Location: /');
exit();

如果您100%确定cookie已设置,但setcookie()没有删除它们,则可能99%它们位于不同的路径上。

确保,当你设置/删除它们时,它们在相同的路径上。setcookie()接受第四个可选参数path

<?php
//So when you set a cookie
setcookie('cookie_key', 'cookie_value', time() + some_lifetime_in_seconds, '/');
//And when you remove a cookie:
setcookie('cookie_key', '', time() - 86400, '/');

第二
您不应该使用类似ajax的注销函数。这是不明智的,而且有点浪费内存。

代码:

   <script type="text/javascript" src="js/jquery-1.8.3.js"></script>
   <script type="text/javascript">
    function logOut() {
            $.get("logout.php");
            location.Reload();
            return false;
        }
   </script>
   <a href="#" onclick="logOut();">Log Out</a>

应该重写为

 <script type="text/javascript" src="js/jquery-1.8.3.js"></script>
 <a href="/logout.php">Log Out</a>