PHP重定向或cookie,不是在Godaddy上工作,而是在localhost上工作

所以我刚刚将我的php上传到godaddy,除了正在运行的重定向现已停止。 在实时服务器上的代码如何工作到离线之间应该没有区别,所以我不明白改变了什么。 </ p>

以下是无法正常工作的代码示例</ p>

带有注销超链接的标题链接,据我所知, 超链接</ p>

<前> &lt; div id =“header”&gt;
&lt; div&gt;
&lt; a href =“index.php”&gt; Home&lt; / 一个&GT;

&lt; div id =“loginreglink”&gt;
&lt; a href =“Logout.php”&gt;退出&lt; / a&gt;
&lt; / div&gt;
&lt; / div&gt;
&lt; / DIV&GT;

</ code> </ pre>

实际的Logout页面(logout.php)</ p>

 &lt;?php 

require_once(' Connection.php');

header('Refresh:0;');

if(!isset($ _ COOKIE ['Username'])){
require('LoginFunctions.inc.php') ;
redirect_user();
} else {
setcookie('Username','',time() - 60 * 60 * 24 * 90,'/','',0,0);
require ('RedirectPage.php');
redirect_user();
}

?&gt;
</ code> </ pre>

RedirectPage.php(下一页 应该在注销页面访问后立即链接到</ p>

 &lt;?php 
require('index.php');
redirect_user();
?&gt;
</ code> </ pre>

然后立即链接回索引,但是用户应该注销。 这不会发生。 </ p>

如果页面重定向到索引(应该如此),可能会使用以下序列,这会导致我认为重定向正在工作,但用户未注销。 cookie未被删除。 我真的不明白为什么它不是因为它确实通过localhost上的netbeans工作。 </ p>
</ div>

展开原文

原文

So i've just uploaded my php to godaddy, except the redirects which were working have now stopped. There's supposed to be no difference between how code works on a live server to offline so i don't understand what's changed.

Here is a sample of the code which isn't working

The header link with the logout hyperlink which as far as i can tell acts as a hyperlink should

<div id="header">
           <div>
            <a href="index.php">Home</a> 
                <div id="loginreglink">
                <a href="Logout.php">Log Out</a>
                </div>
           </div>
          </div> 

The actual Logout page (logout.php)

<?php

require_once ('Connection.php');

header('Refresh: 0;');

            if (!isset($_COOKIE['Username'])){
                require ('LoginFunctions.inc.php');
                redirect_user();
            } else {
                setcookie('Username', '', time()-60*60*24*90, '/', '', 0, 0);
                require ('RedirectPage.php');
                redirect_user();
            }


?>

RedirectPage.php (the next page which should link to, immediately after access of the logout page)

<?php
            require ('index.php');
            redirect_user();
?>

Which then immediately links back to index, however the user should be logged out. This isn't happening.

What happens is the page redirects to index (as it should) presumably using the following sequence, which leads me to think that the redirects are working, but the user isn't logged out. The cookie isn't removed. I don't really understand why it isn't though because it does work through netbeans on localhost.

douyanpeng0748
douyanpeng0748 我是故意这样做的,因为我无法理解为什么当我退出并重定向到else子句中的index.php时它会删除cookie,但页面会加载cookie到位然后会丢失在刷新时或用户访问另一个页面时的cookie。因此,第二个重定向是为了确保cookie确实从浏览器中删除而不是删除,但是在加载之后。或者至少,这是我的书给我的印象,但是看着它似乎第一次重定向被浪费,因为索引重定向将被用于第一。
接近 6 年之前 回复
duanlinpi0265
duanlinpi0265 你意识到你在“else”条件下两次调用redirect_user()?您在包含的REdirectPage.php文件中调用它一次,而不是在else条件下立即调用它。为什么是这样?redirect_user()的代码是什么?
接近 6 年之前 回复
duanhan8757
duanhan8757 两个不同的服务器,无论是本地的还是某个托管公司的某个地方,都不应该假设它们具有类似的环境,除非你以某种方式将它们设置为相似并且知道它们运行的​​是相同的Web服务器配置,安全性设置,软件版本等。了解这些各种软件依赖关系是您的应用程序的基础,您实际上只会随着时间和经验学习。我只是试图消除所有环境都会表现相似的观念。
接近 6 年之前 回复
duanchuang6978
duanchuang6978 那么,为什么不开始解释或链接我有用的东西呢?而不是试图让我感到愚蠢。我是新人,我知道,我的老师没用,所以我在教自己,据我所知,到目前为止,我所写的所有代码都在线上和线下工作,并且,我还没有看到(因为我还没有做过)任何代码的例子到目前为止都有不同的工作方式。
接近 6 年之前 回复
dpbf62565
dpbf62565 “代码在实时服务器上的工作方式与脱机之间应该没有区别”。我不能开始告诉你这是多么错误。
接近 6 年之前 回复
drh47606
drh47606 redirect_user()在哪里声明?
接近 6 年之前 回复

1个回答



这很容易。 取消设置cookie。 </ p>

  if(!isset($ _ COOKIE ['Username'])){
require('LoginFunctions.inc.php');
redirect_user();
} else {
setcookie('Username','',time() - 60 * 60 * 24 * 90,'/','',0,0);
require('RedirectPage.php'); \ n //添加这个
unset($ _ COOKIE ['Username'];
//或使用setcookie并使时间过去过期,只需输入一个空值,如
$ cookie_name =“Username”; \ n $ cookie_value =“”;
$ time = -3600;
setcookie($ cookie_name,$ cookie_value,$ time,“/”);
redirect_user();
}
</ code> </ pre>
</ div>

展开原文

原文

It's easy. Unset the cookie.

if (!isset($_COOKIE['Username'])){
   require ('LoginFunctions.inc.php');
   redirect_user();
} else {
   setcookie('Username', '', time()-60*60*24*90, '/', '', 0, 0);
   require ('RedirectPage.php');
   //add this
   unset($_COOKIE['Username'];
   //or use setcookie and make the time to expire in the past and just put an empty value like
   $cookie_name = "Username";
   $cookie_value = "";
   $time = -3600;
   setcookie($cookie_name, $cookie_value, $time, "/");
   redirect_user();  
}

dongzhao3040
dongzhao3040 这工作了一段时间,但现在它没有正确设置cookie。 现在它似乎删除了cookie,然后当我选择另一个页面时,它再次重置cookie,而我没有尝试登录。再次,这个问题只发生在托管网站上,而不是本地。
接近 6 年之前 回复
dtmm0148603
dtmm0148603 是啊。 你是正确的迈克
接近 6 年之前 回复
duanao3204
duanao3204 unset($ _ COOKIE ['foo'])不会从浏览器客户端删除cookie,而只是从PHP的内存中删除变量。 您必须发送标头以使浏览器客户端上的cookie过期(通常通过setcookie()完成)。 我认为这样做是好的做法,但是如果你想让你的执行脚本在执行其余部分时不受这个变量的限制。
接近 6 年之前 回复
ds261634878
ds261634878 这很简单,任何想法为什么在托管时需要取消设置cookie?
接近 6 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐