相关疑难解决方法(0)

记住PHP会话私密浏览

我正在开发一个分析脚本,人们可以将其添加到页面中以跟踪访问者数据.我遇到的一个问题是设计一种方法来跟踪个人会话,当他们从私人浏览器(即Incognito)查看某人的页面时.

这是我用来查看某人是否有人活动超过30分钟的脚本,如果他们有,将创建一个新会话,如果没有,那么他们将恢复他们以前的会话.

        session_start();
        $max_time = 1800;
        $current  = time();
        if (!isset ($_SESSION['Stationary'])){
            $_SESSION['Stationary'] = time();
            $session = $_SESSION['Stationary'];
        }
        if (!isset ($_SESSION['Inactive'])) { 
            $_SESSION['Inactive'] = time();
        } else {
            $session_life = $current - $_SESSION['Inactive'] ;
            if ($session_life > $max_time ) {
                session_destroy();
                session_start();
                $_SESSION['Inactive'] = time();
                $_SESSION['Stationary'] = time();
                $session = $_SESSION['Stationary'];
            } else {
                $_SESSION['Inactive'] = time();
                $session = $_SESSION['Stationary'];
            }
        }
Run Code Online (Sandbox Code Playgroud)

当用户从常规浏览器(IE.Chrome Incognito)查看我的页面时,此脚本可以完美运行,但是当他们在iPhone上进行查看时,在私人浏览中,每次访问新页面时,都会呈现新会话 - - 除非另有说明,否则我没有这个问题.

所以我的问题是,我知道在私人浏览器中查看页面是通过临时缓存来实现的,一旦浏览器关闭就会被清除,但是为什么即使浏览器没有关闭,打开链接也会破坏他们之前的会话,即使链接指向另一个页面,页面上有相同的脚本?

这有解决方法吗?

编辑: 我应该注意,这个脚本被放在一个php文件中,头文件application/json也可以用作JavaScript文件.

php session

15
推荐指数
1
解决办法
4147
查看次数

我们如何跟踪没有身份验证系统的网站中的用户流?

假设客户填写了他访问过的第3页上的表格,我们如何找到他的流程.(他来自哪里,他点击的网站链接,基本上是整个流程,直到他填写表格).

网站上没有登录或任何类型的身份验证系统.有没有办法监控用户流量?我对谷歌分析没有多少经验.谁能帮我这个?

analytics google-analytics

7
推荐指数
1
解决办法
440
查看次数

PHP如果要在特定的IP地址上运行脚本

有没有办法添加一个if,以便某些脚本只为使用特定IP地址的用户运行.

php if-statement

5
推荐指数
1
解决办法
2万
查看次数

$ _SERVER ['REMOTE_ADDR']返回127.0.0.1

$ _SERVER ['REMOTE_ADDR']返回127.0.0.1.

是因为我安装了清漆缓存和数据转到清漆,然后apache和服务器认为请求来自清漆而不是客户端?

php localhost varnish

3
推荐指数
1
解决办法
1万
查看次数

如何在PHP Restler 3中记录所有请求?

我用Luracast Restler 3 RC 6(https://github.com/Luracast/Restler/tree/3.0.0-RC6)创建了一个API,现在我想创建一个登录到我的API,以便每个请求都为将记录API.我试图在任何地方寻找答案,没有运气.所以我的问题是:

如何在Restler 3中创建日志记录类/函数,每次发出请求时都会调用它?应该以某种方式实现路由,还是什么?我需要这样的东西:

logging($route, $http_method, $format, $api_key, $parameters);
Run Code Online (Sandbox Code Playgroud)

这个函数/类应该获取正在进行的请求的所有可能信息并将其插入logging表中,如下所示:

+----+---------------------+------------+----------+----------------+--------+---------------------------+
| id | log_time            | ip_address | api_key  | route          | method | parameters                |
+----+---------------------+------------+----------+----------------+--------+---------------------------+
|  1 | 2015-08-06 14:32:54 |  127.0.0.1 | ASDFasdf | /v1/users/list |    GET | all_given_parameters_here |
+----+---------------------+------------+----------+----------------+--------+---------------------------+
Run Code Online (Sandbox Code Playgroud)

我不是要求你为我创建一个用于记录的函数/类,我只是需要一些关于如何以及在何处执行此操作的指导,或者它是否可能?

编辑:忘记提及我还需要记录方法,该方法用于给定的路由:GET,POST,PUT,PATCH或DELETE.也许还使用了格式(JSON或XML).

编辑:我认为我应该Routes->find()以某种方式扩展Luracast\Restler\Routes.php ,但是如何以及在哪里?

php restler

3
推荐指数
1
解决办法
699
查看次数

Laravel - 获取客户端 IP 地址 - 始终获得 127.0.0.1 结果

我无法获取客户端的 IP 地址,我需要确定他的当前位置。

我使用过 request->ip(), $_SERVER['REMOTE_ADDR'] 并且我总是得到 127.0.0.1 结果,这不是我想要的。

我究竟做错了什么?

ip laravel guzzle

3
推荐指数
2
解决办法
8914
查看次数

以php联系人表单捕获用户的IP地址

我正在尝试从php联系表单获取用户IP地址,我有以下代码,但我想知道以这种方式使用clean_string向我自己发送IP地址是有效的吗?

<?php

session_start();




if(isset($_POST['fullname'])) {

include 'freecontact2formsettings.php';

function died($error) {
    echo "Sorry, but there were error(s) found with the form you submitted. ";
    echo "These errors appear below.<br /><br />";
    echo $error."<br /><br />";
    echo "Please go back and fix these errors.<br /><br />";
    die();
}

if(!isset($_POST['fullname']) ||
    !isset($_POST['Address1']) ||
    !isset($_POST['city']) ||   
    !isset($_POST['Postcode']) ||
    !isset($_POST['contactnum']) ||
    !isset($_POST['emailaddress'])







    ) {
    died('Sorry, there appears to be a problem with your form submission.');        
}
$ip = $_SERVER['HTTP_CLIENT_IP']; 
$ansb0_from = $_POST['fullname']; // required
$ansb1_from …
Run Code Online (Sandbox Code Playgroud)

php

2
推荐指数
1
解决办法
1万
查看次数

使用与HTTP_X_FORWARDED_FOR类似的方法在laravel中获取用户IP地址

我需要获取用户的IP地址”。

我找到了这篇文章如何在Laravel 5.1中获取客户端IP地址?

上述文章使用了 Request::ip();

但是,此方法返回我的服务器IP地址。据我从其他来源了解到,这是在站点为localhost时发生的-但是站点是托管的,并且位于服务器上。

这个站点是在线的并且在线的,但是它可能称为localhost,因为该站点可能位于其自己的服务器上(我没有服务器配置方面的经验,只能知道这是不是真的)。

当我连接到数据库主机时,我也使用localhost引用,而不是使用mysql.phpmyadmin.hosting.com数据库主机。因此,我的猜测是,该Request::ip();返回值返回服务器ip,因为该站点以某种方式位于localhost。

但是,如果我使用$ _SERVER ['HTTP_X_FORWARDED_FOR']; 我得到正确的IP地址。

现在我的最后一个问题使用安全吗?还有使用Laravel函数发出此请求的另一种方法吗?

据我了解,$ _ SERVER ['HTTP_X_FORWARDED_FOR']; 根据如何在PHP中获取客户端IP地址,可能会有安全漏洞

我可以$_SERVER['HTTP_X_FORWARDED_FOR'];安全使用而不必担心吗?如果没有,我可以采取其他方法安全地获得用户IP地址吗?

php laravel

2
推荐指数
1
解决办法
3578
查看次数

关于[HTTP_X_FORWARDED_FOR]的安全问题,我是否应该使用它而不是[REMOTE_ADDR]?

我正在尝试创建一个php计数器,为了不计算同一访问者的重复访问,我一直在考虑将访问者的IP地址保存到数据库中,我应该转向$_SERVER

我读过@Dusza 的这个示例函数,它看起来很好很方便:

<?php
function get_IP() {

// ADDRESS IP
   if     (getenv('HTTP_CLIENT_IP'))       $ipaddress = getenv('HTTP_CLIENT_IP');
   else if(getenv('HTTP_X_FORWARDED_FOR')) $ipaddress = getenv('HTTP_X_FORWARDED_FOR');
   else if(getenv('HTTP_X_FORWARDED'))     $ipaddress = getenv('HTTP_X_FORWARDED');
   else if(getenv('HTTP_FORWARDED_FOR'))   $ipaddress = getenv('HTTP_FORWARDED_FOR');
   else if(getenv('HTTP_FORWARDED'))       $ipaddress = getenv('HTTP_FORWARDED');
   else if(getenv('REMOTE_ADDR'))          $ipaddress = getenv('REMOTE_ADDR');
   else                                    $ipaddress = 'UNKNOWN';
//return $ipaddress;
    }
?>
Run Code Online (Sandbox Code Playgroud)

但我在这里做了一些研究,发现其中存在一个安全漏洞,因为用户可以欺骗除 REMOTE_ADDR 之外的所有值,而 REMOTE_ADDR 可以通过代理进行修改。

所以我想当他们说存在安全漏洞时,这意味着当我将用户的输入插入数据库进行一些绑定时,我应该对其进行清理。

还有其他预防措施吗?

鉴于所有其他值都不可靠,我应该完全避免使用它们吗?

但是 REMOTE_ADDR 的非欺骗性值又如何呢?可以通过代理来修改。

关于我应该走哪条路有什么建议吗?

如果您想投反对票,或者投票关闭或删除问题,请给我留言说明原因,以便我改进我的问题。谢谢。

php mysql security

2
推荐指数
1
解决办法
1824
查看次数

如何使用 PHP 获取客户端的 IP 地址和端口?

如何使用 PHP 获取客户端的 IP 和端口?

我尝试了下面的脚本,但它只给了我 IP 地址。

<?php print $_SERVER['REMOTE_ADDR']; ?>
Run Code Online (Sandbox Code Playgroud)

php ip port client

1
推荐指数
2
解决办法
1万
查看次数