irc
eByteNet » Forum » Programmieren » PHP & MySQL » Neuste Version auslesen/abrufen
Seiten: 1

28.08.2008 um 16:17:55
Asmodiel


Avatar von Asmodiel

Registriert: 26.06.2006
eBN-Alter: 2J 5M 12T

Beiträge: 656
Verwarnungen: 0

eBytes: 4342.4

Titel: Neuste Version auslesen/abrufen
Hiho!
Ich hab ein Problem.
Und zwar möchte ich in meinem Uploader ( AJAX bzw JS und PHP sind hier erlaubt;) ) anbieten, dass ein Benutzer dieses Scriptes (nachm download und der installation auf _seinem_ space) eine Möglichkeit hat, automatisch zu sehen, ob eine neue version verfügbar ist.

Wie lässt sich das ohne http_fopen erreichen?
_______________________________

gruß!
asmodiel
OFF Melden

28.08.2008 um 16:31:02
dominopage


Avatar von dominopage

Registriert: 20.05.2006
eBN-Alter: 2J 6M 19T

Beiträge: 1561
Verwarnungen: 0

eBytes: 19476.1

Titel: Re: Neuste Version auslesen/abrufen
mach auf deinem space eine datei in der mit echo die version ausgegeben wird, und dann rufst du die mittels ajax auf und liest die daten aus...
oder habe ich da jetzt ein denkfehler?

dominopage
_______________________________

Eine Signatur?
Brauche ich nicht,...
...meine Posts sind interessant genug!



Du hast sie ja doch gelesen!?

Schäme dich:roll:

Macht aber nix^^, dann kannst du auch gleich mal hier schauen
OFF Melden

28.08.2008 um 16:38:10
Asmodiel


Avatar von Asmodiel

Registriert: 26.06.2006
eBN-Alter: 2J 5M 12T

Beiträge: 656
Verwarnungen: 0

eBytes: 4342.4

Titel: Re: Neuste Version auslesen/abrufen
`nein hast du nicht.
die idee hatte ich auch, nur dass ajax keine http-dateien liest.
Code:
Sicherheitsfehler: Inhalt auf [url]http://localhost:65535/.../index.php[/url]  darf keine Daten von [url]http://[/url]  ... .php laden.

_______________________________

gruß!
asmodiel
OFF Melden

.::Werbung::.

28.08.2008 um 18:30:17
raintown


Avatar von raintown

Registriert: 07.07.2007
eBN-Alter: 1J 5M 1T

Beiträge: 242
Verwarnungen: 0

eBytes: 1995.01

Titel: Re: Neuste Version auslesen/abrufen
Vllt versteh ich dich ja richtig , möchtest du das ganze praktisch wie nen
RSS-Feed dingsbums machen ?

grüße
_______________________________

Ihr sollt den Tag nicht vor dem Abend loben
!! BO !! 1980-2005 !! BO !!
Helden leben lange , doch LEGENDEN STERBEN NIE

OFF Melden

28.08.2008 um 20:17:14
Asmodiel


Avatar von Asmodiel

Registriert: 26.06.2006
eBN-Alter: 2J 5M 12T

Beiträge: 656
Verwarnungen: 0

eBytes: 4342.4

Titel: Re: Neuste Version auslesen/abrufen
so in der art.
Also eigentlich sollte das einfach nur eine zahl abrufen, der rest ist einfach.
_______________________________

gruß!
asmodiel
OFF Melden

28.08.2008 um 20:46:45
QuasimodosKlon


Avatar von QuasimodosKlon

Registriert: 09.08.2008
eBN-Alter: 3M 27T

Beiträge: 273
Verwarnungen: 0

eBytes: 4545.04

Titel: Re: Re: Neuste Version auslesen/abrufen
Zitat von Asmodiel:

die idee hatte ich auch, nur dass ajax keine http-dateien liest.

Öhm ja... http ist eigentlich nur das Übertragungsprotokoll, und AJAX ist eigentlich genau dazu da, HTTP-Requests auszuführen. Standardmäßig wird XML als Minetype erwartet. Manche Browser müssen erst überredet werden, auch andere Mimetype zu akzeptieren.

Zitat von Asmodiel:

Code:
Sicherheitsfehler: Inhalt auf [url]http://localhost:65535/.../index.php[/url]  darf keine Daten von [url]http://[/url]  ... .php laden.


Wo steht die Meldung? Dein Browser versucht von http://localhost:65535/.../index.php aus auf http:// (wie weiter?) Port 80? zuzugreifen? Das Problem muß an anderer stelle liegen. Schreib mal genaueres zu den Umständen und vielleicht Code-Snippets.

Grundsätzlich würde ich ein PHP-Skript schreiben, welches das Dateidatum der Download-Version in einem generierten XML-Dokument zurückgibt.

LG Helge

EDIT:
Um was für Skripte handelt es sich beim Download? Sollen sie sich beim Ausführen nach Bestätigungsaufforderung automatisch aktualisieren?
Zuletzt bearbeitet von QuasimodosKlon am 28.08.2008 um 20:59:08 Uhr
_______________________________

Klarer Verfechter der alten Rechtschreibung!

Der Horizont vieler Menschen ist ein Kreis mit dem Radius Null. Und das nennen sie dann ihren Standpunkt.
Albert Einstein
OFF Melden

28.08.2008 um 21:20:44
Asmodiel


Avatar von Asmodiel

Registriert: 26.06.2006
eBN-Alter: 2J 5M 12T

Beiträge: 656
Verwarnungen: 0

eBytes: 4342.4

Titel: Re: Neuste Version auslesen/abrufen
Also
es handelt sich einfach nur um eine Meldung "Deine Version ist nicht mehr aktuell, klicke <a href="blaaaa">hier</a> um die neueste zu saugen."

mein browser versucht vom localhost aus auf http://asmodiel.as.funpic.de/u[...]v2_v_update.php zuzugreifen, sie zu lesen und dann den inhalt auswertbar innerhalb von php oder ajax darzustellen.

mein ajax:
Code:
var http = null; var elem = null;			// initialisieren
function ajax(site, obj) {					// AJAX - seite abrufen
	   document.getElementsByTagName ( 'body' )[0].style.cursor = 'wait';
	   elem = obj;
	   if (window.XMLHttpRequest) {
			http = new XMLHttpRequest();
	   } else if (window.ActiveXObject) {
			http = new ActiveXObject("Microsoft.XMLHTTP");
	   }
	   var integer = 0;;
	   if (http != null) {
			http.open("GET", site, true);
			http.onreadystatechange = ausgeben;
			http.send(null);
	   } 

}

function ausgeben() {						// Inhalt der Abfrage bzw der abgefragen Datei
   if (http.readyState == 4) {				// ausgeben
		document.getElementById( elem ).style.display = 'block';
		if ( http.responseText == 'done' ) { location.reload(); } 
		else { 
			if ( http.responseText == 'log_out' ) { reload('index.php'); }
			else if ( http.responseText == 'adm_log_out' ) { reload('../'); }
			else {
			document.getElementById( elem ).innerHTML = http.responseText; } 
		}
	    delete elem;
		delete http;
		document.getElementsByTagName ( 'body' )[0].style.cursor = 'default';
   }

}   

_______________________________

gruß!
asmodiel
OFF Melden

07.09.2008 um 14:11:33
QuasimodosKlon


Avatar von QuasimodosKlon

Registriert: 09.08.2008
eBN-Alter: 3M 27T

Beiträge: 273
Verwarnungen: 0

eBytes: 4545.04

Titel: Re: Neuste Version auslesen/abrufen
Hi Asmodiel,

sorry, war die Tage durch ne Menge Action etwas absent und dank der kompetenten Buchhaltung von Freenet zeitweise auch n bissl off. Hatte den Thread hier schon fast vergessen.

Zitat von Asmodiel:

mein browser versucht vom localhost aus auf http://asmodiel.as.funpic.de/u[...]v2_v_update.php zuzugreifen

Jo, genau daran liegt das Problem. XMLHttpRequest ist an die Domänenrestiktionen des Browser gebunden. Zum Testen kannst Du diese für das Lokale Netz u.U. in den Browsersicherheitseinstellungen aufweichen. Wenn Du das Script auf die selbe HP lädst, sollte es gemäß flüchtigem drüberschauen funktionieren.

Eine andere Variante, die Domänenübergreifend arbeitet wäre, ein JavaScript per Tag nachzuladen.

Hier noch mal ein Beispiel mit beiden Varianten, das Dir auch Statusinformationen/Fehlermeldungen beim XMLHttpRequest liefert.
Die Variante über das Scripttag lädt die Lytebox von Deiner Homepage auch wenn Du sie Lokal ausführst oder auf nem anderen Server hostest.

Code:
/*** js/ajax.js ***/

var http_request = false;

function xmlRequest(url, handler)
{ http_request = false;
  handler = handler;

  if (window.XMLHttpRequest)  // Non-IE
  { http_request = new XMLHttpRequest();
    if (http_request.overrideMimeType)
    { //http_request.overrideMimeType('text/xml');
      http_request.overrideMimeType('text/plain');
    }
  }
  else if (window.ActiveXObject) // IE
  { try
    { http_request = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e)
    { document.getElementById('debug').innerHTML += e + '<br />n';
      try
      { http_request = new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch (e) { document.getElementById('debug').innerHTML += e + '<br />n'; }
    }
  }

  if (!http_request)
  { document.getElementById('debug').innerHTML += 'Fehler beim Erzeugen einer XMLHTTP-Instanz<br />n';
    return;
  }

  try
  { http_request.onreadystatechange = handler;
    http_request.open('GET', url, true);
    http_request.send(null);
  }
  catch(e) { document.getElementById('debug').innerHTML += e + '<br />n'; }
}

function processRequestData()
{ var debug = document.getElementById('debug');
  debug.innerHTML +=
    [ 'nicht initialisiert', 'lade', 'geladen', 'interaktiv', 'fertig'][http_request.readyState] ;//+ '<br />n';
  debug.innerHTML += '(' + arguments.callee.caller.caller+ ')<br />n';
  if (http_request.readyState == 4)
  { if (http_request.status == 200)
      return http_request.responseText;

    debug.innerHTML += 'Fehler ' + http_request.status + ': ' + http_request.statusText;
  }
  return false; // noch keine Daten
}


Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <link rel="stylesheet" href="http://asmodiel.de/templates/round/css/lytebox.css" type="text/css" media="screen" />
  <script id="dynscript" type="text/javascript" language="javascript"
          onload="onLoadLytebox();"></script>
  <script language="JavaScript" src="js/ajax.js"></script>
  <script>
  // callback für XMLHttpRequest
    function Ausgabe(test)
    { if ((result = processRequestData()) !== false)
        document.getElementById('Ausgabe').innerHTML = result;
    }
  
  // Laden über das Script Tag
    function loadLytebox()
    { var js = document.getElementById('dynscript');
      js.onload = function ()
      { initLytebox();
        document.getElementById('lyteboxlink').innerHTML = 'Script testen';
        // initLytebox() überschreibt onclick des Links; für andere Scripte ist ggf. das onclick-Event zu löschen, da es return false zurückliefert.
      };

      js.src='http://asmodiel.de/js/lytebox.js';
    }
  </script>
</head>
<body>
  <noscript>Javascript erforderlich</noscript>
  <h1>AJAX</h1>
  Version: <span id="Ausgabe"></span><br />
  <button onclick="new xmlRequest('http://asmodiel.as.funpic.de/upv2_v_update.php', Ausgabe)">Version - XMLRequest</button><br />
  dom&auml;nen&uuml;bergreifend:<br />
  <a id="lyteboxlink" href="http://www.google.com" rel="lyteframe" title="Search Google"
     rev="width: 400px; height: 300px; scrolling: no;" onclick="loadLytebox();return false">Script laden</a>

  <div id="debug">DEBUG:<br /></div>
</body>
</html>


LG Helge

EDIT:
Ich konnte den Code jetzt nur auf Mozilla Engines testen. Ein Feedback über das Verhalten in IE, Opera und Safari wär mal interessant.

Da die Lösung des Problems doch eher in Richtung AJAX geht, mein Vorschlag:
Thread verschieben in den JavaScript-Bereich
Zuletzt bearbeitet von QuasimodosKlon am 07.09.2008 um 14:59:45 Uhr
_______________________________

Klarer Verfechter der alten Rechtschreibung!

Der Horizont vieler Menschen ist ein Kreis mit dem Radius Null. Und das nennen sie dann ihren Standpunkt.
Albert Einstein
OFF Melden

.::Werbung::.

07.09.2008 um 15:23:24
Asmodiel


Avatar von Asmodiel

Registriert: 26.06.2006
eBN-Alter: 2J 5M 12T

Beiträge: 656
Verwarnungen: 0

eBytes: 4342.4

Titel: Re: Neuste Version auslesen/abrufen
OK.
Also erstmal ein dickes Lob an Dich, so einen User wünscht sich glaube ich jedes Forum.
Kompetent, schreibt viel und vor allem schreibt zum Thema;)

Dann zu meinem Problem:
In einem anderen Forum wurde eine Lösung über ein iFrame vorgeschlagen, was eigentlich auch funktioniert, nur eben unschön ist.

Du hast mir jetzt ein Script geliefert, dass meine LyteBox aufruft. Erstmal Lob, dass du auf sowas gekommen bist, es mit meiner Domain zu testen, die Idee find ich genial.
Aber es ist nicht unbedingt das, was ich brauche.
Ich benötige einfach nur etwas, was mir eine Zahl ( Format: X.Y.Z ) von einem "zentralen" Server (funpic, damit ich den Traffic nicht zahlen muss) abruft und die intern mit der eigenen Variable vergleicht und in Abhängigkeit davon etwas ausgibt.
Und verstehe nicht wirklich, wie ich dein jetzt super laufendes Script damit in Verbindung bringen kann. Die Idee, eine *.js über einen <script> tag zu laden ist auch ganz cool, aber klappt das auch?
// bin gleich wieder da, bin noch testen

Offtopic:
Du weißt mir zu viel, Helge;) Wo hast Du die info über die URL herbekommen;)?

Zuletzt bearbeitet von Asmodiel am 07.09.2008 um 15:24:36 Uhr
_______________________________

gruß!
asmodiel
OFF Melden

07.09.2008 um 15:58:09
QuasimodosKlon


Avatar von QuasimodosKlon

Registriert: 09.08.2008
eBN-Alter: 3M 27T

Beiträge: 273
Verwarnungen: 0

eBytes: 4545.04

Titel: Re: Neuste Version auslesen/abrufen
Zum Offtopic: Ein Blick in den Quelltext genügt;)

Das Problem an der Geschichte ist ja die Browsersicherheit. Daher also das Scripttag. Du bräuchtest also nur ein Script zu hinterlegen, das irgend was beinhaltet wie:
var latestVersion="1.23.45";

Dann sollte ein Vergleich nicht allzu schwierig sein. Wenn nur eine Zahl auf dem Server liegen soll, ließe sich ja notfalls das winzige Javascript per PHP generieren.

LG Helge

EDIT:
Wie soll das eigentlich mit dem IFrame aussehen? Da können sich Skripte doch auch nicht über die Domänengrenze hinwegsetzen. Man könnte allenfalls einem PHP-Skript, das im IFrame angezeigt wird, GET-Parameter mitliefern, um die Version serverseitig abzugleichen.
Zuletzt bearbeitet von QuasimodosKlon am 07.09.2008 um 16:09:46 Uhr
_______________________________

Klarer Verfechter der alten Rechtschreibung!

Der Horizont vieler Menschen ist ein Kreis mit dem Radius Null. Und das nennen sie dann ihren Standpunkt.
Albert Einstein
OFF Melden

07.09.2008 um 20:50:09
Asmodiel


Avatar von Asmodiel

Registriert: 26.06.2006
eBN-Alter: 2J 5M 12T

Beiträge: 656
Verwarnungen: 0

eBytes: 4342.4

Titel: Re: Neuste Version auslesen/abrufen
Ja danke, ich hab das jetzt so gemacht:
auf dem server liegt eine Datei, die mir einfach nur var actual_version = '300'; ausgibt.
Dann wird userseitig ausgewertet, ob die version des scripts damit übereinstimmt und gibt je nach dem eine Meldung aus.
Nur ist die Frage jetzt... wie ich das auf Sprachpaketen basiert machen kann...

Ich mein - javascript und php ist was anderes, ich hab aber keine lust "functions.php" als eine js einzubinden.

Helge, kennst du ne andere möglichkeit, als die Javascriptdatei erst noch Serverseitig mit den Variablen zu versehen?
_______________________________

gruß!
asmodiel
OFF Melden

07.09.2008 um 23:57:03
QuasimodosKlon


Avatar von QuasimodosKlon

Registriert: 09.08.2008
eBN-Alter: 3M 27T

Beiträge: 273
Verwarnungen: 0

eBytes: 4545.04

Titel: Re: Neuste Version auslesen/abrufen
Jo, PHP ist insofern anders, als daß es serverseitig Inhalte generiert. Nur weil als Standard mime-type text/html im Header zurückgegeben wird, heißt es noch lange nicht, daß PHP gleich HTML-Ausgabe ist. Dafür lassen sich eigene Header setzen.

Es lassen sich aber auf dem Server auch mime types für beliebige Dateiendungen festlegen. Entweder in der httpd.conf oder über die .htaccess im jeweiligen Verzeichnis. .htaccess gilt für die gesamte darunterliegende Verzeichnisstruktur, bis eine andere .htaccess etwas anderes definiert. Wenn einige .js-Dateien also als PHP ausgeführt werden sollen, wär es sinnvoll, für solche "PHP-JS-Dateien" ein extra Verzeichnis anzulegen.

Folgende Dinge hab ich jetzt nicht getestet, aber müßte für mod-php in .htaccess so funktionieren:
AddType application/x-httpd-php .php .phtml .php3 .js

und bei PHP als CGI:
AddHandler php-script .js .php usw...

oder
<files version.js>
SetHandler php-script
</files>

bzw. <files *.js> geht auch.

Ob und wie genau mod-php innerhalb von <files></files> festzulegen ist, weiß ich nicht genau. Am besten googeln und ausprobieren.

In der Apache-Config des Providers könnten einige/alle Funktionen von .htaccess auch per AllowOverride deaktiviert sein.

http://de.selfhtml.org/serverc[...]rnative_inhalte

Dann gibt es noch die .htaccess Umleitungen:
http://de.selfhtml.org/serverc[...]ver/rewrite.htm

Auch hier kommt es auf die Konfiguration des Webservers an.

LG Helge
_______________________________

Klarer Verfechter der alten Rechtschreibung!

Der Horizont vieler Menschen ist ein Kreis mit dem Radius Null. Und das nennen sie dann ihren Standpunkt.
Albert Einstein
OFF Melden

08.09.2008 um 20:55:32
Asmodiel


Avatar von Asmodiel

Registriert: 26.06.2006
eBN-Alter: 2J 5M 12T

Beiträge: 656
Verwarnungen: 0

eBytes: 4342.4

Titel: Re: Neuste Version auslesen/abrufen
Boah danke ich kann dich echt nicht genug loben;)

Ich werd mir mal die PHP-JS Variante über htaccess anschauen, danke:D
_______________________________

gruß!
asmodiel
OFF Melden

.::Werbung::.


eByteNet » Forum » Programmieren » PHP & MySQL » Neuste Version auslesen/abrufen
Seiten: 1

Du hast in diesem Forum keine Schreibrechte!

Computer Notdienst in Leipzig | Software Installtionsservice | Computer