Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.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从Excel打开链接会运行页面三次_Php - Fatal编程技术网

PHP从Excel打开链接会运行页面三次

PHP从Excel打开链接会运行页面三次,php,Php,我有一个奇怪的问题,我发现很难用一个标题来概括 第一名: 我有一个网页,人们需要登录 我有一个Excel文档,带有网页链接 问题: 当用户登录并单击Excel文档中的链接时。网页告诉他们他们没有登录 我目前的发现: 我在Mac上使用Office,我没有任何问题 在Windows上使用Office的用户确实存在问题 我认为问题是由于会话,这可能是用户在应该登录时没有登录的原因 我做了一些测试 每个URL都经过index.php index.php <?php session_star

我有一个奇怪的问题,我发现很难用一个标题来概括

第一名:

  • 我有一个网页,人们需要登录
  • 我有一个Excel文档,带有网页链接
问题: 当用户登录并单击Excel文档中的链接时。网页告诉他们他们没有登录

我目前的发现:

  • 我在Mac上使用Office,我没有任何问题
  • 在Windows上使用Office的用户确实存在问题
  • 我认为问题是由于
    会话
    ,这可能是用户在应该登录时没有登录的原因
我做了一些测试

每个URL都经过index.php

index.php

<?php
session_start();
file_put_contents('log.txt', microtime().': SERVER '.print_r($_SERVER, true).PHP_EOL, FILE_APPEND);
exit;
您可以看到浏览器(Chrome)和cookie,其中包含用于登录的
rememberme
cookie

现在,当我在Windows上单击Excel中的链接执行相同操作时,我会在日志文件中打印三次
$\u SERVER
变量

第一:

[HTTP_USER_AGENT] => Microsoft Office Excel 2014
[HTTP_COOKIE] => PHPSESSID=0ivlfjf49j4b82858tstc2lmm3; PHPSESSID=tv6gs33j721d0tmm3rrjdoho45
请注意用户代理和无记忆cookie

第二:

[HTTP_USER_AGENT] => Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 10.0; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; ms-office)
[HTTP_COOKIE] => PHPSESSID=0ivlfjf49j4b82858tstc2lmm3
注意,仍然没有chrome浏览器和Memberme cookie

第三:

[HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36
[HTTP_COOKIE] => PHPSESSID=3s0hvtssghk7uomvkpb5k70tc2; rememberme=1%3Aa9bd74ad58a0d7075c27108be1adbd26ba6d18f6e8b39073152d6780131ffe70%3A643852f8636c76c0bfc4017ec7fe3eab98dd57f5bcfdf86f0e37b5ec28a0c0ef
最后,用户代理是Chrome,并设置了membermecookie


所以,说来话长。但是在Windows中点击Excel中的链接,它会做一些奇怪的事情。有人知道发生了什么吗?

好的,我发现了问题。下面是superuser.com的答案

您正在使用的URL需要从cookie到 显示搜索结果而不是搜索页面。粘贴URL 进入不同的浏览器(或删除cookie),您将获得 同样的结果

在Excel中单击URL似乎会在默认浏览器中打开它。但是 那不是真的。在浏览器中打开它之前,请先使用Excel 运行Microsoft Office协议发现。这使用Windows/Internet Explorer组件来确定URL是否有效。(事实并非如此 将自己标识为Internet Explorer,但标识为“用户代理:Microsoft” 办公室存在发现“),如果结果(不知何故)是好的 然后,它将在默认浏览器中打开该检查的结果

缺少饼干(更准确地说:缺少会话),GoDaddy给出 Internet Explorer组件可能会重定向。结果呢 在默认浏览器中打开。这就是您看到的URL

您的默认浏览器很可能不是Internet Explorer?然后 将URL直接粘贴到IE中并单击,以获取cookies, 这样也可以使链接在Excel中工作。(仅用于测试;它是 这不是一个永久的解决办法。)

你会有更多的运气使用一个网址,不依赖于一些隐藏的 来自cookie的信息,比如

资料来源:

所以要解决这个问题:
当Excel检查链接时,它被重定向到“/login”,因为它没有登录。最后,这个URL就是Excel在真实浏览器中打开的URL


因此,我更改了登录脚本,用户将不会被重定向到“/login”,而是保持在相同的URL上,如果未登录,它将显示登录表单。Excel现在打开原始URL,如果用户登录,它将看到该页面。如果未登录,将显示登录表单。

好的,我发现这个问题,似乎与我遇到的问题相同!
[HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36
[HTTP_COOKIE] => PHPSESSID=3s0hvtssghk7uomvkpb5k70tc2; rememberme=1%3Aa9bd74ad58a0d7075c27108be1adbd26ba6d18f6e8b39073152d6780131ffe70%3A643852f8636c76c0bfc4017ec7fe3eab98dd57f5bcfdf86f0e37b5ec28a0c0ef