Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在所有浏览器中打开URL,即使用户未登录?_Php - Fatal编程技术网

Php 在所有浏览器中打开URL,即使用户未登录?

Php 在所有浏览器中打开URL,即使用户未登录?,php,Php,即使在使用会话时,我的url也会在所有浏览器中打开。Ex abc.com/123.php,用户未登录。这将在所有浏览器中打开。我正在使用此代码。所有代码都在应该放在else块后面?是的,只有这样,才可以try freeloper.com或类似的网站,然后付钱给别人帮你做这件事。您每天都在发布此消息,但没有任何进展。@Onimusha从deximat获得一些信息,您将了解更多信息。添加以下代码以了解您的情况,因为您未能提供我的url,在清除所有缓存后,我的url仍在打开,未登录新浏览器。您的情况是

即使在使用会话时,我的url也会在所有浏览器中打开。Ex abc.com/123.php,用户未登录。这将在所有浏览器中打开。我正在使用此代码。所有代码都在我正在使用的ok代码中

         <?php
       session_start();

         if (isset($_SESSION['LAST_REQUEST_TIME'])) {
     if (time() - $_SESSION['LAST_REQUEST_TIME'] > 600) {
    // session timed out, last request is longer than 10 minutes ago
    unset($_SESSION);
    session_destroy();
    header("location:userlogin.php");
}
  } else {
$_SESSION['LAST_REQUEST_TIME'] = time();
   }

        if($_SESSION['username']=="");
        ?>

因为您的

else {
header("location:to_some_login_page.php");
   }
不在

试试这个:

<?php
session_start();

if (isset($_SESSION['LAST_REQUEST_TIME'])) {
if (time() - $_SESSION['LAST_REQUEST_TIME'] > 600) {
    // session timed out, last request is longer than 10 minutes ago
    unset($_SESSION);
    session_destroy();
    header("location:userlogin.php");
}
else {
$_SESSION['LAST_REQUEST_TIME'] = time();
 }

 if($_SESSION['username']=="");

 ///////your code/////

}
else {
header("location:to_some_login_page.php");
   }
?>

我不确定这是否能很好地编译。因为有几个问题

请注意这一行代码:

if($_SESSION['username']=="");
这意味着
true
if语句以分号结束,这是
if语句的一部分

第二件事是,您的
else
部分永远不会执行,而是作为常规HTML打印

我会这样写:

<?php
session_start();

if (isset($_SESSION['LAST_REQUEST_TIME'])) {
  if (time() - $_SESSION['LAST_REQUEST_TIME'] > 600) {
    // session timed out, last request is longer than 10 minutes ago
    unset($_SESSION);
    session_destroy();
    header("location:userlogin.php");
  }
} else {
  $_SESSION['LAST_REQUEST_TIME'] = time();
}

if(isset($_SESSION['username'])) {
?>
 ///////SOME HTML CODE/////

<?php
} else {
  header("location:to_some_login_page.php");
}
?>

所以你们甚至不需要其他部分,因为只要设置了标题,他就会被重定向

else块不在代码中。php标签?>应该放在else块后面?是的,只有这样,才可以try freeloper.com或类似的网站,然后付钱给别人帮你做这件事。您每天都在发布此消息,但没有任何进展。@Onimusha从deximat获得一些信息,您将了解更多信息。添加以下代码以了解您的情况,因为您未能提供我的url,在清除所有缓存后,我的url仍在打开,未登录新浏览器。您的情况是否正常$_会话['username']==''这是否意味着用户已登录?不,我是说这应该以某种方式检查用户是否已登录,因为我没有看到用于登录的代码,我不能说这是否正确。当您登录用户时,您必须使用一些设置。如果是空字符串,这可能是正常的。如果他没有登录?还没定吗?如果(isset($\u SESSION['username'])仍然没有使用url登录,则可能需要进行适当的检查
if ($_SESSION['username']!="") {
  header("location:to_some_login_page.php");
}