在 '<a href="" action="php here"></a>' 中执行 PHP

Posted

技术标签:

【中文标题】在 \'<a href="" action="php here"></a>\' 中执行 PHP【英文标题】:Executing PHP in an '<a href="" action="php here"></a>'在 '<a href="" action="php here"></a>' 中执行 PHP 【发布时间】:2017-02-14 03:08:13 【问题描述】:

我正在尝试执行一些 php,从您的浏览器中删除一个 cookie(它用于删除您的登录数据 cookie),当您单击名为“注销”的按钮时,我尝试使用一个操作来执行此操作,但是它似乎不这样工作?

<?php
                    if(isset($_COOKIE['LoggedIn']) && !empty($_COOKIE['LoggedIn'])) 
                    echo "<li><a href=\"#\" action=\"setcookie(\"LoggedIn\", \"\", time(), \"/\");\">Log Out</a></li>";
                     else 
                        echo "<li><a href=\"login.php\">Log in</a></li>";
                    
                ?>

我正在使用“\”将引号更改为可以放在主引号内的常规文本引号。

所以我的问题主要是,我将如何正确执行它?我已经尝试过这种方式,但它没有做任何事情。

【问题讨论】:

除非我错过了什么,否则action 元素上没有action 属性。您是要创建链接还是表单?看起来您只是想用onclick 制作一个按钮,那么为什么不这样做呢?至于setcookie()这个函数,你在哪里定义的? 不。仅在页面加载之前处理 PHP。当页面完全加载后,你想使用 javascript,要么做类似的过程,要么调用 ajax 函数向 PHP 页面发送请求。 您正在尝试通过 html 中的“操作”执行 PHP 函数。我认为你想调用一个 JavaScript 函数,它会对你的页面进行 AJAX 调用,从而执行 PHP 函数。 【参考方案1】:

我建议只有一个 logout.php 按钮,在单击注销按钮后重定向到登录页面,如下所示:

echo "<li><a href=\"logout.php\">Log Out</a></li>";

注销.php

    //Expire Cookie
    setcookie('LoggedIn', '', time() - 60*100000, '/');

    //Redirect to page
    header( 'Location: https://www.foo.com/login.php' ) ;

【讨论】:

我试过了,甚至用var_dump检查cookie是否仍然存在,cookie保存了用户名的字符串,但它仍然显示cookie存在 您需要确保您设置的参数与您之前设置的完全相同(忽略值和到期时间),否则它将无法正常工作。我遇到了同样的问题,正是这个 SO 问题帮助了我:***.com/questions/2856366/…【参考方案2】:

据我所知,锚标签(“a”标签)没有“动作”属性的概念。我认为您在这里想要的是“onclick”而不是“action”。

对我来说,您还试图在“action”属性中执行 php 函数,这显然行不通 - 您需要创建一个简单的 javascript 函数来清除 cookie。例如:

var deleteCookie = function(name,path) 
    document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:01 GMT;' + (path ? ' path=' + path : '');
;

然后您可以在链接上的“onclick”中调用它。

【讨论】:

【参考方案3】:

你可以使用这样的东西;

<a href='/?logout'>Logout</a>

if(isset($_GET['logout'])) Logout(); 

function Logout() 

    unset( $_SESSION[''] ); // unset and session data
    session_unset();  // remove all session variables
    session_destroy(); // destroy the session
    setcookie("LoggedIn", "", time() - 36000, "/");   //unset the remember me cookie
    header( "Location: /?loggedOut=1" );
    exit;

【讨论】:

【参考方案4】:

最好还是将您的 a href 标记链接到运行您需要和使用的功能的 php 文件

header("Location: Your URL")

重定向回登录页面或您想要的任何地方

【讨论】:

以上是关于在 '<a href="" action="php here"></a>' 中执行 PHP的主要内容,如果未能解决你的问题,请参考以下文章

使用 --- innerHTML = "...<a href='http://...'>HttpLink</a>..." 在 javascript 函数中创

在这种情况下使用 <a href="http://name.com" rel="noindex, nofollow">name</a>

我要在<a href=""></a>的href里填写一段由window.location.href获得的地址,怎么编写?

在<a href=""></a>里,我要在href动态显示当前网址,用javascript的 document.write(window.locat

<a href=""> 在 PHP 中用于在源视图中隐藏链接

<a>标签中href="javascript:;"表示啥意思??