2016-07-20 7 views
0

Ich habe ein seltsames Problem, das ich schwer in einem Titel zusammenzufassen finden.PHP öffnenden Link von Excel läuft Seite dreimal

Erstens:

  • Ich habe eine Webseite, wo die Menschen angemeldet sein müssen
  • ich ein Excel-Dokument haben, mit Links auf der Webseite..

Das Problem: Wenn die Leute angemeldet sind, und sie klicken Sie auf den Link in der Excel-Dokument. Die Webseite sagt ihnen, dass sie nicht eingeloggt sind

Was ich bisher gefunden.

  • I Office auf Mac mit bin und ich nicht irgendwelche Probleme tun.
  • Benutzer mit Office unter Windows tun Probleme haben.
  • Ich denke, das Problem liegt an SESSIONS, das könnte der Grund sein, warum Benutzer nicht angemeldet sind, während sie sein sollten.

Ich habe einige Tests durchgeführt.

Jede URL geht durch index.php

index.php

<?php 
session_start(); 
file_put_contents('log.txt', microtime().': SERVER '.print_r($_SERVER, true).PHP_EOL, FILE_APPEND); 
exit; 

Nun, wenn ich den Link von Office auf Mac klicken (KEINE PROBLEME !!!), erhalte ich eine Dump die Variable $_SERVER. Zwei wichtige Variablen:

[HTTP_USER_AGENT] => Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36 
[HTTP_COOKIE] => PHPSESSID=77lpqmdmvskv33d2ddsdlfs5q7; rememberme=1%3Ae79e92271e7e05a5ee5679b659b3cb5cbb61e60d96c158f4648960136b175164%3Accdee80c3e42705fcd7e8c234525beda86d27394653dfdfb42bdd3ec98592ca1 

Sie den Browser sehen können (Chrom) und das Cookie, das eine rememberme Cookie für die Anmeldung enthält.

Jetzt, wenn ich das gleiche tun, indem Sie auf einen Link in Excel auf Windows klicken, bekomme ich die $_SERVER Variable dreimal in der Protokolldatei gedruckt!

Erstens:

[HTTP_USER_AGENT] => Microsoft Office Excel 2014 
[HTTP_COOKIE] => PHPSESSID=0ivlfjf49j4b82858tstc2lmm3; PHPSESSID=tv6gs33j721d0tmm3rrjdoho45 

Hinweis der User-Agent und kein rememberme Cookie.

Zweitens:

[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 

Hinweis, noch kein Chrome-Browser und rememberme Cookie.

Drittens:

[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 

Schließlich User-Agent ist Chrome und rememberme Cookie gesetzt wird.

Also, es wird eine lange Geschichte. Wenn man auf den Link in Excel von Windows klickt, macht es seltsame Dinge.Irgendjemand eine Idee was passiert?

+0

OK, ich fand dieses Problem, scheint das gleiche Problem zu sein, das ich habe! http://superuser.com/questions/444984/excel-hyperlink-not-redirecting-properly-bug – Timo002

Antwort

0

Ok, ich habe das Problem gefunden. Im Folgenden eine Antwort von superuser.com

Die URL, die Sie braucht mehr Informationen aus einem Cookie auf Anzeige der Suchergebnisse, anstatt die Suchseite verwenden. Fügen Sie die URL in einen anderen Browser (oder entfernen Sie Ihre Cookies) und Sie erhalten die gleiche Ergebnisse.

Das Klicken auf eine URL in Excel scheint es in Ihrem Standardbrowser zu öffnen. Aber das ist nicht wirklich wahr. Bevor Sie es in Ihrem Browser öffnen, führt Excel zuerst Microsoft Office Protocol Discovery aus. Dies verwendet eine Windows/Internet Explorer-Komponente, um festzustellen, ob die URL funktioniert. (Es ist nicht identifizieren sich als Internet Explorer, aber als "User Agent: Microsoft Office Existenz Discovery".) Und wenn die Ergebnisse (irgendwie) in Ordnung dann wird es das Ergebnis dieser Überprüfung in Ihrem Standard-Browser öffnen.

Fehlende Cookies (genauer: eine Sitzung fehlt), gibt GoDaddy die Internet Explorer-Komponente einige Umleitung. Und das Ergebnis davon ist in Ihrem Standardbrowser geöffnet. Das ist die URL, die du siehst.

Höchstwahrscheinlich ist Ihr Standardbrowser nicht Internet Explorer? Dann Einfügen der URL in IE direkt und klicken Sie darauf, um die Cookies zu bekommen, könnte dann auch die Verknüpfung von Excel arbeiten. (Nur für die Prüfung, es ist keine dauerhafte Lösung.)

Sie werden mehr Glück haben eine URL verwenden, die nicht von einem Cookie auf eine verborgenen Informationen angewiesen ist, wie http://www.godaddy.com/domains/search.aspx?domainToCheck=superuser.com

Quelle: https://superuser.com/a/445431

So, dieses Problem zu lösen:
Als Excel den Link überprüfte, wird er auf '/ login' umgeleitet, weil er nicht eingeloggt war. Und schließlich ist diese URL die URL, die Excel im echten Browser öffnet.

Also habe ich das Login-Skript geändert und ein Benutzer wird nicht zu '/ login' umgeleitet, sondern bleibt auf der gleichen URL und es wird das Anmeldeformular angezeigt, wenn nicht angemeldet. Excel öffnet nun die ursprüngliche URL und if der Benutzer ist angemeldet, er sieht die Seite. Wenn es nicht eingeloggt ist, wird das Anmeldeformular angezeigt.